vue中调用微信扫一扫功能(兼容IOS)

wxsdk的添加

//使用yarn进行添加

yarn add weixin-js-sdk

//使用npm进行添加

npm install weixin-js-sdk

1、在APP.vue中获取页面的url

//在APP.vue中获取页面的url
//其原因:是为兼用IOS中获取页面进行签名,导致签名失败的问题
created () {
    window.localStorage.setItem('scanUrl',location.href.split('#')[0])
}

2、vue前端,获取微信签名信息,为使用微信扫一扫功能做准备

import wx from 'weixin-js-sdk'

/**
 * 获取微信签名信息
 */
getSign() {
  //解决ios第一次无法调用微信扫一扫的功能,如果直接使用location.href.split('#')[0]进行获取链接的话,在IOS系统中第一次可能会无法进行正常的签名操作。
  //原因:微信会对IOS页面链接做处理,虽然使用location.href.split('#')[0]获取输出的链接,为当前的页面,但是实际上,在IOS页面的链接,并不是这一个链接,所以会导致签名失败的情况
  let purl = /(Android)/i.test(navigator.userAgent) ? location.href.split('#')[0] : window.localStorage.getItem('scanUrl');
  let dataForm = {
     'url': purl
   }
  this.showLoadding('正在加载配置文件,请稍后');
  //请求后端,获取微信签名信息
  getWxSign(dataForm).then((res) => {
      if (res.success == true) {
         let configData = {
           debug: false,
           appId: res.result.appId, // 必填,公众号的唯一标识
           timestamp: "" + res.result.timestamp, // 必填,生成签名的时间戳
           nonceStr: res.result.nonceStr, // 必填,生成签名的随机串
           signature: res.result.signature,// 必填,签名
           jsApiList: ['scanQRCode', 'checkJsApi']
          }
         wx.config(configData);
      } else {
         failedTip("获取签名信息失败,请刷新页面重新获取");
      }
      this.clearLoadding();
   });
 },

3、vue前端,调用微信扫一扫功能

/**
 * 调用微信扫一扫功能
 */
scan() {
	let _that = this;
	wx.ready(function () {
	  wx.checkJsApi({
		jsApiList: ['scanQRCode'],
		success: function (res) {
		  if (res.checkResult.scanQRCode === true) {
			wx.scanQRCode({ // 微信扫一扫接口
			  needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
			  scanType: ['qrCode', 'barCode'], // 可以指定扫二维码还是一维码,默认二者都有
			  success: function (res) {
				let url = res.resultStr // 当needResult 为 1 时,扫码返回的结果
				console.log(url)//url为扫码后返回的信息
			  }
			})
		  } else {
			failedTip("抱歉,当前客户端版本不支持扫一扫");
		  }
		},
		fail: function (res) { // 检测getNetworkType该功能失败时处理
		  failedTip('fail' + res)
		}
	  });
	});
    //错误信息
	wx.error(function (res) {
	  failedTip("出错了:" + res.errMsg);
	});
},

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值