// 微信扫一扫封装，传入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)
    })
}