上文 说了 签名时 不进行URL 转义。下文问题排查就说需要encodeURIComponent,6
发布于 5 年前 作者 lei34 13376 次浏览 来自 问答

1.url问题,感觉是需要解码

上文:对string1作sha1加密,字段名和字段值都采用原始值,不进行URL 转义。

附录5-常见错误及解决方法

下文:确保你获取用来签名的url是动态获取的,动态页面可参见实例代码中php的实现方式。如果是html的静态页面在前端通过ajax将url传到后台签名,前端需要用js获取当前页面除去'#'hash部分的链接(可用location.href.split('#')[0]获取,而且需要encodeURIComponent),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败。

本来就是前后矛盾了,问题排查时,就是按照 常见错误这款文档排查的,后面给你个错误的排查方法,这样更加坑人,

2.时间戳问题

加签时需要字符串拼接,无可厚非,但是config 配置时,示例页面https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 用的是Number类型的,并没有说清楚,增加调试难度,虽然最后验证了类型并不影响实际结果,但是增多了一个维度去debugger,希望说明清楚

3.node的示例代码竟然是错误的,http://demo.open.weixin.qq.com/jssdk/sample.zip

文档 是这样描述的确认config中nonceStr(js中驼峰标准大写S), timestamp与用以签名中的对应noncestr, timestamp一致。但是示例代码noncestr 是驼峰命名的,还有增加说明依赖包版本,默认都到3.多了,实际上1.几的版本才适用

希望完善文档,流血者一个就好了,莫让后来者举步维艰

回到顶部