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 操作表格实现代码(多种操作打包)
Mar 20 Javascript
jQuery1.6 类型判断实现代码
Sep 01 Javascript
基于JavaScript 下namespace 功能的简单分析
Jul 05 Javascript
JS将制定内容复制到剪切板示例代码
Feb 11 Javascript
jquery表单对象属性过滤选择器实例分析
May 18 Javascript
JavaScript中几种排序算法的简单实现
Jul 29 Javascript
基于jquery实现一个滚动的分步注册向导-附源码
Aug 26 Javascript
关于JS 预解释的相关理解
Jun 28 Javascript
vue.js语法及常用指令
Oct 29 Javascript
vue中,在本地缓存中读写数据的方法
Sep 21 Javascript
uniapp 仿微信的右边下拉选择弹出框的实现代码
Jul 12 Javascript
使用react+redux实现计数器功能及遇到问题
Jun 02 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
收听困难?教您超简便短波广播抗干扰方法!
2021/03/01 无线电
php中fgetcsv()函数用法实例
2014/11/28 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
2016/05/07 PHP
php实现转换html格式为文本格式的方法
2016/05/16 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
PHP对象的浅复制与深复制的实例详解
2017/10/26 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
很酷的星级评分系统原生JS实现
2016/08/25 Javascript
jQuery源码分析之init的详细介绍
2017/02/13 Javascript
打造通用的匀速运动框架(实例讲解)
2017/10/17 Javascript
js实现网页同时进行多个倒计时功能
2019/02/25 Javascript
详解一次Vue低版本安卓白屏问题的解决过程
2019/05/30 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
2019/07/10 jQuery
浅谈layui 数据表格前后台传值的问题
2019/09/12 Javascript
微信小程序加载机制及运行机制图解
2019/11/27 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
python解析中国天气网的天气数据
2014/03/21 Python
Python实现的监测服务器硬盘使用率脚本分享
2014/11/07 Python
详解Python中dict与set的使用
2015/08/10 Python
用python实现对比两张图片的不同
2018/02/05 Python
查看python下OpenCV版本的方法
2018/08/03 Python
python实现Flappy Bird源码
2018/12/24 Python
python3使用matplotlib绘制条形图
2020/03/25 Python
Python 线性回归分析以及评价指标详解
2020/04/02 Python
Python requests模块cookie实例解析
2020/04/14 Python
在pycharm中debug 实时查看数据操作(交互式)
2020/06/09 Python
Python批量修改xml的坐标值全部转为整数的实例代码
2020/11/26 Python
利用纯CSS3实现tab选项卡切换示例代码
2016/09/21 HTML / CSS
英国知名化妆品网站:Revolution Beauty(原TAM Beauty)
2018/02/28 全球购物
法学专业本科生自荐信范文
2013/12/17 职场文书
马智宇婚礼主持词
2014/03/22 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
病危通知单
2015/04/17 职场文书
PostgreSQL常用字符串分割函数整理汇总
2022/07/07 PostgreSQL