微信支付接口调用之二维码失效时间的设置

您所在的位置:网站首页 paypal支付链接有效期多久 微信支付接口调用之二维码失效时间的设置

微信支付接口调用之二维码失效时间的设置

2024-07-15 13:53| 来源: 网络整理| 查看: 265

        今天解决了测试提交上来的一个bug,说是公司网站调用的二维码接口没有做超时失效处理,这种情况容易导致用户账号登出后,该二维码还是有效的,当用户扫描支付时还是能够支付成功,但是微信支付成功后调用我们配置好的回调接口时却会因为被拦截而无法执行正常的回调操作,一些重要的资金流水和自己网站独有的资金账户的信息都将无法保存,造成的影响是非常严重的。不多说,开始切入正题。

 

在微信官方给出的微信支付开发文档,统一下单接口中有一个参数  time_expire  是用来设置二维码的超时时间的,截图如下:

 

 

更多参数详情请访问: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1  查看。

 

于是我在自己的代码中加入了 “time_expire ”这个参数,如下图红框部分:

 

时间的生成方法是自己写的,很简单,附上代码如下:

/** * 设置微信二维码失效时间,并返回具体失效的时间点 * @param expire 二维码的有效时间,单位是毫秒 * @return */ public static String getOrderExpireTime(Long expire){ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); Date now = new Date(); Date afterDate = new Date(now .getTime() + expire); return sdf.format(afterDate ); }

 

因为没有全面通读过微信支付开发文档,这套接口也是前面的老员工接入的,我算是半道子出门,所以以为这样就可以设置成功了,结果一试,发现二维码都无法显示了:

 

查看后台打印的日志,发现是签名错误:

 

直接去百度,结果发现网上没有解决的方案,正确的说,那些大神都不会犯这种小儿科的错误(汗颜),无奈我只能去读源码,结果让我发现,之前放入map中的参数所有参数,最后都要封装在中,于是我加上了:

 

再次测试,发现此时二维码能正常显示了,如下图:

我设置的超时失效时间是两分钟,两分钟过后,我再扫这个二维码时,发现二维码已经失效了:

 

至此,问题算解决了。事实上,更完美的解决方案是,前端也要控制二维码的显示时间。

 

完整的代码,请看我的另一篇博客 JAVA后端调用微信支付“统一下单”接口实现微信二维码扫码支付

 

本来这个问题很简单,如果是接触过微信支付开发的人,应该能够很快实现这个需求,但是作为一个刚接触的人来说,确实是有些困难的,本着一查就有的原则,写下这篇博客,给以后和我一样苦逼的程序小白一点小小帮助吧。

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3