vue实现微信端和企业微信端扫码

news2024/11/20 20:39:33

在这里插入图片描述
前要:微信端调用微信的扫一扫和企业微信端调用企业微信的扫一扫获取订单码查询!!

一、微信端扫一扫
这里使用的是uniapp框架调用微信的内置sdk扫码防伪溯源!http引入或者npm安装模块:

//public/index.html
<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>
            <%= htmlWebpackPlugin.options.title %>
        </title>
        <script>
            document.addEventListener('DOMContentLoaded', function() {
                document.documentElement.style.fontSize = document.documentElement.clientWidth / 20 + 'px'
            })
            var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)'))
            document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')
        </script>
        <link rel="stylesheet" href="<%= BASE_URL %>static/index.<%= VUE_APP_INDEX_CSS_HASH %>.css" />
		<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
		<script src="https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script>
		<script type="text/javascript">
			const wxShareJs = wx;
		</script>
    </head>
    <body>
        <noscript>
            <strong>Please enable JavaScript to continue.</strong>
        </noscript>
        <div id="app"></div>
        <!-- built files will be auto injected -->
    </body>
</html>
npm install  weixin-js-sdk
import 'wxShareJs ' from 'weixin-js-sdk'

引入sdk成功后就可以配置扫码触发:

getSignaTure() {
		var ua = navigator.userAgent.toLowerCase()
		var isWeixin = ua.indexOf('micromessenger') !== -1
		if (!isWeixin) {
			alert('请用微信打开连接,才可使用扫一扫')
			return;
		}
		uni.showLoading({
			title: '加载中',
			mask: true
		});
		let webUrl = window.location.href.split("#")[0];
		let data = {
			key: this.system, 
			webUrl: webUrl,
		};
		this.$callApi(
			this.$method.COMMON_MALL_NOSESSION_URL,
			this.$method.METHOD_API_MALL_GONGZHONGHAO_SIGNATURE_GET,
			"GET",
			data,
			(result) => {
				if (result.code == 0) {
					var timestamp = result.data.timestamp;
					var noncestr = result.data.noncestr;
					var signature = result.data.signature;
					var appId = result.data.app_id;
					wxShareJs.config({
						debug : false,
						appId: appId, 
						timestamp: timestamp,
						nonceStr: noncestr,
						signature: signature, 
						jsApiList: ["checkJsApi", "scanQRCode","chooseWXPay"],
					});
					uni.hideLoading();
					wxShareJs.error(function(res) {
						alert("出错了:" + res.errMsg);
					});
					wxShareJs.ready(function() {
						wxShareJs.checkJsApi({
						jsApiList: ["scanQRCode"],
					success: function(res1) {
							wxShareJs.scanQRCode({
								needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
								scanType: ["qrCode","barCode","datamatrix"], // 可以指定扫二维码还是一维码,默认二者都有
								success: function(res) {
									var result = res.resultStr;
									var result2 = "";
									if (result.indexOf("DATA_MATRIX") != -1 || result.indexOf("CODE_128") != -1) {
											result2 = result.substring(result.indexOf(",") + 1);
									}
									if(!!result.phone){
										uni.navigateTo({
											url: `/pages/sendLogisticsList/sendLogisticsList?phone=${result.phone}&system=${this.system}`
										})
									}else{
										uni.navigateTo({
											url: `/pages/sendLogisticsList/sendLogisticsList?longNumber=${result2}&system=${this.system}`
										})
									}
								},
								error: function(res) {
									alert("出错了", +res);
									console.log(res);
								},
							});
						},
					});
				});
			} else {
				uni.showToast({
					icon: "none",
					title: '获取签名失败',
				});
			}
		}
	);
}

注释: 1、 要唤起微信sdk的扫码必须要调取后端接口(配置公众号),所以我这里有不同系统的使用,多个公众号!并且还有手机号码验证码登录,所以配置后台密钥的时候要根据不同系统标识this.system来换取密钥!2、 扫码成功回调的时候跳转可能存在多种码类,所以配置scanType!3、 由于datamatrix类码回调时带有DATA_MATRIX标识!所以需要截取掉!4、 具体看官网


二、企业微信端扫一扫
其实企业微信和微信端差不多的!但是遇到一些问题:

1、 data数据改变,视图不更新的问题:降低嵌套层数,但是数据结构就是这样的!从上一个页面跳进来的数据第一次可以更新页面渲染!但是进来后本页面也有一个扫码的进口!可以获取到订单号,但是更新了data里面的数据后页面的数据没有更新,还是上一个页面进来的订单号获取的渲染数据!
解决方法
1.降低嵌套层数,数据结构就这样了,没办法!

2.使用 this.forceUpdate() 方法强制刷新,就是data数据一跟新就调用一下这强制更新一下视图就ok!
补充:forceUpdata()、set()和 nextTick() 的区别
1、forceUpdata()、$set()都用于更新视图
2、nextTick()并不是更新视图,而是等数据视图更新之后再执行某些操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/147339.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《设计模式》命令模式

《设计模式》设计模式的基本原则 《设计模式》单例模式 《设计模式》工厂模式 《设计模式》原型模式 《设计模式》建造者模式 《设计模式》适配器模式 《设计模式》桥接模式 《设计模式》装饰者模式 《设计模式》组合模式 《设计模式》外观模式 《设计模式》享元模式 《设计模式…

【Java开发】Spring Cloud 03 :Spring Boot 项目搭建

为了体验从 0 到 1 的微服务改造过程&#xff0c;我们先使用 Spring Boot 搭建一个基础版的优惠券平台项目&#xff0c;等学习到 Spring Cloud 的时候&#xff0c;我们就在这个项目之上做微服务化改造&#xff0c;将 Spring Cloud 的各个组件像添砖加瓦一样集成到项目里。上一章…

jacoco:java代码覆盖率实践

文章目录一、jacoco基本了解二、实践准备三、jacoco使用3.1 插桩3.2 dump:覆盖率文件导出3.3 report:可视化报告3.4 merge:合并覆盖率文件四、相关命令扩展4.1 javaagent4.2 dump4.3 merge4.4 report五、资源链接一、jacoco基本了解 jacoco是一款面向java的代码覆盖率工具&…

linux系统中C++中构造与析构函数以及this的使用方法

大家好&#xff0c;今天主要和大家聊一聊&#xff0c;C里面的基本语法结构以及对应的操作方法。 目录 第一&#xff1a;构造函数与析构函数 第二&#xff1a;this指针 第一&#xff1a;构造函数与析构函数 什么是构造函数&#xff1f;构造函数在对象实例化时被系统自动调用&a…

xshell连接Linux一直失败解决方法

文章目录解决对象方法配置防火墙关闭Linux防火墙关闭Windows防火墙xshell连接Linux一直失败解决方法 解决对象 可能出现以下两个问题&#xff1a; Linux防火墙已关闭和Windows防火墙已经关闭配置好 vim /etc/sysconfig/network-scripts/ifcfg-ens33 方法 配置 这个是最容易…

linux系统中实现C++中继承和重载的方法

大家好&#xff0c;今天主要和大家聊一聊&#xff0c;如何实现C中继承和重载的功能。 第一&#xff1a;C中的继承功能 面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类&#xff0c;这使得创建和维护一个应用程序变得更容易。这样做&#xff0…

CLRNet: Cross Layer Refinement Network for Lane Detection

Paper name CLRNet: Cross Layer Refinement Network for Lane Detection Paper Reading Note URL: https://arxiv.org/pdf/2203.10350.pdf TL;DR CVPR 2022 文章&#xff0c;自动驾驶公司飞步科技与浙大联合出品。lane anchor-based 方案&#xff0c;在多个数据集上取得 …

Linux中的哈希表:基于双链表的内核模块

1. 前言Linux内核中选取双向链表作为其基本的数据结构&#xff0c;并将其嵌入到其他的数据结构中&#xff0c;使得其他的数据结构不必再一一实现其各自的双链表结构。实现了双链表结构的统一&#xff0c;同时可以演化出其他复杂数据结构。本文对linux中基于双链表实现的哈希表进…

java springboot+mybatis电影售票网站管理系统前台+后台设计和实现

java springbootmybatis电影售票网站管理系统前台后台设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言…

RS—|遥感数字图像处理编程练习(python)

目录一&#xff1a;模拟计算图像直方图和累计直方图二&#xff1a;计算图像的均值、标准差、相关系数和协方差三&#xff1a;利用模板进行卷积运算四&#xff1a;获取彩色图像的直方图五&#xff1a;图像直方图均衡化一&#xff1a;模拟计算图像直方图和累计直方图 ① 调用的p…

