55 lines
2.4 KiB
JavaScript
55 lines
2.4 KiB
JavaScript
// 微信扫一扫封装,传入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)
|
||
})
|
||
} |