前端实现扫同一个二维码,可以跳转到微信小程序和支付宝小程序?

前端如何实现扫同一个二维码,可以跳转到微信小程序和支付宝小程序?

不知道大家有没有遇到过这样的需求:扫描同一个二维码,要如何区分是微信还是支付宝扫码。然后进入微信和支付宝的小程序??

就我目前所知道的有2中比较好的方式。
1、第一种直接在支付宝和微信的后台进行配置普通链接二维码规则。二维码可以携带(活参)
2、第二种自己写一个中转的界面进行过渡处理

那么这两种都有什么区别呢?我们后面再说。先来看第一种的配置方式:

配置普通链接二维码规则

进入微信公众平台 地址:微信公众平台
找到开发管理下的 ----扫普通链接二维码打开小程序
进行配置
在这里插入图片描述

配置好了后如下:在这里插入图片描述
然后将链接直接生成二维码就行了,支付宝侧操作方法一样,这里就不展示了

支付宝开放平台地址:支付宝开放平台

注意点:微信端和支付宝端配置的地址规则必须一样才行,不让就不能生成同一个二维码了。

我们配置完成之后,对小程序具体的逻辑进行处理一下,方便接收扫码跳转带过去的参数(微信和支付宝是同样的逻辑)

第二种方式自己写代码控制

前端直接调用接口进行控制,这里需要提醒一下,获取access_token和openlink请放在后端进行操作,我这里仅做演示
需要用到的两个微信接口如下:

		let AUTHURL = "https://api.weixin.qq.com/cgi-bin/token";
        let SCHEMEURL = "https://api.weixin.qq.com/wxa/generatescheme?access_token=";

在这里插入图片描述

前端代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>景区直通车</title>
  <meta name="viewport" content="width=device-width; initial-scale=1.0">
  <style>
	  .loading-container {
	    display: flex;
	    align-items: center;
	    justify-content: center;
	    height: 100vh; /* 使用视口高度 */
	  }
	   
	  .loading-icon {
	    width: 50px;
	    height: 50px;
	    border: 6px solid #f3f3f3; /* 边框颜色 */
	    border-top: 6px solid #3498db; /* 旋转时的颜色 */
	    border-radius: 50%;
	    animation: spin 2s linear infinite;
	  }
	   
	  @keyframes spin {
	    0% { transform: rotate(0deg); }
	    100% { transform: rotate(360deg); }
	  }
	   
	  .loading-container span {
	    margin-left: 16px; /* 与加载图标之间的距离 */
	    color: #333; /* 文字颜色 */
	    font-size: 18px; /* 文字大小 */
	  }
  </style>
</head>
<body>
<div class="loading-container">
  <div class="loading-icon"></div>
</div>
</body>
<!-- 引入在线jquery -->
<script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-3.5.1.min.js"></script>
<script type="text/javascript">
	debugger
	//判断是微信还是支付宝
  function isWxAlipay() {
    var userAgent = window.navigator.userAgent.toUpperCase();
    if (userAgent.indexOf('MICROMESSENGER') > 0) {
		getAuthToken()
		return ;
    }
    if (userAgent.indexOf('ALIPAYCLIENT') > 0) {
		window.open('alipays://platformapi/startapp?appId=2021001130640765&page=pages%2Fproduct%2Findex&scene=cc%3DGZZLKJ')
		return ;
	}
	
	return alert("请使用微信或者支付宝扫码进入")
  }

  

   let appPath = "/pages/product/scenicBus/index?scene=cc%3DGZZLKJ"
   var config = {
	   grant_type:"client_credential",//固定值
	   appid:"wx61e34333333370a3c",//需要修改的appid
	   secret:"xxxxxxxxxxx",//需要修改的对应appid的secret 
   }
  
  let AUTHURL = "https://api.weixin.qq.com/cgi-bin/token";
  let SCHEMEURL = "https://api.weixin.qq.com/wxa/generatescheme?access_token=";
  //获取微信auth_token
  function getAuthToken(){
	  $.ajax({
		   type: "GET",
		   url: AUTHURL,
		   data: config,
		   success(res) {
				if(res.access_token){
					getScheme(res.access_token)
				}
		   },
		   error(ERR) {
		   	alert(JSON.stringify(ERR))
		   }
	  })
  }
  
  let schemeConfig = {
		    "jump_wxa":
		    {
		        "path": appPath,//配置的路径需要进行修改
		    }
	}
	//获取Scheme
  function getScheme(access_token){
	  $.ajax({
	  		   type: "POST",
	  		   url: SCHEMEURL+access_token,
	  		   data: JSON.stringify(schemeConfig),
			   contentType: "application/json; charset=utf-8",
			   // 预期服务器返回的数据类型
			   dataType: "json",
	  		   success(res) {
				  window.open(res.openlink)
	  		   }
	  })
  }
  
   isWxAlipay()
  getAuthToken()
