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 showModalDialog 多层模态窗口实现页面提交及刷新的代码
Nov 28 Javascript
jquery的ajax从纯真网(cz88.net)获取IP地址对应地区名
Dec 02 Javascript
Jquery响应回车键直接提交表单操作代码
Jul 25 Javascript
node+express+jade制作简单网站指南
Nov 26 Javascript
如何提高javascript加载速度
Dec 26 Javascript
微信小程序 textarea 组件详解及简单实例
Jan 10 Javascript
jQuery条件分页 代替离线查询(附代码)
Aug 17 jQuery
vue中keep-alive的用法及问题描述
May 15 Javascript
JavaScript设计模式之职责链模式应用示例
Aug 07 Javascript
Fundebug支持监控微信小程序HTTP请求错误的方法
Feb 21 Javascript
详解elementui之el-image-viewer(图片查看器)
Aug 30 Javascript
vue实现树形结构样式和功能的实例代码
Oct 15 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 生成WML页面方法详解
2009/08/09 PHP
解析link_mysql的php版
2013/06/30 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
2014/07/28 PHP
WampServer下安装多个版本的PHP、mysql、apache图文教程
2015/01/07 PHP
Yii框架的布局文件实例分析
2019/09/04 PHP
用javascript实现的支持lrc歌词的播放器
2007/05/17 Javascript
Jquery中Ajax 缓存带来的影响的解决方法
2011/05/19 Javascript
jQuery 下拉列表 二级联动插件分享
2012/03/29 Javascript
eval的两组性能测试数据
2012/08/17 Javascript
jquery中通过父级查找进行定位示例
2013/06/28 Javascript
AngularJS+Node.js实现在线聊天室
2015/08/28 Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
2016/05/12 Javascript
AngularJS表达式讲解及示例代码
2016/08/16 Javascript
canvas绘制多边形
2017/02/24 Javascript
如何正确理解javascript的模块化
2017/03/02 Javascript
addeventlistener监听scroll跟touch(实例讲解)
2017/08/04 Javascript
JS函数节流和函数防抖问题分析
2017/12/18 Javascript
babel的使用及安装配置教程
2018/02/22 Javascript
解决layer.open弹出框不能获取input框的值为空的问题
2019/09/10 Javascript
layui 实现表格某一列显示图标
2019/09/19 Javascript
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
vue中重定向redirect:‘/index‘,不显示问题、跳转出错的完美解决
2020/09/28 Javascript
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
2018/08/07 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
Python数组拼接np.concatenate实现过程
2020/04/18 Python
Python爬虫之Selenium警告框(弹窗)处理
2020/12/04 Python
HTML5中的autofocus(自动聚焦)属性介绍
2014/04/23 HTML / CSS
canvas简单连线动画的实现代码
2020/02/04 HTML / CSS
GUESS德国官网:美国牛仔服装品牌
2017/02/14 全球购物
新闻专业推荐信范文
2013/11/20 职场文书
银行领导证婚词
2014/01/11 职场文书
分公司负责人任命书
2014/06/04 职场文书
银行会计主管岗位职责
2014/10/01 职场文书
大学生安全教育主题班会
2015/08/12 职场文书
个人工作总结(管理人员)范文
2019/08/13 职场文书