zoukankan      html  css  js  c++  java
  • 记录微信支付开发中的小经验(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重复的原因有很多,如果你是正常稳定的系统突然发现的,请把程序中回调的页面直接拉起看看,是不是报错了

  • 相关阅读:
    好好学习天天向上之InfoPath学习系列(一):Form Services与InfoPath初识
    Windows Server 2008 R2 AD RMS管理(转)
    好好学习天天向上之InfoPath学习系列(零):写在最前面
    如何向妻子解释OOD(转)
    WCF下传递EF实体对象中出现异常:无法将 EntityReference 对象序列化
    生产信息集成分析平台(MIIAS V1.0) 概述
    Hadoop:分布式计算平台初探
    Junit单元测试配置及基本用法
    centos7安装maven
    docker安装redis
  • 原文地址:https://www.cnblogs.com/zy1411/p/11719149.html
Copyright © 2011-2022 走看看