更新订单 WooCommerce API PHP CURL

Posted

技术标签:

【中文标题】更新订单 WooCommerce API PHP CURL【英文标题】:Updating order WooCommerce API PHP CURL 【发布时间】:2015-03-12 00:21:18 【问题描述】:

我正在为我的同事开发一个 Web 应用程序,因此他们将拥有一台带有应用程序的 iPad,以打包我们的订单。

整个应用程序即将完成,最后的步骤之一是将订单状态从处理中更改为完成

我在做什么:

获取当前订单 ID,然后使用 curl 或 API 更改状态。发生的事情很奇怪,我得到了 JSON 数据,并且更新了 completed_at 时间,但状态仍在处理中。

下面你会看到我的代码:

$data = array("status" => "completed");                                                                    
$data_string = json_encode($data);                                                                                   

$username = 'XXX'; // Add your own Consumer Key here
$password = 'XXX'; // Add your own Consumer Secret here

$ch = curl_init('https://www.deallerleukste.nl/wc-api/v2/orders/5764?consumer_key='.$username.'&consumer_secret='.$password);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);                                  
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);                                                                     
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($data_string))                                                                       
);                                                                                                                   

$result = curl_exec($ch);

echo $result;

有人看到我做错了吗?请帮忙!

问候,

杰尔默

【问题讨论】:

【参考方案1】:

尝试使用此代码

$data='  "order":     "status": "completed"  ';

动态

$data=json_encode( array( 'order' => array( 'status' => $status)));

在 $status 中你可以传递你想要的状态。

【讨论】:

【参考方案2】:

我看到这是一个很老的帖子,但今天我遇到了同样的问题,所以也许它很有用。

你必须在这里使用 PUT 而不是 POST:

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");

并且数据应该是这种格式的有效 JSON:

$data='"status": "completed"';

【讨论】:

以上是关于更新订单 WooCommerce API PHP CURL的主要内容,如果未能解决你的问题,请参考以下文章

需要帮助和信息有关Woocommerce创建订单API的提示

Woocommerce Subscription 使用 API 从订单 id 获取 id

在 Woocommerce 中自动将订单状态从处理更改为完成

需要帮助和信息有关 Woocommerce 创建订单 API 的提示

WooCommerce REST API - 按修改日期过滤订单

如何获取 woocommerce 订单的订单 ID 以在 functions.php 中的函数中使用?