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

同一笔订单收到了三条 webhook

2 个回答 1,911 次浏览 Webhook 与事件 最后活跃 1 个月前
74

订单创建后,服务端连续收到三次相同的 orders/create,导致发了三封确认邮件。

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

2 个回答

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

先把判断放在前面:webhook 是「至少一次」投递,重试、网关重放、多副本处理都会产生重复,幂等必须自己做。

1处理顺序

  1. 用 X-Shopify-Event-Id 做唯一键,落库前去重。
  2. 订单类事件用 order.id + topic 组合做幂等键,更贴近业务。
  3. 发邮件、发短信这类副作用放到幂等成功之后。
  4. 用数据库唯一索引兜底,不要只靠应用层判断。
  5. 保留事件表,便于排查「到底收了几次」。
验收:同一事件重复投递五次,业务只执行一次,邮件只发一封。
风 风格技术团队 回答于 1 个月前
3

注意 X-Shopify-Event-Id 每次投递是不同的,重试时会变。真正稳定的幂等键是业务主键 + topic + 事件时间。

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

你的处理方式是什么?

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

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