上图是后端返回数据
let data = {url: encodeURIComponent(window.location.href).split('?')[0]}
let responseData = await this.$topRequest('POST', requestUrls.sPostBusinessManageSelectElevatorGetWechatSignatureUrl, data)
if (responseData.code !== 200) {
return this.$toast(responseData.message)
} else {
let result = responseData.data
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: result.appId,// 必填,公众号的唯一标识
timestamp: "" + result.timestamp,// 必填,生成签名的时间戳
nonceStr: result.nonceStr, // 必填,生成签名的随机串
signature: result.signature, // 必填,签名,见附录1
jsApiList: [ 'scanQRCode'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
})
// 失败
wx.error(function (res) {
console.log(res.errMsg, '失败')
alert("出错了:" + res.errMsg);//这个地方的好处就是wx.config配置错误,会弹出窗口哪里错误,然后根据微信文档查询即可。
});
// 成功
wx.ready(function (res) {
console.log(res, '成功')
wx.scanQRCode({
needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
desc: 'scanQRCode desc',
scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
success: function (res) {
// 重定向
let _this = this
// window.location.href = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
// 获取终端详细信息
_this.getElevator(JSON.stringify(res.resultStr).split('=')[1])
}
});
});
}
代码是前端调用
url不用编码,直接传