记录微信支付开发中的小经验(errcode = 40163; errmsg = "code been used")
今天上午客户提出问题,看了一下报错截图,应该是我更新版本时少传了一个参数,导致后续报错,
心里想着小问题,直接生产环境添加一下就行了,于是就为了我这一上午的悲剧埋下了伏笔
十分自信的把页面中的代码添加了以后,直接登录客户系统,测试一笔交易
非常意外的,突然报错了,报错页面提示openid获取失败,第一时间反应是否是客户修改了公众号的设置,
排查过以后客户说并没有,这就奇怪了,明明之前稳定运行的系统为什么突然报错了
直接在服务器打印微信获取openid的返回值
发现是errcode = 40163; errmsg = "code been used",一头雾水????
百度后发现好多遇到这种问题的,基本核心思路都是由于回调的code重复使用导致的,可是我这确实没有重复使用啊
各种打断点log发现确实函数被调用了多次,这就奇怪了,难道是微信出问题了?? 自己的水平肯定不如腾讯的啊
于是开始了我漫长的排查之路,缓存code ,写入文件,写判断函数,能想到都尝试了,就是不行,都想恢复上一版本代码了
这时候突然发现一个兄弟写的文章,他说他设置断点后,由于程序未即使回复,导致微信的回调地址回调两次
这突然提醒了我,难道是因为页面访问过慢么? 找到之前写的测试用例一跑,发现问题了
原来是拉起支付的页面报错了,就是最开始我十分自信更新的代码,拉起页面报错后,回导致微信的回调code不成功,微信就会多次回调,
多次回调后code重复提交,就会导致errcode = 40163; errmsg = "code been used"
划重点:errcode = 40163; errmsg = "code been used",这个错误原因是code重复导致,导致code重复的原因有很多,如果你是正常稳定的系统突然发现的,请把程序中回调的页面直接拉起看看,是不是报错了
上一篇: CAD图纸怎么添加线性标注?
推荐阅读
-
记录微信支付开发中的小经验(errcode = 40163; errmsg = "code been used")
-
微信支付授权获取 openId {"errcode":40163,"errmsg":"code been used, hints: [ req_id: scqL1a02482017 ]"}
-
记录微信支付开发中的小经验(errcode = 40163; errmsg = "code been used")
-
微信支付授权获取 openId {"errcode":40163,"errmsg":"code been used, hints: [ req_id: scqL1a02482017 ]"}