因为项目里有个扫描快递单直接得到快递单号的需求,就顺便研究了一下wxjdk
关键代码如下:
1.提前获取扫一扫获取权限 先调用后台的接口成功之后根据后台返回的值获取授权 wx.config
2.调用微信wx.scanQRCode 成功的回调得到结果(res.resultStr)然后做自己页面的逻辑
// 扫一扫获取授权
author_WX() {
getWeix({
url: window.location.href
}).then(function(data) {
console.log(data);
if (data.code == "100") {
var getWeixData = data.extend.jsArr;
wx.config({
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: getWeixData[0], // 必填,公众号的唯一标识
timestamp: getWeixData[2], // 必填,生成签名的时间戳
nonceStr: getWeixData[1], // 必填,生成签名的随机串
signature: getWeixData[4], // 必填,签名,见附录1
jsApiList: ["scanQRCode"] // 必填,需要使用的JS接口列表,这里只说扫描,例如分享等都可以,只要写在数组里面就可以调用
});
//权限验证出错
wx.error(function(res) {
alert("出错了:" + res.errMsg);
});
}
});
},
//扫码得到快递单号
scan() {
let that=this;
console.log("扫码");
wx.ready(function() {
wx.checkJsApi({
jsApiList: ["scanQRCode"],
success: function(res) {
wx.scanQRCode({
needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有
success: function(res) {
var result=res.resultStr.split(",");
that.order_no=result[1];
// Toast({
// message: result,
// position: "middle",
// duration: 5000
// });
},
error: function(err) {
alert("扫描失败::扫描码=" + err);
}
});
}
});
});
}