app支付宝登录

url的app_id是商户的appid
url的redirect_uri是支付宝授权成功后跳回地址(授权成功之后会在支付宝中打开这个地址)
仅需修改app_id的值和redirect_uri的值
encodeURIComponent()是为了防止url中有特殊字符导致传参失败,必须的

doVerify(){
	let type = false
	//这是用来判断手机上是否安装了支付宝,为了避免有的人没安装
	if (plus.runtime.isApplicationExist({
			pname: 'com.eg.android.AlipayGphone',
			action: 'alipay://'
		})) {
		type = true
	} else {
		type = false
	}
	if (type) {
		let url = 'https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=商户APPID&scope=auth_userinfo&redirect_uri=跳转到的H5页面线上路径'
		let action = {
			url: 'alipays://platformapi/startapp?appId=20000067&url=' + encodeURIComponent(url)
		};
		//android和ios跳转第三方的方式是不同的所以在这里进行判断
		if(uni.getSystemInfoSync().platform == 'android'){
			plus.runtime.openURL(action.url)
		}
		if(uni.getSystemInfoSync().platform == 'ios'){
			plus.runtime.launchApplication({
					action: action.url
				})
		}
	} else {
		uni.showModal({
			title: '提示',
			content: '是否下载并安装支付宝?',
			success(res) {
				if (res.confirm) {
					//url是支付宝下载地址
					let action = {
						type: 'navigateTo',
						url: 'https://m.alipay.com'
					};
					//这里判断道理同上
					if(uni.getSystemInfoSync().platform == 'android'){
						plus.runtime.openURL(action.url)
					}
					if(uni.getSystemInfoSync().platform == 'ios'){
						plus.runtime.launchApplication({
							action: action.url
						})
					}
				} else if (res.cancel) {
					console.log('用户点击取消');
				}
			}
		});
	}
}

如果遇到了这样的问题支付宝官方也给出了解决方案,https://opendocs.alipay.com/support/04yvew?pathHash=10613137,虽然给出的解决方案界面跟现在的不一样但是方法是一样 的
在这里插入图片描述

到这里已经可以跳转到支付宝授权页面了,但是还需要返回到app,这里就需要一个中转的H5页面来做这个事情了

下面就是中转页面我是用uniapp开发的,你们也可以用其他语言开发都可以的

还有一个地方需要注意的,yingxiangli://这个地址是需要云打包后才能生效的,ios也是需要设置的(如果你用的话)
在这里插入图片描述

中转页面

<template>
	<view class="content">
		<view style="text-align: center;margin-top: 50rpx;">
			<image src="../../static/yyicon.png" class="logo_img" mode=""></image>
		</view>

		<view id="box" @click="func">返回APP</view>
		<view class="desc">您已授权登录,请点击返回APP</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				title: 'Hello',
				code: "",
			}
		},
		onLoad() {
			var code;
		},
		methods: {
			//这里是拿取支付宝返回code的地方,这里我就需要一个code,支付宝页只返回了一个code,如果你需要的参数比较多,支付宝返回的不止一个参数下面的代码就需要改一下了
			getQueryVariable(variable) {
				var query = window.location.href.substring(1);
				var vars = query.split("&");
				for (var i = 0; i < vars.length; i++) {
					var pair = vars[i].split("=");
					return pair[1];
				}
				return (false);
			},
			func() {
				this.code = this.getQueryVariable("auth_code=");
				// 判断是那种设备
				let u = navigator.userAgent;
				console.log(u);
				var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; // Android系统或者uc浏览器
				var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); // iOS系统

				// 如果为Android系统
				if (isAndroid) {
					window.location.href = "yingxiangli://?auth_code=" + this
					.code; // 注意*** 这里需要修改为刚刚设置的urlscheme,auth_code需要后端拼接。auth_code只有后端才能拿到
					window.setTimeout(function() {
						window.location.href =
						"http://www.baidu.com"; // 3s后如果不能跳转到 App,则跳转到 App 的下载地址,一般是应用宝的对应的下载地址
					}, 2000);
					return;
				}

				// ios设备:原理:判断是否认识这个协议,认识则直接跳转,不认识就在这里下载appios();
				if (isiOS) {
					let startIndex = u.indexOf('iPhone OS') + 9;
					let endIndex = u.indexOf('like Mac OS') - 1;
					let num = +u.slice(startIndex, endIndex).split('_')[0]; // 计算版本号的前面数值
					if (num < 9) {
						window.location.href = "yingxiangli://?auth_code=" + this
						.code; //  注意*** 这里需要修改为刚刚设置的urlscheme,auth_code需要后端拼接。auth_code只有后端才能拿到
					} else {
						window.location.href = " "; // universal link 链接
					}
					window.setTimeout(function() {
						window.location.href = " "; // 3s后如果不能跳转到 App,则跳转到 AppStore 的下载地址
					}, 3000);
					return;
				};
			}
		}
	}
