URL триггера WooCommerce после завершения заказа - PullRequest
0 голосов
/ 09 января 2020

Можно ли вызвать URL после завершения заказа. Это не URL-адрес, на который должен быть отправлен клиент, но в конце этого URL-адреса следует посетить, чтобы вызвать API. Я немного новичок в этом, поэтому не знаю, если это правильный путь. Если бы кто-то мог указать мне правильное направление, это было бы здорово.

Я получил этот URL, который должен запускаться, заполненный переменными, которые я должен получить после выполнения заказа:

https: /// v1 / пригласить / externalhash = XXX & location_id = XXX & tenantId = XX & Invite_email = XXX & delay = X & first_name = XXX & last_name = XXX & language = XX & ref_code = XXXX

  • пригласить_email -> Это должен быть адрес электронной почты, на который размещен заказ
  • last_name -> Это должно быть Фамилия, с которым размещен заказ
  • language -> Это должен быть язык код (в нижнем регистре) страны доставки, куда заказ доставляется

Я знаю, что это много, но как мне это сделать?

РЕДАКТИРОВАТЬ Хорошо, я нашел способ сделать это с CURL, но как я могу извинить приведенный ниже код, не открывая URL в браузере?

// create a new cURL resource
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);

// grab URL and pass it to the browser
curl_exec($ch);

// close cURL resource, and free up system resources
curl_close($ch);

Я просто хочу извинить URL, но не хочу открывать его в своем браузере. Просто быстрый звонок и все.

Возможно ли это с CURL?

Редактировать 2.0.1

Я изменяю свою функцию с завершенным статусом заказа , Я почти все заработал, но по какой-то причине при использовании URL-адреса «dynamici c» URL-адрес не срабатывает.

Я также добавил эхо-предупреждение в javascript, и это оповещение передает точную хорошую динамику. c URL, чтобы он работал так, как он звучит. Ниже функции с предупреждением:

add_action('woocommerce_order_status_completed', 'custom_process_order');
function custom_process_order($order_id) {
    // Get the order info
    $order = wc_get_order( $order_id );

    if($order->get_billing_country() == "NL"){
    // create a new cURL resourc
        $ch = curl_init();
        $voornaam = $order->get_billing_first_name();
        $achternaam = $order->get_billing_last_name();
        $email = $order->get_billing_email();

        echo '<script type="text/javascript">alert("https://klantenvertellen.nl/v1/invite/external?hash=0926-4adb-a39e-d04110d1e445&location_id=104679&tenantId=99&invite_email='.$email.'&delay=1&first_name='.$voornaam.'&last_name='.$achternaam.'&language=nl");</script>';
        // set URL and other appropriate options
        curl_setopt($ch, CURLOPT_URL, 'https://klantenvertellen.nl/v1/invite/external?hash=0926-4adb-a39e-d04110d1e445&location_id=10479&tenantId=99&invite_email='.$email.'&delay=1&first_name='.$voornaam.'&last_name='.$achternaam.'&language=nl');
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        // grab URL and pass it to the browser
        curl_exec($ch);
        // close cURL resource, and free up system resources
        curl_close($ch);
    }
}

Когда я использую это, URL не срабатывает. Но URL-адрес оповещения выглядит следующим образом: https://klantenvertellen.nl/v1/invite/external?hash=0926-4adb-a39e-d04110d1e445&location_id=104679&tenantId=99&invite_email=test@email.com&delay=1&first_name=my имя и фамилия = моя фамилия и язык = nl

Точно так же, как это должно быть, но по какой-то причине функция CURL не сработала. Когда я добавляю URL-адрес, как это в функции:

curl_setopt($ch, CURLOPT_URL, 'https://klantenvertellen.nl/v1/invite/external?hash=0926-4adb-a39e-d04110d1e445&location_id=104679&tenantId=99&invite_email=test@email.com&delay=1&first_name=my first name&last_name=my lastname&language=nl');

URL-адрес срабатывает. Так что же я делаю неправильно, что при добавлении URL-адреса вручную он работает, а при работе с переменными он не работает?

Ответы [ 2 ]

2 голосов
/ 09 января 2020

Вы можете использовать действие woocommerce_payment_complete примерно так:

add_action('woocommerce_payment_complete', 'custom_process_order', 10, 1);
function custom_process_order($order_id) {
    // Get the order info
    $order = new WC_Order( $order_id );

    // Your custom logic here, for instance calling the url with curl
    $ch = curl_init();
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    // ...
}
0 голосов
/ 15 января 2020

Я наконец-то заставил ее работать с этой функцией внутри моих функций. php когда заказ завершен.

add_action('woocommerce_order_status_completed', 'custom_process_order');
function custom_process_order($order_id) {
    // Get the order info
    $order = wc_get_order( $order_id );

    if($order->get_billing_country() == "NL"){
    // create a new cURL resourc
        $ch = curl_init();
        $voornaam = $order->get_billing_first_name();
            $voornaam_new = str_replace(' ', '%20', $voornaam);
        $achternaam = $order->get_billing_last_name();
            $achternaam_new = str_replace(' ', '%20', $achternaam);
        $email = $order->get_billing_email();

        // set URL and other appropriate options
        curl_setopt($ch, CURLOPT_URL, 'https://klantenvertellen.nl/v1/invite/external?hash=0926-4adb-a39e-d04110d1e445&location_id=104679&tenantId=99&invite_email='.$email.'&delay=1&first_name='.$voornaam_new.'&last_name='.$achternaam_new.'&language=nl');
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        // grab URL and pass it to the browser
        curl_exec($ch);
        // close cURL resource, and free up system resources
        curl_close($ch);
    }
}

Я также добавил оператор if, потому что хочу запускать его только тогда, когда клиент заказал из Нидерландов. Проблема была с пробелами в имени или фамилии, поэтому я заменил их на% 20 на str_replace.

Надеюсь, это поможет другим, которые хотят это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...