page contents

第三方支付:微信支付宝幂等性设计

Pack 发布于 2020-01-08 16:25
阅读 897
收藏 0

业务需求


用户购买报告,购买之后就可以下载观看报告。所以一个用户只需购买一次。后台的逻辑是同一个用户购买同一个报告时,只会对应一个订单号。


目前场景

attachments-2020-01-1UFztHBZ5e1591954c40e.png

在订单窗口会选择支付方式:支付宝和微信

选择支付方式页面


目前问题

当选择支付方式页面同时打开两个的时候,并选择支付方式:一个页面选择微信支付,一个页面选择支付宝支付。微信支付 和 支付宝支付


attachments-2020-01-oOHxR0Q05e1591b827278.png


attachments-2020-01-pzUtzZwi5e1591cebd3fd.png


当这种情况存在时,用户会同时付款两次。

因为后台的逻辑是同一个用户购买同一个报告时,只会对应一个订单号。所以当同一个支付方式下支付多次的时候,微信或支付宝都进行了幂等性控制,第二次付款失败。但是如果支付方式不一致,则会受到付款。


我的思路(但是存在问题)


我的思路是,每次生成付款码的时候用缓存订单,如果缓存时间内该订单有开始生成付款码,则提示已经再付款了。但是这个缓存时间不好把控。当提示用户已经再付款的时候,如果用户关闭了其他页面,再次进入选择支付方式页面时,用户则无法再次看到付款码了 。


求助各位

应该怎么合理的去设计这个问题。

136
Pack
Pack

增加支付方式和支付状态,如果已经选择了支付方式而为支付打开支付页面则直接跳到选择的支付页面,如果是已支付或支付中则不允许再支付

请先 登录 后评论