jiafifteen

记录在微信公众号开发过程中遇到的一些问题以及解决方法

一、开发环境

  • Vue 2.5.2
  • weixin-js-sdk 1.4.0-test

二、问题与解决方法

1. 微信接口报错63002:invalid signature,即签名错误

1.1 问题分析

微信提供了专门的签名算法用于生成签名,一般由后端调用微信的接口生成签名,签名错误的原因一般有两大类:一是传入签名算法的参数错误;二是传入wx.config(微信提供的用于注入权限验证配置的接口)接口的参数错误。

1.2 解决方法
1.2.1 排查是否是传入签名算法的参数错误

1)参数一:noncestr(随机字符串);

2)参数二:有效的jsapi_ticket,这个参数微信也提供了专门的接口生成,正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,因此必须在自己的服务全局缓存jsapi_ticket

3)参数三:timestamp(时间戳),一定要确保服务器的时间是正确的,不然生成出来的签名是无效的;

4)参数四:当前网页的url,一定要注意传入接口的url不包含#及其后面部分,且必须是动态获取的

1.2.2 排查是否是传入wx.config接口的参数错误

1)参数一:appId(公众号的唯一标识),确保传入的appId是当前微信公众号的appId,在开发过程中,会经常弄混淆;

2)参数二:timestamp(生成签名的时间戳),一般直接由后端接口返回,确保与传入签名算法中的timestamp一致

3)参数三:nonceStr(生成签名的随机串),一般直接由后端接口返回,注意这个字段是驼峰式的,不要写错,与传入签名算法中的字段名称大小写有区分;

4)参数四:signature(签名),后端生成的签名,确保签名正确,可以使用微信提供的页面工具来校验

1.2.3 其他可能引起错误的原因

1)确保JS接口安全域名配置正确,JS接口安全域名不需要添加http(s)

分类:

技术点:

相关文章: