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 面向对象编程 万物皆对象
Sep 17 Javascript
jQuery)扩展jQuery系列之一 模拟alert,confirm(一)
Dec 04 Javascript
关于js datetime的那点事
Nov 15 Javascript
基于javascript 闭包基础分享
Jul 10 Javascript
JS生成随机字符串的多种方法
Jun 10 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
Oct 09 Javascript
vue+vux实现移动端文件上传样式
Jul 28 Javascript
简单实现vue验证码60秒倒计时功能
Oct 11 Javascript
react 创建单例组件的方法
Apr 26 Javascript
js中innerText/textContent和innerHTML与target和currentTarget的区别
Jan 21 Javascript
如何为你的JS项目添加智能提示与类型检查详解
Mar 12 Javascript
微信小程序自定义弹出层效果
May 26 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教程 插件机制在PHP中实现方案
2012/11/02 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
2014/04/23 PHP
ThinkPHP之foreach标签使用概述
2014/06/30 PHP
叫你如何修改Nginx与PHP的文件上传大小限制
2014/09/10 PHP
基于php实现七牛抓取远程图片
2015/12/01 PHP
javascript 函数速查表
2010/02/07 Javascript
Jquery api 速查表分享
2015/01/12 Javascript
全面解析Bootstrap表单使用方法(表单控件状态)
2015/11/24 Javascript
详解JavaScript中this关键字的用法
2016/05/26 Javascript
微信小程序 闭包写法详细介绍
2016/12/14 Javascript
JS实现购物车特效
2017/02/02 Javascript
jQuery实现大图轮播
2017/02/13 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
Map.vue基于百度地图组件重构笔记分享
2017/04/17 Javascript
Vue自定义事件(详解)
2017/08/19 Javascript
AngularJS实现的锚点楼层跳转功能示例
2018/01/02 Javascript
初探Vue3.0 中的一大亮点Proxy的使用
2018/12/06 Javascript
javascript实现手动点赞效果
2019/04/09 Javascript
Windows系统下使用flup搭建Nginx和Python环境的方法
2015/12/25 Python
详解Python的Flask框架中生成SECRET_KEY密钥的方法
2016/06/07 Python
python+influxdb+shell编写区域网络状况表
2018/07/27 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
2019/04/28 Python
python文字转语音的实例代码分析
2019/11/12 Python
python 检查数据中是否有缺失值,删除缺失值的方式
2019/12/02 Python
Python函数的迭代器与生成器的示例代码
2020/06/18 Python
使用pytorch实现论文中的unet网络
2020/06/24 Python
详解css3 object-fit属性
2018/07/27 HTML / CSS
css3 pointer-events 介绍详解
2017/09/18 HTML / CSS
HTML5视频播放插件 video.js介绍
2018/09/29 HTML / CSS
玛蒂尔达简服装:Matilda Jane Clothing
2019/02/13 全球购物
党的群众路线教育实践活动专题组织生活会发言材料
2014/10/17 职场文书
计划生育责任书
2015/05/09 职场文书
三傻大闹宝莱坞观后感
2015/06/03 职场文书
2015国庆66周年宣传语
2015/07/14 职场文书
乡镇司法所2015年度工作总结
2015/10/14 职场文书
行政后勤人员工作计划应该怎么写?
2019/08/16 职场文书