vue.js中使用微信扫一扫解决invalid signature问题(完美解决)


Posted in Javascript onApril 11, 2020

1、点击按钮,实现微信扫一扫功能:

<template>
  <a class="btn" @click="scan">扫一扫</a>
</template>

2、使用config接口注入配置信息,wx.config调用方法如下:

(其中appId,timestamp,nonceStr,signature必须从后台获取,传参当前网页的URL,不包含#及其后面部分,location.href.split('#')[0]获取)

wx.config({
  debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  appId: '', // 必填,公众号的唯一标识
  timestamp: , // 必填,生成签名的时间戳,精确到秒
  nonceStr: '', // 必填,生成签名的随机串
  signature: '',// 必填,签名
  jsApiList: [] // 必填,需要使用的JS接口列表,例如:['chooseImage','previewImage','uploadImage']
})

3、通过ready接口处理成功验证

wx.ready(function(){
 
  // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,
   config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
});

4、完整代码如下: 

export default {
		data() {
			return {
				
			}
		},
		methods: {
			init(){
				let url = location.href.split('#')[0];//这里的参数fullUrl是当前页面的完整url(除去#后面部分)
				this.$axios.get("/api/wx/jsdk/config",{params:{
					url:url
				}}).then(res => {
					if(res.success){
						window.wx.config({
						  debug: false,
						  appId: res.data.appId, // 必填,公众号的唯一标识
						  timestamp: res.data.timeSpan, // 必填,生成签名的时间戳
						  nonceStr: res.data.nonceStr, // 必填,生成签名的随机串
						  signature: res.data.sinature, // 必填,签名
						  jsApiList: ['checkJsApi', 'scanQRCode'] // 必填,需要使用的JS接口列表
						})
					}else{
						alert(res.msg);
					}
				})
			},
			scan(){
				window.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 result = res.resultStr // 当needResult 为 1 时,扫码返回的结果
										window.location.href = result;//此处扫码结果直接跳转链接
								 }
							 })
							} else {
							  alert('抱歉,当前客户端版本不支持扫一扫')
							}
							
						 },
						 
						 fail: function (res) { // 检测getNetworkType该功能失败时处理
						  alert('fail' + res)
						 }
						
					});
				});
				
				window.wx.error(function(res) {
					alert("出错了:" + res.errMsg);//这个地方的好处就是wx.config配置错误,会弹出窗口哪里错误,然后根据微信文档查询即可。
				});
					
			}
		},
		mounted() {
			this.init();
		}
	}

总结

到此这篇关于vue.js中使用微信扫一扫解决invalid signature问题(推荐)的文章就介绍到这了,更多相关vue.js 微信扫一扫内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
获取页面高度,窗口高度,滚动条高度等参数值getPageSize,getPageScroll
Sep 22 Javascript
GreyBox技术总结(转)
Nov 23 Javascript
js delete 用法(删除对象属性及变量)
Aug 24 Javascript
jQuery源码分析之Callbacks详解
Mar 13 Javascript
JavaScript中getUTCSeconds()方法的使用详解
Jun 11 Javascript
JavaScript DOM节点操作方法总结
Aug 23 Javascript
Angular2学习笔记——详解NgModule模块
Dec 02 Javascript
详解vuejs几种不同组件(页面)间传值的方式
Jun 01 Javascript
node使用UEditor富文本编辑器的方法实例
Jul 11 Javascript
详解React Native开源时间日期选择器组件(react-native-datetime)
Sep 13 Javascript
微信小程序实现随机验证码功能
Dec 20 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
Dec 04 Javascript
vue使用微信扫一扫功能的实现代码
Apr 11 #Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
Apr 11 #Javascript
vue搜索页开发实例代码详解(热门搜索,历史搜索,淘宝接口演示)
Apr 11 #Javascript
JavaScript实现轮播图特效
Apr 10 #Javascript
JavaScript实现图片伪异步上传过程解析
Apr 10 #Javascript
Vue实现Layui的集成方法步骤
Apr 10 #Javascript
如何基于layui的laytpl实现数据绑定的示例代码
Apr 10 #Javascript
You might like
关于PHP实现异步操作的研究
2013/02/03 PHP
PHP设计模式之命令模式的深入解析
2013/06/13 PHP
php中smarty区域循环的方法
2015/06/11 PHP
yii,CI,yaf框架+smarty模板使用方法
2015/12/29 PHP
一个简单安全的PHP验证码类、PHP验证码
2016/09/24 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
2017/06/21 PHP
Laravel网站打开速度优化的方法汇总
2017/07/16 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
2017/09/04 PHP
php中文语义分析实现方法示例
2019/09/28 PHP
firefox和IE系列的相关区别整理 以备后用
2009/12/28 Javascript
纯JavaScript实现的完美渐变弹出层效果代码
2010/04/02 Javascript
Javacript实现颜色梯度变化和渐变的效果代码
2013/05/31 Javascript
jquery用get实现ajax在ie里面刷新不进入后台解决方法
2013/08/12 Javascript
容易造成JavaScript内存泄露几个方面
2014/09/04 Javascript
详解AngularJS实现表单验证
2015/12/10 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
angularjs中ng-attr的用法详解
2016/12/31 Javascript
js清除浏览器缓存的几种方法
2017/03/15 Javascript
nodejs 终端打印进度条实例代码
2017/04/22 NodeJs
vue-resouce设置请求头的三种方法
2017/09/12 Javascript
细说webpack源码之compile流程-入口函数run
2017/12/26 Javascript
vue实现element-ui对话框可拖拽功能
2018/08/17 Javascript
vue中如何实现后台管理系统的权限控制的方法步骤
2019/09/05 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
2019/09/17 Javascript
javascript实现摄像头拍照预览
2019/09/30 Javascript
python调用shell的方法
2013/11/20 Python
python实现的简单FTP上传下载文件实例
2015/06/30 Python
python协程之动态添加任务的方法
2019/02/19 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
Python基于BeautifulSoup爬取京东商品信息
2020/06/01 Python
Django filter动态过滤与排序实现过程解析
2020/11/26 Python
大学生职业生涯规划范文
2014/01/08 职场文书
简单通用的简历自我评价
2014/09/21 职场文书
抢劫罪辩护词
2015/05/21 职场文书
Python OpenCV 彩色与灰度图像的转换实现
2021/06/05 Python
win server2012 r2服务器共享文件夹如何设置
2022/06/21 Servers