</script>

<style>
	body {
		display: flex;
		justify-content: center;
		align-items: center;
		text-align: center;
		height: 90vh;
		font-size: .9375rem;
	}

	content {
		display: flex;
		flex-direction: column;
		justify-content: center;
		align-items: center;
	}

	.logo_img {
		width: 6.875rem;
		height: 6.875rem;
		margin-bottom: .625rem;
	}

	#box {
		width: 80%;
		height: 2rem;
		text-align: center;
		line-height: 2rem;
		border-radius: 20px;
		background-color: rgb(23, 120, 194);
		color: white;
		margin: .9375rem auto;
	}

	.desc {
		text-align: center;
		font-size: 28rpx;
		color: gray;
	}
</style>

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

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

相关文章

【c语言】扫雷(上)

先开一个test.c文件用来游戏的逻辑测试&#xff0c;在分别开一个game.c文件和game.h头文件用来实现游戏的逻辑 主要步骤&#xff1a; 游戏规则&#xff1a; 输入1&#xff08;0&#xff09;开始&#xff08;结束&#xff09;游戏&#xff0c;输入一个坐标&#xff0c;如果该坐…

UE5 蓝图编辑美化学习

虚幻引擎中干净整洁蓝图的15个提示_哔哩哔哩_bilibili 1.双击线段成节点。 好用&#xff0c;爱用 2.用序列节点 好用&#xff0c;爱用 3.用枚举。 好用&#xff0c;能避免一些的拼写错误 4.对齐节点 两点一水平线 5.节点上下贴节点 &#xff08;以前不懂&#xff0c;现在经常…

小白水平理解面试经典题目LeetCode 125 Valid Palindrome(验证回文串)

125 验证回文串 说到公司面试&#xff0c;那就是得考出高度&#xff0c;考出水平&#xff0c;什么兼顾这两者呢&#xff0c;那就得看这道 原题描述&#xff1a; 给定一个字符串&#xff0c;判断它是否是回文串。回文串是指正读和反读都一样的字符串。 输入: “A man, a pla…

C#使用DateTime.Now静态属性动态获得系统当前日期和时间

目录 一、实例 1.源码 2.生成效果 二、相关知识点 1.Thread类 &#xff08;1&#xff09;Thread.Sleep()方法 &#xff08;2&#xff09;Thread(ThreadStart) &#xff08;3&#xff09;IsBackground &#xff08;4&#xff09;Invoke( &#xff09; 2.CreateGrap…

【算法实验】实验3

实验3-1 快速排序 #include<bits/stdc.h> using namespace std; void Quicksort(int arry[],int L,int R) {if(L>R) return ;int leftL,rightR;int pivotarry[left];while(left<right){while(left<right&&arry[right]>pivot)right--;if(left<rig…

SD-WAN企业组网:实现高效、安全的跨国企业连接

在当今数字化时代&#xff0c;企业日益全球化&#xff0c;跨国办公成为常态。为了应对这一挑战&#xff0c;越来越多的企业选择采用先进的网络技术&#xff0c;其中SD-WAN&#xff08;软件定义广域网&#xff09;便是一种备受青睐的解决方案。 什么是SD-WAN企业组网&#xff1…

beego的模块篇 - I18n国际化

1. i18n 安装导入 安装该模块&#xff1a; go get github.com/beego/i18n 导入引用包&#xff1a; import ("github.com/beego/i18n" ) conf 目录下就有 locale_en-US.ini 和 locale_zh-CN.ini 两个本地化文件。 本地化文件的文件名和后缀是随意的&#xff0c;不…

鸿蒙HarmonyOS实战-ArkTS语言(基本语法)

&#x1f680;一、ArkTS语言基本语法 &#x1f50e;1.简介 HarmonyOS的ArkTS语言是一种基于TypeScript开发的语言&#xff0c;它专为HarmonyOS系统开发而设计。ArkTS语言结合了JavaScript的灵活性和TypeScript的严谨性&#xff0c;使得开发者能够快速、高效地开发出高质量的Har…

tx2开发板升级JetPack至最新

