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 相关文章推荐
javascript中setTimeout和setInterval的unref()和ref()用法示例
Nov 26 Javascript
js拆分字符串并将分割的数据放到数组中的方法
May 06 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
Dec 13 Javascript
JavaScript实现公历转农历功能示例
Feb 13 Javascript
微信小程序movable view移动图片和双指缩放实例代码
Aug 08 Javascript
bootstrap treeview 树形菜单带复选框及级联选择功能
Jun 08 Javascript
利用vue-i18n实现多语言切换效果的方法
Jun 19 Javascript
Vue配置marked链接添加target=&quot;_blank&quot;的方法
Jul 19 Javascript
vue.js中ref和$refs的使用及示例讲解
Aug 14 Javascript
keep-alive不能缓存多层级路由菜单问题解决
Mar 10 Javascript
详解JS预解析原理
Jun 16 Javascript
Vue Element UI自定义描述列表组件
May 18 Vue.js
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 字符串分割和比较
2009/10/06 PHP
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
Zend Framework入门教程之Zend_View组件用法示例
2016/12/09 PHP
PDO实现学生管理系统
2020/03/21 PHP
用js计算页面执行时间的函数
2006/12/07 Javascript
Jquery获得控件值的三种方法总结
2014/02/13 Javascript
node.js中的buffer.length方法使用说明
2014/12/14 Javascript
javascript创建对象的3种方法
2016/11/02 Javascript
通过BootStrap-select插件 js jQuery控制select属性变化
2017/01/03 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
2017/03/01 Javascript
AngularJS中使用ngModal模态框实例
2017/05/27 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
2017/06/12 jQuery
vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
2017/08/04 Javascript
封装运动框架实战左右与上下滑动的焦点轮播图(实例)
2017/10/17 Javascript
three.js加载obj模型的实例代码
2017/11/10 Javascript
webpack组织模块打包Library的原理及实现
2018/03/10 Javascript
微信小程序下拉框搜索功能的实现方法
2019/07/31 Javascript
Vue实现点击按钮复制文本内容的例子
2019/11/09 Javascript
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
2020/04/21 Javascript
Python验证码识别处理实例
2015/12/28 Python
python2.6.6如何升级到python2.7.14
2018/04/08 Python
Python3 执行系统命令并获取实时回显功能
2019/07/09 Python
利用Python绘制有趣的万圣节南瓜怪效果
2019/10/31 Python
Python各种扩展名区别点整理
2020/02/27 Python
Python3 assert断言实现原理解析
2020/03/02 Python
python实现3D地图可视化
2020/03/25 Python
Keras-多输入多输出实例(多任务)
2020/06/22 Python
Python之字典对象的几种创建方法
2020/09/30 Python
外企测试工程师面试题
2015/02/01 面试题
幼儿园家长会邀请函
2014/01/15 职场文书
金融学专科生自我鉴定
2014/02/21 职场文书
个人整改措施书面材料
2014/10/24 职场文书
2014年法院个人工作总结
2014/12/17 职场文书
小学教师节活动总结
2015/03/20 职场文书
2015年医生个人工作总结
2015/04/25 职场文书
2019年大学推荐信
2019/06/24 职场文书