履约 mutation 报 invalid id 怎么排查
现象#
调用 fulfillmentCreateV2 标记发货,userErrors 返回 invalid id;改成取订单里的第一条 fulfillment order 后,又报 has an unfulfillable status = closed。
原因#
- 传订单 GID 给
fulfillmentOrderId会直接报 invalid id - 订单取消过履约后会生成新的 fulfillment order,旧的那条已经变成 closed
- 履约单被分配给其他 fulfillment service,当前应用没有写入权限
- 行项目用了 OrderLineItem 的 GID,而不是 fulfillmentOrderLineItems 的 id
处理步骤#
- 查订单的
fulfillmentOrders(reverse: true),按创建时间倒序取最新的履约单 - 取最新一条 status 为 OPEN 的履约单,再查它的
supportedActions是否允许创建履约 - 用它的 id 作为 fulfillmentOrderId,行项目用
fulfillmentOrderLineItems[].id - 数量不超过该行的
remainingQuantity,部分发货只传本次要发的数量 - 成功后回查履约单状态,全发应为 CLOSED,部分发货仍为 OPEN
验收标准#
mutation 返回 fulfillment.id 且 userErrors 为空,订单时间线出现发货记录,履约单状态与发出数量一致。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。