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 相关文章推荐
YUI 读码日记之 YAHOO.lang.is*
Mar 22 Javascript
aspx中利用js实现确认删除代码
Jul 22 Javascript
javascript中简单的进制转换代码实例
Oct 26 Javascript
Javascript实现获取及设置光标位置的方法
Jul 21 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
Sep 25 Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
Jan 26 Javascript
为jQuery-easyui的tab组件添加右键菜单功能的简单实例
Oct 10 Javascript
node.js通过axios实现网络请求的方法
Mar 05 Javascript
Node.js实现简单的爬取的示例代码
Jun 25 Javascript
JS基础之逻辑结构与循环操作示例
Jan 19 Javascript
Vue实现图片轮播组件思路及实例解析
May 11 Javascript
微信小程序APP的生命周期及页面的生命周期
Apr 19 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中使用全局变量的几种方法
2013/06/24 PHP
codeigniter自带数据库类使用方法说明
2014/03/25 PHP
PHP学习笔记之php文件操作
2016/06/03 PHP
javascript实现划词标记+划词搜索功能
2007/03/06 Javascript
犀利的js 函数集合
2009/06/11 Javascript
jQuery bind事件使用详解
2011/05/05 Javascript
javaScript 计算两个日期的天数相差(示例代码)
2013/12/27 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
使用JavaScript和C#中获得referer
2014/11/14 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
JavaScript实现Fly Bird小游戏
2016/12/15 Javascript
vue 实现剪裁图片并上传服务器功能
2018/03/01 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
在vue中使用express-mock搭建mock服务的方法
2018/11/07 Javascript
微信小程序引入Vant组件库过程解析
2019/08/06 Javascript
关于vue组件事件属性穿透详解
2019/10/28 Javascript
js实现内置计时器
2019/12/16 Javascript
解决Antd Table表头加Icon和气泡提示的坑
2020/11/17 Javascript
Python随机生成信用卡卡号的实现方法
2015/05/14 Python
Python判断文件和字符串编码类型的实例
2017/12/21 Python
使用Python 正则匹配两个特定字符之间的字符方法
2018/12/24 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
2019/09/06 Python
python反转列表的三种方式解析
2019/11/08 Python
python Jupyter运行时间实例过程解析
2019/12/13 Python
Django 项目通过加载不同env文件来区分不同环境
2020/02/17 Python
Python+OpenCV实现图像的全景拼接
2020/03/05 Python
Python Map 函数的使用
2020/08/28 Python
Python return语句如何实现结果返回调用
2020/10/15 Python
Willer台湾:日本高速巴士/夜行巴士预约
2017/07/09 全球购物
eBay加拿大站:eBay.ca
2019/06/20 全球购物
施华洛世奇匈牙利官网:SWAROVSKI匈牙利
2019/07/06 全球购物
电气自动化专业职业规划范文
2014/02/16 职场文书
商铺租赁意向书
2014/04/01 职场文书
信仰观后感
2015/06/03 职场文书
推广普通话的宣传语
2015/07/13 职场文书
DSP接收机前端设想
2022/04/05 无线电