调用微信的扫一扫功能

一,实现思路

在这里插入图片描述
在这里插入图片描述

二,实现

使用的是weixin-jsapi

npm install weixin-jsapi --save

三,官方文档

https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#1

四,具体代码;

/**
     * 扫一扫
     */
    handleScan(){
      let env = this.myModal.getEnv()
        if (env !== 'others') {
          this.wxScanCode();
        } else {
            this.$router.push('qrcodeScanner')
        }
    },
    /**
     * 调起微信扫一扫
     */
    wxScanCode () {
      let params = {
        PT_STYLE: '1',
        TXCODE: 'WXSQ01',
        url: window.location.href.split('#')[0]
      }
      this.ajax('get', params, res => {
        wx.config({
          debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
          appId: res.data.appId, // 必填,公众号的唯一标识
          timestamp: res.data.timestamp, // 必填,生成签名的时间戳
          nonceStr: res.data.nonceStr, // 必填,生成签名的随机串
          signature: res.data.signature, // 必填,签名,见附录1
          jsApiList: [
            'scanQRCode',
            'checkJsApi'
          ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
        })

        wx.error(function (res) {
          // 这个地方的好处就是wx.config配置错误,会弹出窗口哪里错误,然后根据微信文档查询即可。
          alert('出错啦:' + JSON.stringify(res))
        })

        wx.ready(() => {
          setTimeout(() => {
            wx.checkJsApi({
              jsApiList: [
                'scanQRCode'
              ],
              success: function (res) {
                console.log(res)
              }
            })
            wx.scanQRCode({
              needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
              scanType: ['qrCode', 'barCode'], // 可以指定扫付款码还是一维码,默认二者都有
              success: (res) => {
                if (res.resultStr) {    //// 当needResult 为 1 时,扫码返回的结果存放在这里面res.resultStr,也就是二维码数据信息
                  this.checkScanCode(res.resultStr)    //传入返回的结果,开始处理
                }
              },
              fail: function (res) {
                alert('出错啦:' + JSON.stringify(res))
              }
            })
          }, 100)
        })
      }, err => { console.log(err) }, this.$baseAPIs.server4th)
    },
    /**
     * 检查付款码是否合法
     */
    checkScanCode (result) {
      let params = {
        TXCODE: 'ST0074',
        qrCode: result
      }
      this.ajax('get', params, res => {
        if (res.data.SUCCESS === 'Y') {
          // this.$router.push({path: '/smViews/QRpay', query: { qrcode: result }})
          //对于我这个项目,应该跳转到龙支付的页面,并且将二维码得到的参数带入,在这里后端返回二维码的处理数据
          this.$notify({
            message: '应该跳转到龙支付页面',
            type: 'success', 
            duration: 500,
          });
        } else {
          this.$notify({
            message: res.data.ERRMSG,
            type: 'warning', 
            duration: 500,
          });
        }
      }, err => { console.log(err) }, this.$baseAPIs.server3rd)
    }

判断环境的代码:

 /**
  * 获取当前环境
  */
  getEnv () {
    if (window.navigator.userAgent.toLowerCase().indexOf('miniprogram') !== -1) {
      // 微信小程序
      return 'wechat applet'
    } else if (window.navigator.userAgent.toLowerCase().indexOf('micromessenger') !== -1) {
      // 微信内置浏览器
      return 'weChat'
    } else {
      return 'others'
    }
  }
要在HTML页面中调用微信功能,需要使用微信提供的JS-SDK。具体步骤如下: 1. 在HTML页面中引入微信JS-SDK的代码库,可以通过以下方式引入: ```html <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> ``` 2. 在微信开放平台上申请开通JS-SDK权限,并获取到appId、timestamp、nonceStr、signature等参数。 3. 在HTML页面中准备个按钮或者其他元素,用于触发功能。例如: ```html <button id="scanQRCodeBtn"></button> ``` 4. 在JS代码中调用微信JS-SDK提供的`wx.scanQRCode`方法,打开界面。例如: ```javascript wx.config({ // 配置参数 appId: '你的appId', timestamp: '生成签名的时间戳', nonceStr: '生成签名的随机字符串', signature: '签名', jsApiList: ['scanQRCode'] // 需要使用的JS接口列表 }); wx.ready(function() { // 配置成功后执行的回调函数 document.querySelector('#scanQRCodeBtn').onclick = function() { wx.scanQRCode({ needResult: 1, scanType: ['qrCode', 'barCode'], success: function(res) { // 描成功后的回调函数,res.resultStr为描结果 console.log(res.resultStr); }, fail: function(res) { // 描失败后的回调函数 console.log(res); } }); }; }); ``` 以上代码中,`wx.config`方法用于配置参数,`wx.ready`方法用于在配置成功后执行的回调函数中调用`wx.scanQRCode`方法。`needResult`参数表示是否需要返回描结果,`scanType`参数表示描的类型,`success`和`fail`参数分别表示描成功和描失败后的回调函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值