// 微信扫一扫封装,传入callback在扫码执行并接收一个code参数,修改api即可; import wx from 'weixin-js-sdk' import { GetScanParams } from 'api/admin' import vm from '@/main.js' export default function WeChatScan(callback){ GetScanParams(window.location.href.split('#')[0]).then(res => { if(res.code === 0){ openScan(res.data,callback) }else{ vm.$Toast.error('签名信息获取失败!') } }).catch(err => vm.$Toast.error('签名信息获取失败,请重试!')) } function openScan(data,callback){ wx.config({ debug: false, // 开启调试模式 appId: data.appid, // 公众号的唯一标识 timestamp: data.Timestamp, // 生成签名的时间戳 nonceStr: data.NonceStr, // 生成签名的随机串 signature: data.Signature, // 签名 jsApiList: [ 'scanQRCode' ] // 需要使用的JS接口列表 }); wx.ready(function () { var isBack = callback wx.checkJsApi({ // 判断当前客户端版本是否支持指定JS接口 jsApiList: [ 'scanQRCode' ], success: function (res) { // 以键值对的形式返回,可用true,不可用false。如:{"checkResult":{"scanQRCode":true},"errMsg":"checkJsApi:ok"} if (res.checkResult.scanQRCode === true) { wx.scanQRCode({ // 微信扫一扫接口 needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果, scanType: ['qrCode', 'barCode'], // 可以指定扫二维码还是一维码,默认二者都有 success: function (res) { const getCode = res.resultStr // 当needResult 为 1 时,扫码返回的结果 isBack(getCode) } }) } else { vm.$Toast.error('抱歉,当前客户端版本不支持扫一扫!') } }, fail: function (res) { // 检测getNetworkType该功能失败时处理 vm.$Toast.error('失败' + res) } }) }) /* 处理失败验证 */ wx.error(function (res) { vm.$Toast.error('签名信息错误: ' + res.errMsg) }) }