应用场景:消息队列积压,异步回调消息延迟。
同一订单点击支付按钮支付单号更新的场景:用户在第一次发起支付之后,回调还未应答之前,用户再次发起支付,造成用户N+1次支付问题。
异步方案:前端支付完成,调用一个后端接口。
订单表中添加一个支付标识字段:0-待付款 1-支付中 2-已完成;默认0-待付款。
根据支付单号,更新支付标识字段:1-支付中。
用户N+1次点击支付,判断订单状态是否支付中;0-待支付:则拉起支付,1-支付中:则提示用户支付中,2-已完成:则提示已付款。
回调消息应答时,需更新支付标识字段:2-已完成。
同步方案:前端支付完成,调用一个后端接口。
根据支付单号,去三方查询支付状态,若支付成功,则更新订单支付状态。