请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

如何防止重复付款

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

正在回答 回答被采纳积分+3

2回答

慕妹8259635 2019-04-01 22:46:29

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

0 回复 有任何疑惑可以回复我~
  • 靈寶 #1
    这个订单号在redis中存在一段时间,比如30分钟,15分钟内未支付,订单复原。防止网络卡顿等造成延迟或重复支付的现象,需要设置为2倍时间,即30分钟。若支付成功,然后在剩下的15分钟内,异步对数据库进行修改数据。
    回复 有任何疑惑可以回复我~ 2019-09-12 10:19:23
阿神 2019-03-26 13:11:18

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

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信