Skip to content
业务稳定性与治理实践 · 第 1 篇 / 共 4 篇
领域项目实践
专题业务系统架构起步专题
当前序列业务稳定性与治理实践
阅读位置第 1 篇 / 共 4 篇当前专题第 2 个序列 / 共 5 个序列

支付回调幂等到底该怎么落地

先说结论

  • 支付回调的第一目标不是“接收到通知”,而是“多次通知也只把业务改对一次”
  • 幂等判断要落在本地数据库,不能只靠内存锁或单机标记
  • 回调链路里只做必要的验签、落库、状态推进和事件投递,其他动作尽量异步化

一、支付回调为什么一定要按“重复到来”设计

第三方支付平台的回调天然就可能重复:

  • 网络抖动后平台会重试
  • 你回包慢了平台会重试
  • 你处理成功了但响应没送达,平台也会重试

所以一条更接近真实生产的假设是:

  • 同一笔支付通知会来多次
  • 到达时间可能乱序
  • 应用重启或故障恢复后还会再次处理

二、一个更稳的回调处理顺序

更推荐按这个顺序处理:

  1. 验签,确认通知确实来自支付平台。
  2. 校验商户号、订单号、金额和支付状态。
  3. 本地事务里更新支付流水和订单状态。
  4. 记录幂等键或状态版本。
  5. 事务提交后再投递“支付成功”事件。

这一步里最重要的是第 3 和第 4 步:业务状态推进和幂等判断必须一起落在本地事务里。

三、幂等键怎么选

常见做法有两种:

1. 支付平台交易号

适合一个平台交易号只对应一笔订单的场景。

2. 订单号 + 支付状态版本

适合你需要更明确控制订单状态推进,比如只允许:

  • WAIT_PAY -> PAID
  • 不允许 PAID -> PAID 再重复发事件

不管选哪种,最终都应该让数据库帮你兜底,而不是靠代码里先查再改。

四、最容易踩的坑

1. 回调里做太多事

比如:

  • 发券
  • 加积分
  • 通知仓储
  • 刷新营销权益
  • 调多个下游服务

这样一旦某个下游慢了,整个回调链路会越来越脆弱。更推荐把这些动作都改成异步事件消费。

2. 只做“先查有没有处理过”

并发下两个回调几乎同时到来时,单纯先查再改很容易穿透。要用唯一键、条件更新或状态机来兜底。

3. 只校验订单号,不校验金额和商户信息

这会留下明显的安全和数据一致性风险。

4. 已经更新订单了,却没可靠投递后续事件

这样会出现订单是已支付,但库存、发货、积分链路完全没收到通知的情况。

五、回调成功后最好还能补什么

  • 支付回调成功率
  • 重复回调次数
  • 幂等命中次数
  • 状态推进失败次数
  • 事件投递失败次数

这些指标比“接口有没有 200”更能反映支付链路是不是真的稳。

总结

支付回调幂等的关键,不是挡住“第二次请求”,而是保证“无论来几次,都只把业务推进到正确状态一次”。把验签、状态推进、幂等落库和事件投递边界拆清后,支付链路会稳定很多。

延伸阅读相关文章优先当前专题,再补跨专题关联。
同一序列 · 顺着当前主线继续读秒杀系统流量治理怎么做更稳适合把支付回调、秒杀、流控和链路追踪放在一起看。业务系统架构起步专题 · 商城高并发与治理实践同一序列 · 顺着当前主线继续读Sentinel 熔断降级和限流怎么接进业务适合把支付回调、秒杀、流控和链路追踪放在一起看。业务系统架构起步专题 · 商城高并发与治理实践同专题其他序列 · 共享标签:项目实战订单服务的事务边界应该怎么划分适合把认证、检索、购物车和订单边界放到一条业务链路里看。业务系统架构起步专题 · 商城业务链路设计实践同专题其他序列 · 共享标签:项目实战防腐层为什么在旧系统改造里很关键适合把 DDD、领域事件、BFF、防腐层和基础组件边界放在同一条项目起步主线上思考。业务系统架构起步专题 · 业务架构设计与项目起步判断跨专题关联 · 同场景:项目实战腾讯云部署 VitePress 技术站:Node、Docker Nginx 与发布全流程适合把站点初始化、HTTPS 域名接入和自动发布这条完整上线链路收拢到同一个专题里持续维护。个人技术站搭建专题 · 个人技术站搭建与上线跨专题关联 · 同类型:实践复盘标签基数为什么会拖垮 Prometheus适合把 Prometheus、Grafana、标签治理和告警分级放在一起看。可观测性专题 · 指标与告警体系设计
继续阅读业务稳定性与治理实践当前序列第 1 篇 / 共 4 篇当前专题第 2 个序列 / 共 5 个序列
往前看
上一序列业务骨架与核心链路从第 1 篇开始:商城微服务项目怎么起步:模块拆分、Nacos、OpenFeign、Gateway 的最小实践路径
往后看
下一篇秒杀系统流量治理怎么做更稳继续当前序列下一章下一序列商城业务链路设计实践从第 1 篇开始:商城认证服务怎么拆分更稳

把零散经验整理成可查、可复用、可持续更新的企业级知识门户