导致签名错误的原因:
微信文档给出以下原因。
invalid signature签名错误:建议按如下顺序检查: 确认签名算法正确,可用
- http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验。
- 确认config中nonceStr(js中驼峰标准大写S), timestamp与用以签名中的对应noncestr,timestamp一致。
- 确认url是页面完整的url(请在当前页面alert(location.href.split(’#’)[0])确认),包括 http(s) : // 部分,以及 ? 后面的GET参数部分,但不包括 # hash后面的部分。
- 确认config中的appid与用来获取jsapi_ticket的corpid一致。
- 确保一定缓存access_token和jsapi_ticket。
- 确保你获取用来签名的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进行缓存以确保不会触发频率限制。
参考微信文档:
END.
佛祖保佑
_ooOoo_
o8888888o
88" . "88
(| -_- |)
O\ = /O
____/`---'\____
.' \\| |// `.
/ \\||| : |||// \
/ _||||| -:- |||||- \
| | \\\ - /// | |
| \_| ''\---/'' | |
\ .-\__ `-` ___/-. /
___`. .' /--.--\ `. . __
."" '< `.___\_<|>_/___.' >'"".
| | : `- \`.;`\ _ /`;.`/ - ` : | |
\ \ `-. \_ __\ /__ _/ .-` / /
美女与野兽
_____ &&&&_) )
\/,---< &&&&&&\ \
( )c~c~~@~@ )- - &&\ \
C >/ \< |&/
\_O/ - 哇塞 _`*-'_/ /
,- >o<-. / ____ _/
/ \/ \ / /\ _)_)
/ /| | |\ \ / / ) |
\ \| | |/ / \ \ / |
\_\ | |_/ \ \_ |
/_/`___|_\ /_/\____|
| | | \ \|
| | | `. )
| | | / /
|__|_|_ /_/|
(____)_) |\_\_
可爱维尼小熊
┴┬┴┬/ ̄\_/ ̄\
┬┴┬┴▏ ▏▔▔▔▔\
┴┬┴/\ / ﹨
┬┴∕ / )
┴┬▏ ● ▏
┬┴▏ ▔█
┴◢██◣ \___/
┬█████◣ /
┴█████████████◣
◢██████████████▆▄
█◤◢██◣◥█████████◤\
◥◢████ ████████◤ \
┴█████ ██████◤ ﹨
┬│ │█████◤ ▏
┴│ │ ▏
┬ ∕ ∕ /▔▔▔\ ∕
┴/___/﹨ ∕ ﹨ /\
┬┴┬┴┬┴\ \ ﹨/ ﹨
┴┬┴┬┴┬┴ \___\ ﹨/▔\﹨ ▔\
▲△▲▲╓╥╥╥╥╥╥╥╥\ ∕ /▔﹨/▔﹨
**╠╬╬╬╬╬╬╬╬*﹨ / //