解决微信小程序和H5调用微信内置扫码工具

 微信小程序端可以直接调用uni.scanCode()方法

scan(){
    uni.scanCode({
	success: function (res) {
        var result=res.result;
        //根据返回值进行下一步操作
	}
});
}

微信H5端调用前需要先引包,注册接口,完成初始化(this.wx)

Vue.prototype.wxfn_init=function(){
	var that=this;
	this.wx = require('@/common/jweixin-module/jweixin-module.js');
	var appid=this.appid;//公众号appid
	var timestamp=JSON.stringify(parseInt(new Date().getTime()/1000));
	var nonceStr=Math.random().toString(36).substr(2,15);
	uni.request({//
		url: "https://www.example.cn/getsignature",//从后端获取签名
		method:"post",
		data: {"timestamp":timestamp,"nonceStr":nonceStr,"url":location.href.split("#")[0]},
		success:(data)=> {
			that.wx.config({
				// debug: true,
				appId: that.appid, // 必填,公众号的唯一标识
				timestamp: timestamp, // 必填,生成签名的时间戳
				nonceStr: nonceStr, // 必填,生成签名的随机串
				signature: data.data,// 必填,签名
				jsApiList: ["updateAppMessageShareData","updateTimelineShareData","scanQRCode","chooseImage","getLocalImgData"] // 必填,需要使用的JS接口列表
			});
		}
	});
}

微信H5,node.js后端返回签名

exports.getsignature=function(req,res){
    //node后端引入crypto模块,便于签名加密
	var crypto=require("crypto");
	var timestamp=req.body.timestamp;
	var nonceStr=req.body.nonceStr;
	var url=req.body.url;
	var hash=crypto.createHash('sha1');
	var froms=req.body.froms;
	var access_token="";
	
	db.find("access_token",{"id":'access_token'},function(err,result){
		var str="jsapi_ticket="+result[0].jsapi_ticket+"&noncestr="+nonceStr+"&timestamp="+timestamp+"&url="+url;
		hash.update(str);
		var signval=hash.digest("hex");
		res.send(signval);//将加密后的签名传回前端
	})
}

完成初始化后可随时调用相关接口

this.wx.scanQRCode({
	needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
	scanType: ["qrCode"], // 可以指定扫二维码还是一维码,默认二者都有
	success: function (res) {
		var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
        //根据返回值进行下一步操作
	}
});

欢迎指正和共同探讨。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tx10765

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值