PHP 放置请求(通过跟踪更新 ECWID 电子商务订单)


PHP Put request (update ECWID e-commerce order with tracking)

我正在使用 Ecwid API,现在正在从我们的履行网站更新我的订单,其中包含跟踪信息和运输状态。

履行操作将导出订单更新的 xml 文件。

我首先创建了基本脚本来更新产品,这工作正常。

    // Post Tracking number and change Status to shipped
    // trackingNumber : ""
    // fulfillmentStatus : "SHIPPED"
$storeID = "";
$myToken = "";
$data = array("trackingNumber" => "9405503699300250719362", "fulfillmentStatus" => "SHIPPED", "orderNumber" => "7074");
$data_string = json_encode($data);

$url = "https://app.ecwid.com/api/v3/".urlencode($storeID)."/orders/".$data['orderNumber']."?token=".$myToken;

$ch = curl_init($url);                                                                    
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");                                                                     
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($data_string)));
$response  = curl_exec($ch);
curl_close($ch);

我还创建了脚本来拉入 xml 文件并转换为 json 以将数据"放置"到购物车中。

<?php
// The file data.xml contains an XML document with a root element
// and at least an element /[root]/title.
if (file_exists('data.xml')) {
    $xml = simplexml_load_file('data.xml');
    print_r($xml);
} else {
    exit('Failed to open data.xml.');
}
$data_string = json_encode($xml);
echo '<br> br>';
echo "<pre>";
print_r($data_string);
?>

现在,这就是我将两个部分放在一起的地方,以便它将循环访问具有多个"orderNumber(s("的xml文件(json内容(并更新每个订单的跟踪编号和履行状态。

来自

Ecwid团队的Vitaly在这里。

我看到您想通过 API 从 XML 文件更新 Ecwid 商店中的订单。

所以整个过程是:

  • 获取 XML 文件的详细信息
  • 解析其中的数据,找出那里的订单总数
  • 为文件中的每个订单形成循环
  • 向 Ecwid API 发出请求以更新每个循环中的顺序

在您的第二个代码片段中,我看到print_r($data_string); - 它打印到屏幕上的是什么?

我想接下来的步骤将是:

  1. 管理以在XML文件中正确查找订单详细信息(订单数字,跟踪号(,在循环中
  2. 使每个循环更新商店中的特定订单

对于第 1 步,我建议将数据从 XML 文件保存为方便的 PHP 格式,例如对象或数组。

例如,如果它是一个数组,它将是这样的:

Array = [recordArray 1, recordArray 2, recordArray 3]
recordArray = [ orderNumber, trackingNumber ]

对于步骤 2:因此,每个循环都将通过数组中的 recordArray,然后获取请求所需的 orderNumber 和 trackingNumber。

然后,请求将使用这些数据来更新您的订单 Ecwid 商店,就像您在上面的代码片段中所示一样。但是,每个循环的值:94055036993002507193627074将是动态的且不同。

如果您有任何疑问,请随时与我联系:http://developers.ecwid.com/contact

谢谢。