因为项目里有个扫描快递单直接得到快递单号的需求,就顺便研究了一下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); } }); } }); }); }