微信公众号在调用扫一扫功能时,一维码(条形码)在直接返回结果时会在结果前带上EAN_8, EAN_13, CODE_25, CODE_39, CODE_128, UPC_A, UPC_E
wx.scanQRCode({
needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
success: function (res) {
//let result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
//处理微信公众号在调用扫一扫功能时,一维码(条形码)在直接返回结果时会在结果前带上EAN_8, EAN_13, CODE_25, CODE_39, CODE_128, UPC_A, UPC_E
let result = res.resultStr.split(",");
let barCode = result[result.length-1];
alert(barCode)
}
});
顺便说一下在vue中封装微信js-sdk权限验证的方法
- axios.js 封装vue对象的方法
//封装的get请求
let axios_get = function (url, params) {
let _params = typeof (params) == 'object' ? params : {}
_params = {
..._params,
S: localStorage.getItem('S'),
U: localStorage.getItem('U')
}
return new Promise((resolve, reject) => {
axios.get(url, {
'params': _params
}).then(res => {
if (res.errno !== 0) {
reject(res)
}
resolve(res)
}).catch(err => {
reject(err)
})
})
}
//微信权限验证
let wxReady = function(jsApiList,wxFnc){
axios_get('/wechatConfig',{url: window.location.href}).then(res => {
res = res.data;
if (res && res.appId) {
/*微信接口*/
var obj = {
debug: true, // 开启调试模式
appId: res.appId, // 必填,公众号的唯一标识
timestamp: res.timestamp, // 必填,生成签名的时间戳
nonceStr: res.nonceStr, // 必填,生成签名的随机串
signature: res.signature, // 必填,签名,见附录1
jsApiList: jsApiList
}
/*权限验证配置*/
wx.config(obj);
wx.ready(wxFnc);
wx.error(function (err) {
console.log(err)
});
}
}).catch(err => {
console.log(err)
})
}
//赋值给vue的全局对象
Vue.prototype.$get = axios_get;
Vue.prototype.$wxReady = wxReady;
- 在app.js中引用
import './axios.js'
- 在组件中引用全局对象的方法
const jsApiList = ['scanQRCode'];
this.$wxReady(jsApiList,function(){
wx.scanQRCode({
......
});
})