支付异常引起的退款

225 阅读1分钟

单次支付

应用场景

消费者支付了,但是渠道侧暂时没有成功,不仅仅是暂时没成功,而且是过了很长的时间仍然没有成功。

但是,一般订单是有过期时间的,如果一段时间内(比如几分钟)没有支付,就会被job关闭。

问题来了,在订单关闭之后,这个时候,渠道侧支付成功了,然后渠道即会通知支付公司。

支付公司收到支付成功通知之后,会检查到订单状态为已经关闭,这个时候,就会退款。

流程图

第一个阶段-先支付,但是一直没有支付成功

第二个阶段-订单过期,支付公司的job关闭订单

第三个阶段-渠道通知支付成功

多次支付

应用场景

用户A,第一次支付成功。渠道侧成功,支付公司也成功了。

然后,用户A,再次支付,即连付两次。或者,用户B,也支付了同一笔订单,这种情况,也是付了两次。

同一笔订单,付两次,都是并发导致的。

问题来了,在第二次支付的时候,渠道侧也成功了,这个时候渠道会通知支付公司,支付公司检查到已经有了一笔成功明细,支付公司就会发起退款。第二笔明细的状态也会被更新为多次支付状态,说白了,就是同一笔订单,只能有一笔成功支付明细。

流程图

第一次支付

第二次支付