微信公众号开发者文档:概述 | 微信开放文档微信开发者平台文档https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#49
api.js
getSignatureInfo: (params) => fetch({
url: '/management-system/api/v1/wechat/signature',
params,
method: 'post',
}),
wx-tool.js
import wx from 'weixin-js-sdk';
import api from '@/api';
class WxTool {
constructor() {
console.log('WxTool init');
}
static getInstance() {
if (!WxTool.instance) {
WxTool.instance = new WxTool();
}
return WxTool.instance;
}
static async initConfig() {
console.log('initConfig', {
url: window.configUrl,
source: localStorage.getItem('defaultSource'),
});
await api.getSignatureInfo({
url: window.configUrl,
source: 1301110201,
}).then((res) => {
const {
appId, timestamp, nonceStr, signature,
} = res.data;
console.log(res)
wx.config({
// debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId, // 必填,公众号的唯一标识
timestamp, // 必填,生成签名的时间戳
nonceStr, // 必填,生成签名的随机串
signature, // 必填,签名
jsApiList: [
'chooseImage',
'uploadImage',
'getLocalImgData',
'getLocation',
'scanQRCode',
'chooseLocation',
'updateAppMessageShareData',
'updateTimelineShareData',
], // 必填,需要使用的JS接口列表
});
});
}
async openScanARCode() {
await WxTool.initConfig()
wx.ready(() => {
console.log(99)
wx.scanQRCode({
needResult: 1,
scanType: ['qrCode', 'barCode'],
success: function (res) {
console.log(res) // 返回扫码结果,用逗号隔开,截取一下就可以取到
},
fail: function(err){
console.log(err)
}
})
})
}
}
<button class="btn_apply" @click="openscan">扫码</button>
methods:{
openscan() {
const instance = WxTool.getInstance();
instance.openScanARCode()
}
}