最近一个项目用到了tx2, 上面的jetpack太老了需要更新&#xff0c;很久没和开发板打交道了&#xff0c;记录一下。中间没怎么截图&#xff0c;所以可能文字居多。 准备工作 Ubuntu 18.04的机器&#xff0c;避免有坑&#xff0c;不要使用虚拟机&#xff0c;一定要是物理机&…

上海智慧岛大数据云计算中心项目正式封顶!

上海智慧岛大数据云计算中心封顶仪式现场 1月15日&#xff0c;云端股份在上海智慧岛大数据云计算中心举行封顶仪式。云之端网络&#xff08;江苏&#xff09;股份有限公司&#xff08;以下称“云端股份”&#xff09;总经理贡伟力先生&#xff0c;常务副总张靖先生等公司成员&…

孚盟云 多处SQL注入漏洞复现

0x01 产品简介 上海孚盟软件有限公司是一家外贸SaaS服务提供商,也是专业的外贸行业解决方案专业提供商。 全新的孚盟云产品,让用户可以用云模式实现信息化管理,让用户的异地办公更加流畅,大大降低中小企业在信息化上成本,用最小的投入享受大型企业级别的信息化服务,使中…

[绍棠] docxtemplater实现纯前端导出word

1.下载需要的依赖 2.util文件夹下创建doc.js文件 doc.js import docxtemplater from docxtemplater import PizZip from pizzip import JSZipUtils from jszip-utils import { saveAs } from file-saver import ImageModule from "docxtemplater-image-module-free"…

值得分享的几个免费数据采集软件

在当今信息时代&#xff0c;获取大量有价值的数据对于企业决策、学术研究或个人项目都至关重要。而数据采集软件的出现为用户提供了便捷、高效的方式&#xff0c;可以从各种来源采集所需信息。本文将专心分享六个免费的数据采集软件&#xff0c;其中强调的是147采集软件&#x…

使用Sqoop从Oracle数据库导入数据

在大数据领域&#xff0c;将数据从关系型数据库&#xff08;如Oracle&#xff09;导入到Hadoop生态系统是一项常见的任务。Sqoop是一个强大的工具&#xff0c;可以帮助轻松完成这项任务。本文将提供详细的指南&#xff0c;以及丰富的示例代码&#xff0c;帮助了解如何使用Sqoop…

Linux系统——学不动了 玩一玩

你的城市下雨了吗 curl http://wttr.in 艺术字 [rootlocalhost ~]#yum install figlet -y 已加载插件&#xff1a;fastestmirror, langpacks Loading mirror speeds from cached hostfile* base: mirrors.bfsu.edu.cn* epel: mirror.nyist.edu.cn* extras: mirrors.nju.edu.…

禅道安装使用以及整个流程的泳道图

目录 1.禅道的安装地址 2.禅道的安装 3.禅道的使用 3.1.产品经历的角色 3.2项目经理角色 3.3测试主管的角色 3.4研发角色 4.泳道图 1.禅道的安装地址 安装地址&#xff1a;项目管理软件 开源项目管理软件 免费项目管理软件 IPD管理软件 - 禅道开源项目管理软件 wind…

Java线程池实现原理及其在美团业务中的实践

Java线程池实现原理及其在美团业务中的实践 随着计算机行业的飞速发展&#xff0c;摩尔定律逐渐失效&#xff0c;多核CPU成为主流。使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器。J.U.C提供的线程池&#xff1a;ThreadPoolExecutor类&#xff0c;帮助开发人员…

如何用“CentOS7 安装Mysql”?

1、 yum安装更方便 yum install wget 2、 新建文件夹 [rootlocalhost bin]# cd /usr/local/ [rootlocalhost local]# mkdir mysql [rootlocalhost local]# cd mysql [rootlocalhost mysql]# 3、 下载并安装MySQL官方的 Yum Repository wget http://dev.mysql.com/get/mys…

【LGR-172-Div.4】洛谷入门赛 #19(A—H,c++详解!)

文章目录 【LGR-172-Div.4】洛谷入门赛 #19A.分饼干 I题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示样例解释 1样例解释 2数据范围与约定思路: 代码 B.分饼干 II题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样…

网络安全与人工智能的交叉点

网络安全和人工智能 (AI) 的联系日益紧密&#xff0c;人工智能在增强网络安全措施方面发挥着重要作用。这种集成并不新鲜&#xff0c;但随着技术的进步和网络威胁变得更加复杂&#xff0c;它已经随着时间的推移而发展。 在网络安全的早期&#xff0c;防火墙和防病毒软件等传统…