Mengirim Detail Pesanan Dari WooCommerce Ke Sistem Eksternal Melalui API

Saya mencoba mengirim pesanan woocommerce ke netsuite melalui api eksternal yang saya tulis. Saya baru mengenal woocommerce dan belum sepenuhnya memahami cara menambahkan fungsi ini.

Saya telah menambahkan kode berikut ke file function.php di 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
}
}

Saya telah menguji bagian terberat dari kode ini, hanya bagian yang tidak berhubungan dengan woocommerce di situs lain dan saya dapat melihat datanya muncul di NetSuite. Namun, ketika saya mengunjungi toko saya dan melakukan pemesanan, serta menerima pembayaran, saya tidak melihat data masuk ke NetSuite. Apakah saya memiliki kode ini di lokasi yang benar? Apakah ada sesuatu yang saya lewatkan?

Pembaruan Saya memasang plugin Cuplikan Kode dan menambahkan kode di sana. Setel ke Jalankan cuplikan di mana saja. Masih belum beruntung.


person Tom Hanson    schedule 22.03.2019    source sumber


Jawaban (1)


Sepertinya Anda memiliki kutipan ganda pada tautan pertama

mengubah

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

to

add_action( 'woocommerce_payment_complete', 'wdm_send_order_to_ext');

Daripada menggunakan curl - Anda selalu dapat menggunakan fungsi build di WordPress wp_remote_post()

Pastikan juga Anda telah WP_DEBUG disetel ke true di wp-config.php saat pengujian.

person Coder At Heart    schedule 25.02.2021