单次支付
应用场景
消费者支付了,但是渠道侧暂时没有成功,不仅仅是暂时没成功,而且是过了很长的时间仍然没有成功。
但是,一般订单是有过期时间的,如果一段时间内(比如几分钟)没有支付,就会被job关闭。
问题来了,在订单关闭之后,这个时候,渠道侧支付成功了,然后渠道即会通知支付公司。
支付公司收到支付成功通知之后,会检查到订单状态为已经关闭,这个时候,就会退款。
流程图
第一个阶段-先支付,但是一直没有支付成功
第二个阶段-订单过期,支付公司的job关闭订单
第三个阶段-渠道通知支付成功
多次支付
应用场景
用户A,第一次支付成功。渠道侧成功,支付公司也成功了。
然后,用户A,再次支付,即连付两次。或者,用户B,也支付了同一笔订单,这种情况,也是付了两次。
同一笔订单,付两次,都是并发导致的。
问题来了,在第二次支付的时候,渠道侧也成功了,这个时候渠道会通知支付公司,支付公司检查到已经有了一笔成功明细,支付公司就会发起退款。第二笔明细的状态也会被更新为多次支付状态,说白了,就是同一笔订单,只能有一笔成功支付明细。
流程图
第一次支付
第二次支付