Отправка сведений о заказе из WooCommerce во внешнюю систему через API

Я пытаюсь отправить заказ woocommerce в netsuite через внешний API, который я написал. Я новичок в woocommerce и не совсем понимаю, как добавить эту функциональность.

Я добавил следующий код в файл functions.php в public_html/wp-content/themes/reverie-master/

add_action( 'woocommerce_payment_complete'', 'wdm_send_order_to_ext'); 
function wdm_send_order_to_ext( $order_id ){
// get order object and order details
$order = new WC_Order( $order_id ); 
$email = $order->billing_email;
$phone = $order->billing_phone;

//Create the data object
$orderData = array(
    'customer_email' => $email,
    'customer_phone' => $phone
);

$apiData = array(
    'caller' => 'woocommerce',
    'json' => $orderData,
    'key' => 'MY_SECRET_KEY'
);

$jsonData =json_encode($orderData);

$url = "";
$api_mode = 'sandbox';
if($api_mode == 'sandbox'){
    // sandbox URL example
    $url = "https://forms.netsuite.com/app/site/hosting/scriptlet.nl?script=XXX&deploy=X&compid=XXXXXXX_SB1&h=XXXXXXXXXXXXXXXX"; 
}
else{
    // production URL example
    $url = ""; 
}

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($jsonData));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec ($ch);

curl_close ($ch);

// the handle response    
if (strpos($response,'ERROR') !== false) {
        print_r($response);
} else {
        // success
}
}

Я протестировал основную часть этого кода, только те части, которые не касаются woocommerce, на другом сайте, и я вижу данные, отображаемые в NetSuite. Однако, когда я захожу в свой магазин, размещаю заказ и получаю оплату, я не вижу, чтобы данные поступали в NetSuite. У меня есть этот код в правильном месте? Есть ли что-то, что мне не хватает?

Обновление Я установил плагин Code Snippets и добавил туда код. Установите его для запуска фрагмента везде. Все равно не повезло.


person Tom Hanson    schedule 22.03.2019    source источник


Ответы (1)


Похоже, у вас есть двойные кавычки в первой ссылке

сдача

add_action( 'woocommerce_payment_complete'', 'wdm_send_order_to_ext');

to

add_action( 'woocommerce_payment_complete', 'wdm_send_order_to_ext');

Вместо использования curl — вы всегда можете использовать встроенную в WordPress функцию wp_remote_post().

Также убедитесь, что WP_DEBUG установлено на true в wp-config.php во время тестирования.

person Coder At Heart    schedule 25.02.2021