支付业务-防重

第一种措施 - 缓存结果

1. 申请支付成功,支付回调成功,都应该缓存结果
2. 再申请支付,收到成功回调的时候,都应该先去检查支付的状态

第二种措施 - 支付中流水取消

1. 假如说,用户重复支付了,再次申请支付的时候,如果已经申请支付成功了,那么这笔支付肯定是要拒绝的
2. 未支付 - 那就允许支付
3. 但是,要是已经存在的这笔流水还在支付中呢?—— 我们不确定它是成功还是失败,肯定是不能拒绝支付的,因为可能用户支付失败了,但是状态还没同步,这样肯定是不行的。所以,我们可以取消掉正在支付中的流水,再进行支付

第三种措施 - 已支付流水退款

1. 现在又有新的问题了,假如发起支付的时候,有流水正在支付中,如果第三方支付平台不支持取消支付,或者用户新的支付是通过不同的渠道,我们希望尽可能提高用户的支付成功率,怎么办呢?
我们可以在发起支付的时候,订单还在支付中的情况下,允许用户发起多笔支付,在支付回调的时候,检查用户是否已经有成功流水,对后来的流水进行退款处理

第四种措施 - 对唯一订单号做幂等判断

1. 如果客户再次发起支付,不给客户产生新的支付订单号,先用该笔支付订单号调用支付系统,支付系统会判断订单号幂等性,如果已支付,则报错告诉客户已支付成功,请勿重复支付;如果支付失败,则新产生流水调用渠道进行支付落地;如果支付状态未知,则告诉客户,交易状态未知,请发起查询或者关单

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值