支付超时后同一个待支付订单号无法生成二维码问题——支付宝二维码付款-当面付接口

飞一样的编程
飞一样的编程
擅长邻域:Java,MySQL,Linux,nginx,springboot,mongodb,微信小程序,vue

分类: springboot 专栏: 新版在线教育项目 标签: 支付超时问题

2024-06-14 21:10:02 753浏览

支付超时后同一个待支付订单号无法生成二维码问题——支付宝二维码付款-当面付接口

支付超时后同一个订单号无法生成二维码问题

问题:

一旦超过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展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695