Shopify 订单 webhook 到达顺序乱了怎么办
现象#
先收到 orders/paid 再收到 orders/create,或 fulfillments/update 早于订单创建,业务状态错乱。
原因#
- Shopify 不保证 webhook 顺序,网络与重试都会打乱
- 不同 topic 由不同队列投递
- 重试的旧事件晚于新事件到达
处理步骤#
- 不要依赖到达顺序,用
updated_at或事件时间戳做版本比较 - 按订单 ID 串行处理,用数据库行锁或队列分区
- 状态机设计:只允许从低阶状态向高阶迁移,旧事件直接丢弃
- 关键流程用 Admin API 回读当前真实状态,而不是信任 payload
验收标准#
乱序投递下订单最终状态正确,无重复发货或状态回退,日志可追溯事件时间。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。