</script>
</html>

最后总结一下:

虽然2个方式都能实现效果,不过我还是建议使用第一种比较方便。

最后分享一下如果使用第一种方式进行生成的动态链接,我们如何生成客户需要的二维码呢?
比如我这个:需要有背景,网点名称要动态生成,生成的二维码值要不一样。大家可以参考一下我的方案:
在这里插入图片描述

下载资源如下:
在这里插入图片描述

批量动态二维码自动生成+自定义广告页

https://download.csdn.net/download/qq_39197547/88930176

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

部署 LVS(nginx)+keepalived高可用负载均衡集群

目录 一、集群的概述 1、什么是集群 2、普通集群与负载均衡集群 2.1 普通集群&#xff08;Regular Cluster&#xff09; 2.2 负载均衡集群&#xff08;Load Balancing Cluster&#xff09; 2.3 高可用集群&#xff08;High Availability Cluster&#xff09; 2.4 区别 …

网站开发之旅:从概念到实现

在我成为一名专业的网站开发者的过程中&#xff0c;我有幸参与了多个激动人心的项目。其中&#xff0c;一个我印象尤为深刻的经历是&#xff0c;开发一个名为“文案推荐网”的主题网站&#xff08;www.zimeiti.love&#xff09;。这个项目不仅让我深入了解了网站开发的各个方面…

JVM优化

1. JVM内存 JVM内存&#xff1a; 1&#xff0c;虚拟机栈&#xff1a;每个线程有一个私有的栈&#xff0c;随着线程的创建而创建。每个方法会创建一个栈帧&#xff0c;栈帧中存放了局部变量表&#xff08;基本数据类型和对象引用&#xff09;、操作数栈、方法出口等 栈的大小可…

构建cef基本框架及构建过程中的参数说明

文章目录 准备源码版本编译版本结构编译过程写了好多CEF的内容了,发现一个最初的CEF helloworld的过程都没有写,也就是如何搭建这个CEF框架。今天把这个过程记录一下。 准备源码版本 在度娘上搜cef源码,一般得到的是https://bitbucket.org/chromiumembedded/cef/这个网址,…

linux下改变主机名,永久生效的方法

hostnamectl set-hostname test 例子 #支持大写必须就要这样写 hostnamectl set-hostname 名称 --static

Docker安装主从数据库

我自己的主数据库名字 user_muster 密码是123456 从数据库 就是slave2 名字是root 密码是123456 首先开启docker后直接执行命令 docker run -d \ -p 3307:3306 \ -v /xk857/mysql/master/conf:/etc/mysql/conf.d \ -v /xk857/mysql/master/data:/var/lib/mysql \ -e MYSQL_…

长非编码RNA(lncRNA)LINC00339编码的肽段促进滋养层细胞与子宫内膜细胞粘附的研究 AbMole

胚胎植入是一个复杂的过程&#xff0c;受多种因素影响&#xff0c;尤其是子宫内膜&#xff08;endometrium&#xff09;与胚泡&#xff08;blastocyst&#xff09;之间的相互作用。子宫内膜接受性&#xff08;Endometrial Receptivity, ER&#xff09;是指子宫内膜在适当的功能…

springboot+xjar加密打包部署教程

需求背景 为了跟上时代的步伐&#xff0c;为了更好的生存。开个玩笑&#xff0c;就是心血来潮&#xff0c;使用xjar加密部署jar包&#xff0c;于是就测试一下。 xjar教程 1-maven配置文件修改 首先找到自己ideal配置的maven文件夹&#xff0c;然后找到apache-maven-3.9.3\co…

基于Pytorch搭建分布式训练环境

Pytorch系列 文章目录 Pytorch系列前言一、DDP是什么二、DPP原理terms、nodes 和 ranks等相关术语解读DDP 的局限性为什么要选择 DDP 而不是 DP代码演示1. 在一个单 GPU 的 Node 上进行训练&#xff08;baseline&#xff09;2. 在一个多 GPU 的 Node 上进行训练临门一脚&#x…

