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