微信JSSDK invalid signature签名错误的解决方法

导致签名错误的原因:

微信文档给出以下原因。

invalid signature签名错误:建议按如下顺序检查: 确认签名算法正确,可用

  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的corpid一致。
  5. 确保一定缓存access_token和jsapi_ticket。
  6. 确保你获取用来签名的url是动态获取的,动态页面可参见实例代码中php的实现方式。如果是html的静态页面在前端通过ajax将url传到后台签名,前端需要用js获取当前页面除去’#‘hash部分的链接(可用location.href.split(’#’)[0]获取,而且需要encodeURIComponent),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败。

自己程序检测:

1-5 检测都没有问题。漫长的思考后,发现问题出在了URL

要进行前端URL编码,不要用后端自动获取的。前端把编好码的URL 直接传给后端用。

客户端调用示例:

<script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script>
axios.get('getsign?url=' + encodeURI(location.href)) //就是这样编码,url传给后端即可
        .then(function (response) {
            // handle success
            console.log(response);
            wx.config({
                debug: true,
                appId: response.data.appId,
                timestamp: response.data.timestamp,
                nonceStr: response.data.nonceStr,
                signature: response.data.signature,
                jsApiList: [] // Required, required JA interface list, all JS interface list, see Appendix 2

            });
        })
</script>

后端代码:

可以直接下载微信给出的SDK.

http://demo.open.weixin.qq.com/jssdk/sample.zip

备注:链接中包含php、java、nodejs以及python的示例代码供第三方参考,第三方切记要对获取的accesstoken以及jsapi_ticket进行缓存以确保不会触发频率限制。


参考微信文档:

微信JS-SDK接口

END.


佛祖保佑
               _ooOoo_
              o8888888o
              88" . "88
              (| -_- |)
              O\  =  /O
           ____/`---'\____
         .'  \\|     |//  `.
        /  \\|||  :  |||//  \
       /  _||||| -:- |||||-  \
       |   | \\\  -  /// |   |
       | \_|  ''\---/''  |   |
        \  .-\__  `-`  ___/-. /
      ___`. .'  /--.--\  `. . __
   ."" '<  `.___\_<|>_/___.'  >'"".
  | | :  `- \`.;`\ _ /`;.`/ - ` : | |
  \  \ `-.   \_ __\ /__ _/   .-` /  /
美女与野兽
_____                 &&&&_) )
\/,---<                &&&&&&\ \
( )c~c~~@~@            )- - &&\ \
C   >/                \<   |&/
\_O/ - 哇塞          _`*-'_/ /
,- >o<-.              / ____ _/
/   \/   \            / /\  _)_)
/ /|  | |\ \          / /  )   |
\ \|  | |/ /          \ \ /    |
\_\  | |_/            \ \_    |
/_/`___|_\            /_/\____|
|  | |                  \  \|
|  | |                   `. )
|  | |                   / /
|__|_|_                 /_/|
(____)_)                |\_\_                
可爱维尼小熊

┴┬┴┬/ ̄\_/ ̄\
┬┴┬┴▏  ▏▔▔▔▔\
┴┬┴/\ /      ﹨
┬┴∕       /   )
┴┬▏        ●  ▏
┬┴▏           ▔█ 
┴◢██◣     \___/
┬█████◣       /  
┴█████████████◣
◢██████████████▆▄
█◤◢██◣◥█████████◤\
◥◢████ ████████◤   \
┴█████ ██████◤      ﹨
┬│   │█████◤        ▏
┴│   │              ▏
┬ ∕    ∕    /▔▔▔\     ∕
┴/___/﹨   ∕     ﹨  /\
┬┴┬┴┬┴\    \      ﹨/   ﹨
┴┬┴┬┴┬┴ \___\     ﹨/▔\﹨ ▔\
▲△▲▲╓╥╥╥╥╥╥╥╥\   ∕  /▔﹨/▔﹨
  **╠╬╬╬╬╬╬╬╬*﹨  /  //

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值