每日整理真实提问 356 个问题 · 726 个回答 需要系统性的技术文档?看 Shopify 技术百科 1000 篇 → 400-873-8117
已解决 提问于 2 个月前

orders/paid 比 orders/create 先到,正常吗

2 个回答 5,319 次浏览 Webhook 与事件 最后活跃 2 个月前
77

日志里 orders/paid 的时间戳早于 orders/create,导致订单状态机判断出错。

泽
阿泽提问者
前端工程师 · Hydrogen / Storefront API
2 个月前提问 · 已收到 2 个回答

2 个回答

已采纳 · 提问者确认解决
37

先把判断放在前面:webhook 不保证顺序,多个 topic 走不同队列,并发投递是常态。

1处理顺序

  1. 不要用到达顺序推断业务顺序,用事件里的 created_at 或订单状态字段判断。
  2. 状态机设计成「可幂等推进」,收到 paid 时若订单不存在就先缓存或补拉。
  3. 统一入口按 order.id 加分布式锁,避免并发写同一条记录。
  4. 关键状态以 API 回查为准,webhook 只做触发。
  5. 记录事件的 occurred_at,出问题时按它排序还原。
验收:乱序投递 10 次,最终订单状态与后台一致。
风 风格技术团队 回答于 2 个月前
5

如果收到 orders/paid 但本地没有订单,别急着丢弃,回查一次 API 通常能拿到完整订单,这比等 orders/create 更可靠。

陈 陈工 · Shopify 认证开发者 · 2 个月前

你的处理方式是什么?

写下你实际验证过的步骤,比「我也有这个问题」有用得多。当前版本为静态展示,提交后会由团队整理并回复。

描述你遇到的现象、店铺环境(主题 / 套餐 / 应用)、已经试过哪些操作……
我要单独提问 工作日 10 分钟内回复,可直接加微信 fenggejishu