invalid signature签名错误。建议按如下顺序检查:
- 确认签名算法正确,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验。
- 确认config中noncestr, timestamp与用以签名中的对应noncestr, timestamp一致。
- 确认url是页面完整的url,包括GET参数部分,去掉#后面部分。
- 确认 config 中的 appid 与用来获取 jsapi_ticket 的 appid 一致。
- 确保缓存access_token和jsapi_ticket(可以减少两次服务器请求加速体验外,还避免了触发频率限制,提高服务稳定性)并且如果是多微信公众号体系下每个账号缓存的access_token和jsapi_ticket没有重复,建议用app_id作为缓存的key。
目前项目中现在有微信支付的公众号平台的appid1,和微信开放平台的appid2,
我按照这个顺序检验程序,走到 4 的时候,发现项目中请求 获取全局acess token 用的是公众号平台的appid1,jspai ticket 用的是 开放平台的appid2,两个appid 不一致导致的。
关于获取全局acess token:
使用微信开放平台的appid2账号获取的网页登陆授权的access token ,仅用于登陆和获取用户信息,在调用jsapi ticket 和其他接口的token 指的是全局的access token,这个和网页授权得到的access token 不是一个东西,需要调用全局access token 接口获取,并全局保存
参考地址:http://wohugb.gitbooks.io/webot/content/js-sdk/error.html