CS-Notes 学习笔记
Java 后端 · 系统设计

订单超时未支付要自动关闭,关单时用户恰好付了款,怎样保证两边一致?

先自己想一想,再看参考要点

参考要点

  • 关单以支付平台为准,分三步:先用条件更新把订单从待支付改为关单中,影响 0 行就按当前状态处理
  • 再调用平台的关单接口,成功或订单已关闭时改为已关闭,在同一个事务中回补库存
  • 关单失败时查单,已支付就按支付成功处理(与回调走同一段代码),订单不存在可以关闭,结果不明保持关单中,由扫描任务稍后重做
  • 只改本地状态的话,用户打开旧的支付页面仍能付款
  • 下单时把同一个截止时间作为 time_expire 传给平台,否则平台默认 7 天内都能支付
  • 回调在关单中到达时仍然有效
在学习站中自测这道题看这道题所在的一天

学习站:先用面试题自评定级,按水平和面试日期排出每天的计划,自评过的题按间隔复习。免费、无需注册,记录只保存在自己的浏览器中。