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 相关文章推荐
基于jQuery图片平滑连续滚动插件
Apr 27 Javascript
jQuery.each()用法分享
Jul 31 Javascript
js 获取时间间隔实现代码
May 12 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
Mar 12 Javascript
两种方法解决javascript url post 特殊字符转义 + &amp; #
Apr 13 Javascript
基于jQuery的checkbox全选问题分析
Nov 18 Javascript
Angular6中使用Swiper的方法示例
Jul 09 Javascript
小程序视频列表中视频的播放与停止的示例代码
Jul 20 Javascript
vuex提交state&amp;&amp;实时监听state数据的改变方法
Sep 16 Javascript
vue页面切换项目实现转场动画的方法
Nov 12 Javascript
在JavaScript中实现链式调用的实现
Dec 24 Javascript
使用Vant完成Dialog弹框案例
Nov 11 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使用DES进行加密与解密的方法详解
2013/06/06 PHP
解析PHP的session过期设置
2013/06/29 PHP
ASP和PHP实现生成网站快捷方式并下载到桌面的方法
2014/05/08 PHP
详谈PHP文件目录基础操作
2014/11/11 PHP
PHP使用flock实现文件加锁的方法
2015/07/01 PHP
PHP基于接口技术实现简单的多态应用完整实例
2017/04/26 PHP
PHP实现负载均衡下的session共用功能
2018/04/17 PHP
tp5(thinkPHP5)框架连接数据库的方法示例
2018/12/24 PHP
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
JavaScript中的立即执行函数表达式介绍
2015/03/15 Javascript
jquery图片滚动放大代码分享(2)
2015/08/28 Javascript
详解JavaScript RegExp对象
2017/02/04 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
使用Electron构建React+Webpack桌面应用的方法
2017/12/15 Javascript
详解关于React-Router4.0跳转不置顶解决方案
2019/05/10 Javascript
原生js实现抽奖小游戏
2019/06/27 Javascript
vue实现表格过滤功能
2019/09/27 Javascript
shelve  用来持久化任意的Python对象实例代码
2016/10/12 Python
Python中的defaultdict与__missing__()使用介绍
2018/02/03 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
2018/06/01 Python
python中单例常用的几种实现方法总结
2018/10/13 Python
Python操作json的方法实例分析
2018/12/06 Python
Python简易版图书管理系统
2019/08/12 Python
Python基础之列表常见操作经典实例详解
2020/02/26 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
Scrapy框架介绍之Puppeteer渲染的使用
2020/06/19 Python
美国著名的品牌折扣店:Burlington
2017/06/08 全球购物
思想政治自我鉴定
2013/10/06 职场文书
机械设计及其自动化专业推荐信
2013/10/31 职场文书
教师师德反思材料
2014/02/15 职场文书
社区母亲节活动方案
2014/03/05 职场文书
售后客服工作职责
2014/06/16 职场文书
2014年“四风”问题个人整改措施
2014/09/17 职场文书
教师廉洁自律个人总结
2015/02/10 职场文书
考生诚信考试承诺书(2016版)
2016/03/25 职场文书
基于Python实现流星雨效果的绘制
2022/03/18 Python