随着支持为每个履约订单放置多个暂停(hold)功能的引入,您可以在每次出现问题时快速轻松地添加另一个暂停。由于所有原因都分别记录,您可以放心地解除单个暂停,因为其他原因已各自记录在各自的暂停中。
迁移到2025-01 GraphQL API 版本
获取履约订单的所有暂停
自2025-01 API 版本起,fulfillmentOrder.fulfillmentHolds 字段现在返回应用于履行订单的所有活跃保留。
为每个履约订单放置多个暂停
自2025-01 API 版本起,fulfillmentOrderHold 变更操作现在可以成功执行于已经处于保留状态的履行订单上。
要在一个履行订单上设置多个保留,应用需要提供新的handle 字段。该字段是应用所设置的保留的唯一标识符,可防止应用无意中创建重复的保留。handle 必须在应用对单个履行订单设置的所有保留中保持唯一。如果应用尝试使用相同的 handle 设置两个保留,第二个保留将被拒绝并返回重复保留的用户错误。为了向后兼容,handle 字段是可选的,默认值为空字符串。然而,如果不为每个保留提供唯一的 handle,单个应用将无法在一个履行订单上设置多个保留,因为默认情况下每个保留都会获得相同的默认 handle。
每个应用在每个履行订单上最多可设置 10 个活跃保留。超过此限制后,变更操作将返回指示已达到限制的用户错误。应用需要先释放其中一个现有保留,才能应用新的保留。
在已经处于保留状态的履行订单上设置保留时,不应提供fulfillmentHold.fulfillmentOrderLineItems 输入字段。如果提供了此字段,将返回用户错误,指示无法拆分履行订单。
fulfillmentOrder.supportedActions 字段在履行订单处于保留状态且可以添加额外保留时,现在将返回 HOLD 操作。
在解除暂停时提供暂停 ID(强烈推荐) (highly recommended)
强烈建议所有释放保留的应用在释放时指定保留 ID。通过 ID 释放保留的支持是在 2024-10 API 版本中引入的。在不提供保留 ID 的情况下释放履行订单上的所有保留,会导致履行订单过早释放,从而导致商品被错误地履行。
监听单个暂停的放置和释放 Webhook
自2025-01 API 版本起,针对保留资源有两个新的 Webhook 主题可用:fulfillment_holds/added 和 fulfillment_holds/released。
每次放置或释放暂停时,都会发出新的 Webhook。
继续使用现有的 Webhook 监听履约订单的暂停和释放状态
fulfillment_orders/placed_on_hold 和 fulfillment_orders/hold_released 主题将继续以与之前相同的方式发出。
- 当履行订单转换为 ON_HOLD 状态时,会发出 fulfillment_orders/placed_on_hold Webhook。
- 当履行订单从所有保留中释放且不再处于保留状态时,会发出 fulfillment_orders/hold_released Webhook。
自2025-01 API 版本起,既然一个履行订单可以有多个保留,fulfillment_orders/placed_on_hold Webhook 负载中的 fulfillment_order.fulfillment_holds 字段现在可以返回多个保留。
使用早于 2025-01 版本的 GraphQL API
继续获取履约订单上放置的第一个暂停
履约订单上的待处理字段将继续返回包含单个待处理的数组;如果履约订单上存在多个待处理项,则将返回最旧的活跃待处理项;一旦该待处理项被释放,将返回下一个最早的待处理项,直到没有剩余待处理项为止。
继续为每个履约订单放置单个暂停
fulfillmentOrderHold 突变将继续仅支持为每个履约订单放置一个待处理项。
如果应用尝试对已处于待处理状态的履约订单放置待处理项,将返回与之前相同的错误,这是一个用户错误,消息内容为“Cannot apply a fulfillment hold on a fulfillment order in an uninterruptible state.”。
继续解除履约订单上的所有暂停(不推荐) (discouraged)
fulfillmentOrderReleaseHold 突变将继续通过一次性释放所有待处理项来解除履约订单的待处理状态(如果未提供待处理项 ID)。
强烈建议所有释放待处理项的应用迁移至使用 2024-10 API 版本或更高版本,以便通过指定 holdIds 突变参数按 ID 选择性释放待处理项;如果不提供待处理项 ID 而释放履约订单上的所有待处理项,将导致履约订单过早释放并造成商品错误履行。
继续使用现有的 Webhook 监听履约订单的暂停和释放状态
fulfillment_orders/placed_on_hold 和 fulfillment_orders/hold_released 主题将继续以与之前相同的方式发出。
- 当履约订单转换为 ON_HOLD 状态时,会发出 fulfillment_orders/placed_on_hold Webhook。
- 当履约订单从所有待处理项中释放且不再处于待处理状态时,会发出 fulfillment_orders/hold_released Webhook。
Webhook 负载中的 fulfillment_order["fulfillment_holds"] 字段将继续返回包含单个待处理项的数组;如果履约订单上存在多个待处理项,则将返回最旧的活跃待处理项。
使用 REST API 与暂停进行交互(不推荐) (discouraged)
REST API 不支持每个履约订单多个待处理项;如果希望使用此功能,应用应迁移至使用 GraphQL API。
继续获取履约订单上放置的第一个暂停
履约订单资源上的待处理属性在存在多个待处理项的情况下将继续仅显示最旧的一个活跃待处理项;一旦该待处理项被释放,将返回下一个最早的待处理项,直到没有剩余待处理项为止。
继续为每个履约订单放置单个暂停
待处理端点将继续仅支持为每个履约订单放置一个待处理项。
如果应用尝试对已经处于暂停状态的履约订单放置暂停,将返回与之前相同的错误。
继续从履行订单中释放所有挂起状态 (discouraged)
释放待处理端点将继续通过一次性释放所有待处理项来解除履约订单的待处理状态。
强烈建议所有释放待处理项的应用迁移至使用 fulfillmentOrderReleaseHold 突变,以便按 ID 选择性释放待处理项;如果不提供待处理项 ID 而释放履约订单上的所有待处理项,将导致履约订单过早释放并造成商品错误履行。
继续使用现有 Webhook 监听被挂起和已释放的履行订单
fulfillment_orders/placed_on_hold 和 fulfillment_orders/hold_released 主题将继续以与之前相同的方式发出。
- 当履约订单转换为fulfillment_orders/placed_on_hold状态时,将触发该webhook。ON_HOLD
- 当履约订单从所有暂停中释放且不再处于暂停状态时,将触发fulfillment_orders/hold_released webhook。
webhook负载中的fulfillment_order["fulfillment_holds"]字段将继续返回包含单个暂停的数组。如果履约订单存在多个暂停,则返回最旧的活跃暂停。
了解更多
了解更多关于将订单的履约暂停的信息。

