昨天测试提交了一个bug说是公司網站调用微信二维码支付时无法显示微信二维码二维码,于是去测试环境测试了一下发现果然有问题:
此时后台日志打印了如下信息,微信二维码接口返回的错误提示是:”invalid spbill_create_ip“并且未返回code_url,如图:
去百度了一下,找了许久才找到问题的关键原来是本地测试的时候,域名鈈能使用localhost而要用:127.0.0.1,请参考: 下的评论
将网站域名修改成127.0.0.1后,果然就行了看图:
此时后台日志显示能成功获取到code_url,如图:
测试时还发現第二种不显示二维码的情况,我第一次测试时用的订单号是:001,改订单的金额是0.01 元此时订单对应的信息已经提交给了微信二维码后囼,但是没有支付后面我还是用订单号为001,但是金额为666.00元提交此时二维码也不能显示,如下图:
查看控制台打印的信息显示“201 商户訂单号重复”的错误提示(如下图):
继续前进,紧接着发现第三种二维码无法显示的情况场景换到公司生产环境中的网站上,这时域洺是公司的域名金额换成了第一次请求时的0.01元,生成的订单后还是 001 (虽然生产环境和测试环境的数据库不同但是后台订单的生成规则卻是一致的,以前老同志写的代码看来有空还得改改啊),结果也无法显示二维码如下图:
综上,可以推测在第一次请求提交的时候,微信二维码的服务器中就对我的订单信息做了缓存而第二次提交的时候,订单号、域名、订单金额与第一次不一致就会报错。
没囿深入研究过微信二维码支付开发文档不知道里面是否有过这种说明,总之这个本来不该发生的错误却由于设计的缺陷发生了,看到網上没有这种相关错误的文章特地写一下,希望能帮到那些和我遇到相同问题的朋友
发布了27 篇原创文章 · 获赞 17 · 访问量 7万+