前端代码
onMounted(() => {
// 获取签名值
getWxSignature().then((res) => {
console.log(res)
if (res.code === 200) {
// wx.config({
// beta: true,
// debug: false,
// appId: res.data.appId,
// timestamp: res.data.timestamp,
// nonceStr: res.data.nonceStr,
// signature: res.data.signature,
// jsApiList: ['openSubscribe'],
// });
// loadWxJsSdk()
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: 'wxe6c243e3ed9333ab', // 必填,公众号的唯一标识
timestamp: res.data.timestamp, // 必填,生成签名的时间戳
nonceStr: res.data.nonceStr, // 必填,生成签名的随机串
signature: res.data.signature,// 必填,签名
jsApiList: ['openCard'],
openTagList: ['wx-open-subscribe', 'wx-open-launch-weapp', 'wx-open-launch-app']
});
wx.ready(() => {
console.log('sdk加载ok--->',location.href.split('#')[0]);
});
wx.error((res) => {
console.log('sdk加载失败--->', res + " " + location.href.split('#')[0]);
});
}
})
});
后端代码
/**
* 生成签名
* @return
*/
@Override
public JSONObject generateWechatSignature() {
String nonceStr = WechatSignatureUtil.generateNonceStr();
String jsapiTicket = getJsSdkTicket();
// 时间戳
Long timestamp = WechatSignatureUtil.generateTimeStamp();
// 签名url
String url = "https://project.gxwx.org.cn/wxCheckAuthSuccess";
String encryptStr = "jsapi_ticket=" + jsapiTicket + "&noncestr=" + nonceStr + "×tamp=" + timestamp + "&url=" + url;
// 对encryptStr进行sha1加密
String signature = DigestUtils.sha1Hex(encryptStr);
JSONObject signatureObject = new JSONObject();
signatureObject.put("nonceStr", nonceStr);
signatureObject.put("timestamp", timestamp);
signatureObject.put("signature", signature);
signatureObject.put("url", url);
signatureObject.put("jsapi_ticket",jsapiTicket);
return signatureObject;
}
控制台
签名验证
JS安全域名:project.gxwx.org.cn
为什么还是报错签名错误呢
############################已解决############################################
大家如果遇到类似的问题请跳转https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#66查看
附录5第二点给了几个大致的错误方向,可以先从这几个方面进行排查
我的就是出现在第三小点完整url的问题

这个url是不是必须为你设置的安全域名才可以 本地的ip地址不行吧?那本地怎么调试啊...
截个图吧