Shopify API创建发货单问题:单地址正常,多地址报错
Shopify多地点分拆发货API报错「None of the items are stocked at the new location」问题分析与解决
问题场景
- 单地点创建发货单时,调用Shopify 2022-04版本API可正常执行
- 同一订单需从两个不同地点创建第二份发货单时,触发错误:
None of the items are stocked at the new location - 已确认前提条件:
- 指定的
location_id对应地点库存充足 fulfillment_order_id与目标履行订单匹配- 单地点场景下使用相同的
line_items参数可正常完成发货
- 指定的
API请求信息:
请求URL:
https://<shop-name>.myshopify.com/admin/api/2022-04/orders/<order_id>/fulfillments.json
请求体:
{"fulfillment":{"location_id":99999999041,"tracking_number":"https://tracking.com/5678","tracking_urls":["https://tracking.com/5678"],"notify_customer":true, "line_items_by_fulfillment_order":[{ "fulfillment_order_id":9999999999053,"fulfillment_order_line_items": [{"id":99999999990725,"quantity":1},{"id":99999999993493,"quantity":1},{"id":9999999997957,"quantity":1}] }] }}
报错原因
Shopify默认会为订单生成对应初始发货地点的履行订单(Fulfillment Order),所有商品的库存分配默认绑定在该初始地点的履行订单下。当直接用API尝试为第二个地点创建发货单时,系统仍会校验原履行订单绑定的库存地点,导致误判新地点无对应库存。
而在后台手动创建另一个地点的发货单后,Shopify会自动拆分履行订单,生成对应新地点的独立履行订单,并将指定商品的库存分配关联到该新地点,此时API调用就能正确匹配到新地点的库存。
解决方案
方案1(已验证有效)
先在Shopify后台为目标订单创建一份对应第二个地点的手动发货单(无需完成发货,创建即可),之后再用原API请求创建第二份发货单即可正常执行。
方案2(纯API自动化方案)
通过Shopify API先拆分履行订单,生成对应新地点的独立fulfillment_order_id,再用新ID调用发货接口:
- 调用拆分履行订单接口:
请求体示例(指定目标地点和要拆分的商品):POST /admin/api/2022-04/fulfillment_orders/{原fulfillment_order_id}/split.json{ "split": { "location_id": 99999999041, "line_items": [ {"id": 99999999990725, "quantity": 1}, {"id": 99999999993493, "quantity": 1}, {"id": 9999999997957, "quantity": 1} ] } } - 从接口返回结果中获取新生成的
fulfillment_order_id - 将原发货请求中的
fulfillment_order_id替换为新ID,重新调用发货接口即可
内容的提问来源于stack exchange,提问作者Kawa222-UK
相关产品推荐
相关产品推荐

