支付超时后同一个待支付订单号无法生成二维码问题——支付宝二维码付款-当面付接口
分类: springboot 专栏: 新版在线教育项目 标签: 支付超时问题
2024-06-14 21:10:02 903浏览
支付超时后同一个订单号无法生成二维码问题
问题:
一旦超过2小时用户还没支付的话,再去支付的时候如果还是用原来的这个订单号就无法支付(因为支付宝那边已经把这个订单关闭了,但该订单号已经存在到支付宝官方并被标记超时,所以只能重新生成一个新的订单号才能生成能支付的二维码)
但我又实在不想换订单号。怎么解决这个问题?
原因
查看官网文档https://opendocs.alipay.com/open/f540afd8_alipay.trade.precreate?pathHash=d3c84596&ref=api&scene=19
我设置的是timeout_express为1m,测试发现1分钟还没支付的话,这个订单就会被关闭,这个是从生成等待付款的这个时间开始算(测试的时候:生成二维码后扫一下但不支付)
如果超过一分钟后,我再扫刚才的二维码继续去支付的时候就会报
如果你还用原来的订单号生成二维码就会报错
还有另外一个参数qr_code_timeout_express
这个是从生成二维码的这个时间开始算(测试的时候:生成二维码后就等着超时,不要扫二维码更不要支付)
解决思路
思路1:可以搞个定时任务,每两个小时(为了小误差,可以1个小时50分钟),去检查订单表里超过2小时的还未支付的订单将其设置成作废状态,设为作废状态的订单个人中心就没有去支付的按钮了。(这个时候如果用户还想买这些商品就只能去重新下单了)
思路2:order表中搞两个订单号字段,一个是给用户看的,一个是给支付宝官方看的,每次生成二维码的时候都生成新的订单号就完了,简单粗暴(这个订单号只是给支付宝那边看,并存起来以免将来对账)
好博客就要一起分享哦!分享海报
此处可发布评论
评论(0)展开评论
展开评论