uniapp在微信h5环境调用微信扫一扫功能

1.封装扫码配置wxJSSDK.js

var wxjssdk = require("jweixin-module"); //引入JSSDK
var jsApiList = ["scanQRCode"]; //需要使用的微信JS接口列表
export default {
	async wxconfig() {
		let params = {
			linkurl: this.getUrl()
		}
		//getJsTicket为获取签名接口
		let res = await getJsTicket(params);
		let wxconfig = {
			debug: false, //开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传 
            入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
			appId: res.appId, // 必填,公众号的唯一标识
			timestamp: res.timestamp, // 必填,生成签名的时间戳
			nonceStr: res.nonceStr, // 必填,生成签名的随机串,
			signature: res.signature, // 必填,签名
			jsApiList, // 必填,需要使用的JS接口列表
		};
		wxjssdk.config(wxconfig);
	},
	getUrl() {
		var url = ''
		var ua = navigator.userAgent.toLowerCase();
		if (/iphone|ipad|ipod/.test(ua)) {
            // 跳转扫码页面前缓存的地址
			url = uni.getStorageSync('WxCodeUrl');
			if (!url) url = location.href.split("?")[0]
		} else {
			url = location.href.split("?")[0]
		}
		return url;
	},
	scanQRcode({
		success,
		fail,
		needResult = 1
	}) {
		this.wxconfig();
		wxjssdk.ready(() => {
			wxjssdk.scanQRCode({
				needResult, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
				scanType: ["qrCode"], // 可以指定扫二维码还是一维码
				success: res => {
					// {errMsg: "scanQRCode:ok", resultStr: ""} 当needResult 为 1 时, 
                       resultStr扫码返回的结果
					// {errMsg: "scanQRCode:ok"}当needResult 为 0 时,会导致页面跳转
					//扫码成功,抛出扫码结果
					success(res);
				},
			});
		});
		wxjssdk.error(res => {
			//config fail,抛出失败原因
			fail(res);
		});
	},
};

2.在使用扫码的vue页面

import wxjs from "./wxJSSDK.js";

wxjs.scanQRcode({
	success: (res) => {
	let result;
	try {
	  result = JSON.parse(res.resultStr);
	} catch {
	   uni.showToast({
		 title: "请扫描正确的二维码",
		 icon: "none",
	    });
      }
	},
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值