woocommerce - 通过 API 从 WooCommerce 向外部系统发送订单详细信息
问题描述
我正在尝试通过我编写的外部 api 将 woocommerce 订单发送到 netsuite。我是 woocommerce 的新用户,并没有完全了解如何添加此功能。
我已将以下代码添加到public_html/wp-content/themes/reverie-master/中的 functions.php 文件中
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。我在正确的位置有此代码吗?有什么我想念的吗?
更新 我安装了插件代码片段并在那里添加了代码。将其设置为到处运行代码段。仍然没有运气。
解决方案
看起来您在第一个链接上有双引号
改变
add_action( 'woocommerce_payment_complete'', 'wdm_send_order_to_ext');
至
add_action( 'woocommerce_payment_complete', 'wdm_send_order_to_ext');
而不是使用 curl - 您始终可以使用内置 WordPresswp_remote_post()
功能
还要确保您在测试时已WP_DEBUG
设置为true
in wp-config.php
。
推荐阅读
- ms-word - 检查文本选择是否在页眉/页脚中
- javascript - JavaScript 中的符号?
- android - 无法访问 Xamarin Web 参考
- mysql - Laravel 雄辩:用关系保存数据
- perl - 在 perl 中,字符串在开头被替换而不是在末尾附加
- visual-studio - Visual Studio 2017 在安装 Nuget 包时冻结,现在我的 Xamarin 项目无法加载
- java - Kafka 2.1.0 Java 消费者与 Scala 消费者
- python - 在 Python 中按索引遍历列表
- bash - 高效加入 >100 个文件
- grails - 将 Grails 从 3.3.2 升级到 3.3.9 时出现问题:由于 H2 升级,启动时出现“无法创建池的初始连接”异常