我发现当我使用 BigCommerce API 更新订单时,订单的产品系列项目会重复。看起来,即使我在订单更新 JSON 对象中传递了一个行项目,我也会得到两行(订单产品)。
我将按照此处记录的方式进行更新调用:https://developer.bigcommerce.com/api/stores/v2/orders#update-an-order
更新成功但是我原来的产品现在是两条产品线了。 BC 似乎将我发送的内容解释为新产品线,而不是替换/更新现有产品线。
我正在传递订单产品的“id”。
我需要传递一些信息来指示行项目将被更新而不是创建新的吗?
enter code here
这是我发送的 JSON:
{
"customer_id": 1,
"date_created": "Mon, 14 Sep 2015 19:28:01 +0000",
"status_id": 11,
"base_shipping_cost": "0.0000",
"shipping_cost_ex_tax": "0.0000",
"shipping_cost_inc_tax": "0.0000",
"base_handling_cost": "0.0000",
"handling_cost_ex_tax": "0.0000",
"handling_cost_inc_tax": "0.0000",
"base_wrapping_cost": "0.0000",
"wrapping_cost_ex_tax": "0.0000",
"wrapping_cost_inc_tax": "0.0000",
"total_ex_tax": "34.0000",
"total_inc_tax": "34.0000",
"items_total": 16,
"items_shipped": 0,
"payment_method": "Manual",
"refunded_amount": "0.0000",
"order_is_digital": "false",
"ip_address": "64.231.103.57",
"geoip_country": "Canada",
"geoip_country_iso2": "CA",
"discount_amount": "0.0000",
"ebay_order_id": 0,
"billing_address": {
"first_name": "Charles",
"last_name": "Delfs",
"company": "Delfs Eng",
"street_1": "50 Moore St.",
"street_2": "Box 1428",
"city": "Bradford",
"state": "Ontario",
"zip": "L3Z 2B7",
"country": "Canada",
"country_iso2": "CA",
"phone": "",
"email": "[email protected]"
},
"products": [{
"id": 253,
"product_id": 113,
"name": "Hammer and Anvils 6",
"sku": "",
"price_ex_tax": "24.0000",
"price_inc_tax": "24.0000",
"quantity": 1,
"ebay_item_id": "",
"product_options": []
}, {
"id": 254,
"product_id": 113,
"name": "Hammer and Anvils 6",
"sku": "",
"price_ex_tax": "24.0000",
"price_inc_tax": "24.0000",
"quantity": 1,
"ebay_item_id": "",
"product_options": []
}],
"shipping_addresses": []
}
BC 支持部门的回应...
“感谢您联系 Bigcommerce!
“我不想说更新订单行项目的详细信息很少,因为此时尚未完全构建。有多种方法可以更新现有行项目 - 与您尝试过的类似,但您需要包含一个”如果您想覆盖现有的订单项,请使用订单中现有产品的“id”参数。但问题是,在更新现有产品等内容时,总计计算结果似乎不正确。我见过类似的奇怪情况进行更改现在,您能够另外更新“total_inc_tax”和“total_ex_tax”以使其准确,但“total_tax”行项目在某些情况下似乎仍然不正确。
这确实是 v2 API 没有正确解决的问题,需要在即将发布的下一个版本中进行改进。与此同时,我的建议是不要以这种方式更新现有订单,而是创建一个新订单,并在需要更新产品或送货地址时丢弃原始订单。更新订单的其他详细信息似乎不会产生同样的负面后果。
我很抱歉,因为我确信这不是您想听到的。如果您对上述内容有任何疑问,请告诉我,我会尽力提供帮助。”
解决方案:我的代码未将返回的 BC 线路信息映射到正确的记录并随后创建重复项。
一个根本问题仍然存在: API 允许编辑订单项,但不允许删除订单项。他们建议删除并重新创建订单将破坏通过订单 ID 连接的所有 3rd 方应用程序!