js【详解】event loop(事件循环/事件轮询)

event loop 是异步回调的实现原理 js 代码的执行过程 从前到后&#xff0c;一行一行执行如果某一行执行报错&#xff0c;则停止下面代码的执行先把同步代码执行完&#xff0c;再执行异步 event loop 图解 以下方代码为例&#xff1a; 第1步 将第 1 行代码放入调用栈 将要执行第…

【探索Linux】—— 强大的命令行工具 P.26(网络编程套接字基本概念—— socket编程接口 | socket编程接口相关函数详细介绍 )

阅读导航 引言一、socket 常见API表二、函数详细介绍01. socket()02. bind()03. listen()04. accept()05. connect()06. send()07. recv()08. close()09. select()10. getaddrinfo()11. sendto()12. recvfrom()13. setsockopt()14. getsockopt()15. shutdown()16. inet_pton()1…

Rust 编写新一代 Web 框架 Teo,同时支持 Node 和 Python,速度惊人!

大家好&#xff0c;我是渔夫。 今天分享主题&#xff0c;随着 Web 技术的迅速发展&#xff0c;开发变得愈发复杂&#xff0c;需要投入更多的时间和精力&#xff0c;今天介绍这款用 Rust 编写的新一代 Web 框架。 Web 项目开发越来越复杂&#xff0c;也让开发者带来很多挑战&a…

中国电子学会2021年6月份青少年软件编程Sc ratch图形化等级考试试卷四级真题

【 单选题 】 1.执行下列程序&#xff0c;输出的结果为&#xff1f; A&#xff1a;12 B&#xff1a;24 C&#xff1a;8 D&#xff1a;30 2.执行下列程序&#xff0c;角色说出的内容是&#xff1f; A&#xff1a;2 B&#xff1a;3 C&#xff1a;4 D&#xff1a;5 3.执行…

21-Java观察者模式 ( Observer Pattern )

Java备忘录模式 摘要实现范例 观察者模式 ( Observer Pattern ) 常用于对象间存在一对多关系时&#xff0c;比如&#xff0c;当一个对象被修改时&#xff0c;需要自动通知它的依赖对象 观察者模式属于行为型模式 摘要 1. 意图 定义对象间的一种一对多的依赖关系&#xff…

postman的替换者postcat

手册简介 Postcat 是国产的开源 api 管理工具&#xff0c;定位小团队及个人&#xff0c;有 API 相关的核心功能&#xff0c;文档、测试、管理、mock 甚至 api 分享等等功能。 目前还在持续维护中&#xff0c;欢迎大家关注并Star 支持一下~ https://github.com/Postcatlab/post…

《C缺陷和陷阱》-笔记

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 文章目录 前言 一、理解函数声明 1.(*(void(*)( ))0)( ); 2.signal 函数接受两个参数&#xff1a; 3.使用typedef 简化函数声明&#xff1a; 二、运算符的优先级…

【HTML】HTML基础8.1(表单标签)

目录 效果 基础知识 标签 ① ② 代码 效果 基础知识 表单的组成元素 表单控件用户所填写的信息提示信息提示用户需要填的信息表单域包含表单元素的区域 标签 ① <form action"" method""></form> <form>标签确定了一个表单域&…

Centos安装Miniconda

Centos安装Miniconda 一、前言二、安装1、下载Miniconda2、执行安装脚本3、加载环境变量使之生效&#xff1a;4、配置conda国内镜像&#xff1a; 三、conda常用命令1、创建环境2、查看所有环境3、删除一个环境4、激活指定环境5、退出当前环境 一、前言 需要在Centos中使用pytho…

吴恩达深度学习笔记:深度学习引言1.1-1.5

目录 第一门课&#xff1a;神经网络和深度学习 (Neural Networks and Deep Learning)第一周&#xff1a;深度学习引言(Introduction to Deep Learning)1.1 欢迎(Welcome)1.2 什么是神经网络&#xff1f;(What is a Neural Network)1.3 神经网络的监督学习(Supervised Learning …

《数字图像处理》读书笔记

本文笔记来自——数字图像处理_第三版_中_冈萨雷斯 1.使用数字图像处理领域的实例 如果光谱波段根据光子能量进行分组&#xff0c;则可得到下图的光谱&#xff0c;范围从伽马射线&#xff08;最高能量&#xff09;到无线电波&#xff08;最低能量&#xff09;。 1.1伽马射线成…