[已解决]微信报错config:fail,Error: 系统错误,错误码:63002,invalid signature [20211207 17:50:38][]
问题
错误码:63002,invalid signature 无效的签名
根据“附录5”检查了签名没有发现问题
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html
同时在“微信 JS 接口签名校验工具”效验,签名都是一致的,但是就是不知道为啥一直报错
https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign
可能用到的工具
附录5
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html
微信 JS 接口签名校验工具
https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign
公众号-全局返回码说明
https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Global_Return_Code.html
排查步骤
1.确认签名算法正确,可用http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验。
2.确认config中nonceStr(js中驼峰标准大写S), timestamp与用以签名中的对应noncestr, timestamp一致。
3.确认url是页面完整的url(请在当前页面alert(location.href.split('#')[0])确认),包括'http(s)://'部分,以及'?'后面的GET参数部分,但不包括'#'hash后面的部分。
4.确认 config 中的 appid 与用来获取 jsapi_ticket 的 appid 一致。
5.确保一定缓存access_token和jsapi_ticket。
6.确保你获取用来签名的url是动态获取的,动态页面可参见实例代码中php的实现方式。如果是html的静态页面在前端通过ajax将url传到后台签名,前端需要用js获取当前页面除去'#'hash部分的链接(可用location.href.split('#')[0]获取,而且需要encodeURIComponent),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败。
如果以上还是没有解决你的问题;请你重点检查以下几个地方
1.检查wx.config
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名
jsApiList: [] // 必填,需要使用的JS接口列表
});
确定参数的“名称”和“大小写”以及“数据格式”都一致
2.检查“签名时的参数”和“wx.config”的参数是否一致
3.检查“签名时的参数”
noncestr=‘’
jsapi_ticket=‘’
timestamp=0
url=‘’
确定参数的“名称”和“大小写”以及“数据格式”都一致
重点是:否按照字段名的ASCII 码从小到大排序
如果还未找到原因,请重新按照文章再“谨慎”的检查一遍
我在处理这个问题的时候也是半天没有找到原因,后来发现问题就是出现在了
“wx.config”的参数上;“大小写”和官方的不一致