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代码
Aug 13 Javascript
jQuery maxlength文本字数限制插件
Apr 16 Javascript
JavaScript实现查找字符串中第一个不重复的字符
Dec 29 Javascript
JS获取iframe中longdesc属性的方法
Apr 01 Javascript
基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转
Jun 12 Javascript
微信小程序 教程之模块化
Oct 17 Javascript
js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换
Dec 06 Javascript
vue项目部署到Apache服务器中遇到的问题解决
Aug 24 Javascript
如何在Vue中使用CleaveJS格式化你的输入内容
Dec 14 Javascript
vue用BMap百度地图实现即时搜索功能
Sep 26 Javascript
JQuery中DOM节点的操作与访问方法实例分析
Dec 23 jQuery
Vue中插槽slot的使用方法与应用场景详析
Jun 08 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
dedecms后台验证码总提示错误的解决方法
2007/03/21 PHP
PHP中的array数组类型分析说明
2010/07/27 PHP
PHP stream_context_create()作用和用法分析
2011/03/29 PHP
PHP笔记之:基于面向对象设计的详解
2013/05/14 PHP
php抓取并保存网站图片的实现代码
2015/10/28 PHP
php数据访问之增删改查操作
2016/05/09 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
2019/02/15 PHP
js操作二级联动实现代码
2010/07/27 Javascript
jQuery的运行机制和设计理念分析
2011/04/05 Javascript
JavaScript实现表格快速变色效果代码
2015/08/19 Javascript
js导出excel文件的简洁方法(推荐)
2016/11/02 Javascript
jquery实现简单的瀑布流布局
2016/12/11 Javascript
Javascript基础回顾之(二) js作用域
2017/01/31 Javascript
利用canvas中toDataURL()将图片转为dataURL(base64)的方法详解
2017/11/20 Javascript
微信小程序使用request网络请求操作实例
2017/12/15 Javascript
ES6的异步操作之promise用法和async函数的具体使用
2019/12/06 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
2020/01/18 Javascript
vue 输入电话号码自动按3-4-4分割功能的实现代码
2020/04/30 Javascript
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
一个计算身份证号码校验位的Python小程序
2014/08/15 Python
Python基于pygame实现的font游戏字体(附源码)
2015/11/11 Python
python学习 流程控制语句详解
2016/06/01 Python
使用Python中的tkinter模块作图的方法
2017/02/07 Python
Python面向对象编程之继承与多态详解
2018/01/16 Python
python实现超简单的视频对象提取功能
2018/06/04 Python
更新pip3与pyttsx3文字语音转换的实现方法
2019/08/08 Python
Python定时任务随机时间执行的实现方法
2019/08/14 Python
flask框架url与重定向操作实例详解
2020/01/25 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
python数据分析:关键字提取方式
2020/02/24 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
2020/10/04 Python
Sport-Thieme荷兰:购买体育用品
2019/08/25 全球购物
管事部库房保管员岗位职责
2014/02/21 职场文书
小学毕业演讲稿
2014/04/25 职场文书
市级文明单位申报材料
2014/05/07 职场文书
Nginx域名转发使用场景代码实例
2021/03/31 Servers