如何防止重复付款

来源:6-6 NameServer协调服务讲解

慕村7125054

2019-03-25

老师,如何防止用户对某一订单重复付款?去重和幂等操作该怎么做呢?

写回答

2回答

慕妹8259635

2019-04-01

在客户端展示待付款订单时,每一笔订单都有唯一的订单编号,当用户点击付款时,可以把这笔订单编号放入redis中,当这笔订单还处于付款中时,用户再次付款应该不能再次付款,因为该笔订单号还在redis中。无论这次交易是否成功,都应该把该订单号从redis中删除,要不然,如果这次付款失败时,那下次就不能再次付款了。这里假设该订单号在redis中的实效性是永久。当这笔订单付款成功后,就不应该出现在待付款页面。

0
1
靈寶
这个订单号在redis中存在一段时间,比如30分钟,15分钟内未支付,订单复原。防止网络卡顿等造成延迟或重复支付的现象,需要设置为2倍时间,即30分钟。若支付成功,然后在剩下的15分钟内,异步对数据库进行修改数据。
2019-09-12
共1条回复

阿神

2019-03-26

一般都是业务自己做去重,比如唯一业务ID

0
0

RocketMQ核心技术精讲与高并发抗压实战

理论+实战,系统掌握RocketMQ核心技术, 挑战高并发抗压实战

1182 学习 · 304 问题

查看课程