【雷达入门 | FMCW毫米波雷达系统的性能参数分析】

本文编辑&#xff1a;调皮哥的小助理 FMCW毫米波雷达系统的性能参数主要包含&#xff1a; (1)距离估计、距离分辨率、距离精度、最大探测距离; (2)速度估计、速度分辨率、速度精度、最大不模糊速度&#xff1b; (3)角度估计、角度分辨率、角度精度、最大角度范围。 分析以及…

微服务框架SpringCloud从入门到通神(持续更新)

SpringCloud——>SpringBoot——>JavaWeb 微服务技术栈导学1 哔站up黑马程序员主讲老师&#xff0c;一上来就给介绍了SpringCloud出现的背景&#xff1a;微服务是分布式架构的一种&#xff0c;分布式架构就是要把服务做拆分&#xff0c;而SpringCloud只是解决了服务拆分式…

FTP协议原理简析

FTP服务器默认使用TCP协议的20、21端口与客户端进行通信。21端口用于建立控制连接&#xff0c;并传输FTP指令。20端口用于建立数据连接&#xff0c;传输数据流。 一&#xff1a;FTP功能简介 1&#xff1a;FTP服务器能够进行档案的传输与管理功能&#xff1b; 2&#xff1a;可以…

招生简章 | 欢迎报考中科院空天院网络信息体系技术重点实验室(七室)

官方公众号链接&#xff1a;招生简章 | 欢迎报考中科院空天院网络信息体系技术重点实验室&#xff08;七室&#xff09; 招生简章 | 欢迎报考中科院空天院网络信息体系技术重点实验室&#xff08;七室&#xff09; 中国科学院空天信息创新研究院&#xff08;简称空天院&#x…

【实战篇】38 # 如何使用数据驱动框架 D3.js 绘制常用数据图表?

说明 【跟月影学可视化】学习笔记。 图表库 vs 数据驱动框架 图表库只要调用 API 就能展现内容&#xff0c;灵活性不高&#xff0c;对数据格式要求也很严格&#xff0c;但方便数据驱动框架需要手动去完成内容的呈现&#xff0c;灵活&#xff0c;不受图表类型对应 API 的制约…

Smart Finance成为火必投票竞选项目,参与投票获海量奖励

最近&#xff0c;Huobi推出了新一期的“投票上币”活动&#xff0c;即用户可以通过HT为候选项目投票&#xff0c;在投票截止后&#xff0c;符合条件的优质项目将直接上线Huobi。而Smart Finance成为了新一期投票上币活动的竞选项目之一&#xff0c;并备受行业关注&#xff0c;与…

C++ 命令模式

什么是命令模式&#xff1f; 将请求转换为一个包含与请求相关的所有信息的独立对象。从而使你可以用不同的请求方法进行参数化&#xff0c;并且能够对请求进行排队、记录请求日志以及撤销请求操作。命令模式属于行为设计模式 如何理解命令模式 命令模式很像我们订外卖&#…

Hudi(10):Hudi集成Spark之并发控制

目录 0. 相关文章链接 1. Hudi支持的并发控制 1.1. MVCC 1.2. OPTIMISTIC CONCURRENCY 2. 使用并发写方式 3. 使用Spark DataFrame并发写入 4. 使用Delta Streamer并发写入 0. 相关文章链接 Hudi文章汇总 1. Hudi支持的并发控制 1.1. MVCC Hudi的表操作&#xff0c;如…

阿里云 EDAS Java服务日志中打印调用链TraceId

最近要搭建阿里云的日志服务SLS&#xff0c;收集服务日志&#xff0c;进行统一的搜索查询。但遇到一个问题如何在日志中打印链路的TraceId&#xff0c;本文章记录一下对EDAS免费的解决方法。 先看一下阿里官方文档 业务日志关联调用链的TraceId信息 从文档上看&#xff0c;想要…

基于SSM的资源发布系统

项目介绍&#xff1a; 该系统基于SSM技术&#xff0c;数据层为MyBatis&#xff0c;数据库使用mysql&#xff0c;MVC模式&#xff0c;B/S架构&#xff0c;具有完整的业务逻辑。系统共分为管理员&#xff0c;用户两种角色&#xff0c;主要功能&#xff1a;登陆注册&#xff0c;用…