Bigcommerce API跟踪号创建PHP

时间:2014-03-16 22:03:31

标签: api bigcommerce

我正在尝试使用API​​更新Bigcommerce中订单的跟踪编号。这是我正在使用的代码:

//update BC of order status
$filter = array('status_id' => 2);
$order_status_update = BigCommerce::updateResource('/orders/' . 105, $filter);

$order = Bigcommerce::getOrder(105);
foreach($order->products as $shipment) 
{
    $filter = array(
        'order_address_id' => $shipment->order_address_id,
        'items'=> array(
            'order_product_id' => $shipment->product_id,
            'quantity' => $shipment->quantity
            ),
        'tracking_number' => 'tracking number'
        );
    $add_tracking = BigCommerce::createResource('/orders/105/shipments', $filter);
    var_dump($add_tracking);
}

我已按照此处的说明操作: https://developer.bigcommerce.com/api/stores/v2/orders/shipments#list-shipments BigCommerce Uploading Tracking Numbers

但我似乎无法让它发挥作用。有人可以帮忙吗?

提前,谢谢你的帮助!

Akshay

1 个答案:

答案 0 :(得分:1)

由于items字段需要格式化为对象数组,并且使用product_id而不是订单中产品的ID,因此创建货件的有效负载无效。

提供的代码是尝试在订单中为每个产品创建一个货件,这是有意的吗?理想情况下,您将在一个货件中运送所有物品,这就是物品字段是一个产品对象数组的原因。

此外,通过为订单创建货件,订单状态将自动更改为"已发货",因此第一个PUT请求是不必要的。

如果您尝试为每个订单创建一个货件并且假设没有订单会有多个地址,那么此代码应该有效。

$order = Bigcommerce::getOrder(105);

$filter = array(
    'order_address_id' => $order->shipping_addresses[0]->id,
    'tracking_number' => '123456'
);

foreach($order->products as $product) {
    $items[] = array(
        'order_product_id' => $product->id,
        'quantity' => $product->quantity
    );
}

$filter['items'] => $items;

$add_tracking = BigCommerce::createResource('/orders/105/shipments', $filter);
var_dump($add_tracking);