当前位置: 首页 > news >正文

APP支付宝授权获取code uniapp

1.点击使用plus.runtime跳转打开支付宝


//打开支付宝授权,在支付宝APP中授权后会在支付宝中跳转到你填写的h5地址//urls是授权地址可以后端拼接也可以前端写死
//以下是一个拼接示例,需修改app_id的值和redirect_uri的值即可
//app_id是商户的APPID,redirect_uri是你在支付宝中授权后的回调地址,在回调页面中你可以在路由中获取auth_codelet urls='https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=******&scope=auth_userinfo&redirect_uri=https://****.com/html';
urls=encodeURIComponent(urls);//将地址编码成浏览器访问的格式
// 判断平台
if (plus.os.name == 'Android') {plus.runtime.openURL('alipays://platformapi/startapp?appId=20000067&url=' + urls,res => {//这里写打开URL地址失败后的处理console.log(res);uni.showModal({content: '本机未检测到对应客户端,是否打开浏览器访问页面?',success: function (res) {if (res.confirm) {//plus.runtime.openURL();}}});},'com.eg.android.AlipayGphone');
} else if (plus.os.name == 'iOS') {plus.runtime.openURL('alipay://platformapi/startapp?appId=20000067&url=' + urls,res => {console.log(res);uni.showModal({content: '本机未检测到对应客户端,是否打开浏览器访问页面?',success: function (res) {if (res.confirm) {//plus.runtime.openURL(url);}}});},'com.eg.android.AlipayGphone');
}

2.给APP设置一个UrlScheme,用作从支付宝返回APP使用

HBuilder/HBuilderX自带真机运行基座的UrlSchemes为"hbuilder://",设置后从新打包才会生效

PS:ios端ios9以下需要把设置的UrlSchemes添加到白名单才可使用,否则会报错(plus.runtime.openURL 报错code:-3,msg:此功能不支持),具体添加如下:

5+App项目
在manifest.json文件的"plus"->"distribute"->"apple"下添加urlschemewhitelist节点数据如下:

"plus": {    
"distribute": {    
"apple": {    "urlschemewhitelist": [    "BaiduSSO",  "qqmusic"  ],    //...    
},    
//...    
},    
//...    
}
uni-app项目 
把上面的urlschemewhitelist节点数据放到manifest.json的"app-plus"->"distribute"->"ios"节点下 注意:保存后提交App云端打包后才能生效 或者自定义基座运行也可,列表最多可添加50个

3.编写h5回调页面,编写完成后放置到服务器上

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>汽震音乐</title><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: 4.6rem;height: 4.6rem;margin-bottom: 1rem;}.title{font-family: PingFangSC, PingFang SC;font-weight: 600;font-size: 1.2rem;color: #000000;font-style: normal;margin-bottom: 0.4rem;}#box {width: 16rem;height: 2.4rem;text-align: center;line-height: 2.4rem;border-radius: 1.2rem;background: linear-gradient( 225deg, #F1EA3D 0%, #8FEE6B 54%, #72D5E4 100%);border-radius: 0.7rem;font-family: PingFangSC, PingFang SC;font-weight: 600;font-size: 1.06rem;color: #000000;text-align: center;font-style: normal;position: fixed;bottom: 12.2rem;left: calc(50% - 8rem);}.desc {font-family: PingFangSC, PingFang SC;font-weight: 400;font-size: 0.8rem;color: #9C9C9C;font-style: normal;}</style>
</head><body><content><img src="./logo.png" class="logo_img"><div class="title">您已授权</div><div class="desc">请点击返回汽震音乐</div><div id="box" onclick="func()">返回汽震音乐</div></content>
</body><script>// 获取auth_code
function getQueryVariable(variable) {  var query = window.location.search.substring(1);  var vars = query.split("&");  for (var i = 0; i < vars.length; i++) {  var pair = vars[i].split("=");  if (pair[0] == variable) {  return pair[1];  }  }  return (false);  
}
async function copyURL(){try {await navigator.clipboard.writeText(window.location.href);alert("已复制链接请到浏览器打开");// 这里可以添加用户通知或其他UI反馈} catch (err) {alert("请点击右上角复制链接,到浏览器打开");}
}
function func() {let code = getQueryVariable("auth_code");// 判断是那种设备let u = navigator.userAgent;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 = "***music://auth_code=" + code; // 注意*** 这里需要修改为刚刚设置的urlscheme,auth_code需要后端拼接。auth_code只有后端才能拿到window.setTimeout(function () {copyURL();}, 2000);window.setTimeout(function () {window.location.href = "https://rehuocm.com/download/";   // 3s后如果不能跳转到 App,则跳转到 App 的下载地址,一般是应用宝的对应的下载地址}, 4000);return;}// ios设备:原理:判断是否认识这个协议,认识则直接跳转,不认识就在这里下载appios();if (isiOS) {window.location.href = "***music://auth_code=" + code;window.setTimeout(function () {copyURL();}, 2000);window.setTimeout(function () {window.location.href = "https://apps.apple.com/cn/app/%E6%B1%BD%E9%9C%87%E9%9F%B3%E4%B9%90/id6575360289";   // 3s后如果不能跳转到 App,则跳转到 AppStore 的下载地址}, 4000);return;};
}</script></html>

PS:支付宝里在回调页面中点击返回自己的app中非常的不灵敏,我现在还没有好的解决方法,有好的解决方法欢迎评论告诉我

4.再APP中接收支付宝中回调页面返回的code

onShow((e) => {setTimeout(function(){  var args:any = plus.runtime.arguments; //这里可以看到从后端拿过来的urlscheme 或 通用链接plus.runtime.arguments = ''; //进入之后就把urlscheme清空要不然下一次oushow时还会执行args = args.split('auth_code');console.log(args)args = args[1].slice(1);console.log(args)if(args){// 处理args参数,如直达到某新页面等console.log(args,'code');}},0);})

PS:可能会出现跳转回APP成功了,但是拿不到带回来的参数,这时我们就要在pages.json文件下找到condition这个节点删除就可以了,它回影响ios的启动

相关文章:

APP支付宝授权获取code uniapp

1.点击使用plus.runtime跳转打开支付宝 //打开支付宝授权&#xff0c;在支付宝APP中授权后会在支付宝中跳转到你填写的h5地址//urls是授权地址可以后端拼接也可以前端写死 //以下是一个拼接示例&#xff0c;需修改app_id的值和redirect_uri的值即可 //app_id是商户的APPID&…...

在Linux系统下安装、配置ETCD

在Linux系统下安装、配置ETCD&#xff08;一个分布式键值存储系统&#xff09;涉及多个步骤&#xff0c;包括下载、安装、配置、启动以及使用ETCD的常用命令。以下是对这些步骤的详细讲解&#xff0c;内容不少于2000字。 一、ETCD简介 ETCD是一个高可用的键值存储系统&#x…...

lambda 表达式可以传递引用为什么需要引用捕获

当 lambda 表达式被传递或存储在其他地方时&#xff0c;通过引用捕获可以确保它始终访问正确的外部变量。—— 引用捕获可以精确地控制被捕获的引用变量的作用域。如果一个 lambda 表达式被存储在一个容器中&#xff0c;并且在不同的时间点被调用&#xff0c;引用捕获可以确保它…...

【Java】/* 双向链表 - 底层实现 */

【难点】&#xff1a;remove、removeAllKey 一、IList package bagfive;/*** Created with IntelliJ IDEA.* Description:* User: tangyuxiu* Date: 2024-08-21* Time: 20:30*/ public interface IList<E> {//头插法void addFirst(E data);//尾插法void addLast(E data…...

Go 语言协程管理精解

1.基础 协程切换需要操作寄存器&#xff0c;这些操作需要通过汇编辅助实现。另外&#xff0c;每一个协程都有一个协程栈&#xff0c;实际上协程栈也是有结构的。汇编程序和栈结构这些概念可能大部分开发者都不太了解&#xff0c;在介绍协程管理之间&#xff0c;先简要介绍。 1…...

C库函数signal()信号处理

signal()是ANSI C信号处理函数&#xff0c;原型如下&#xff1a; #include <signal.h>typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler); signal()将信号signum的处置设置为handler&#xff0c;该handler为SIG_IGN&#xff…...

007 SpringCloudAlibaba基础使用(nacos,gateway)

文章目录 cubemall-commoncubemall-productcubemall-gateway https://nacos.io/ https://github.com/alibaba/nacos/releases/tag/1.4.1 https://github.com/alibaba/spring-cloud-alibaba https://github.com/alibaba/Nacos https://developer.aliyun.com/mvn/guide https…...

编译环境揭秘

不同平台因为偏好差异&#xff0c;编译环境的准备会有差异。对于MSVC&#xff0c;微软提供简单的VS安装界面&#xff0c;比较省心。在Ubuntu发行版&#xff0c;gcc/make等程序可能不自带&#xff0c;当需要安装这些软件时就需要不少命令。当然比较麻烦&#xff0c;提供了统一的…...

不同的字符集(ASCII、UTF-8、UTF-16/UCS-2、UTF-32/UCS-4)

来自&#xff1a;C标准库(第2版)...

STM32f407 网络接收 fpga 的 bin 文件并更新到 fpga series7(3)

STM32f407 网络接收 fpga 的 bin 文件并更新到 fpga series7(3) 简介 实验 3&#xff1a;在搭建好 tcp 服务器&#xff0c;并拟定好协议的前提下&#xff0c;接收每一个 bin 文件的块&#xff0c;配置到 fpga。 原理图 fpga fpga1 stm32 接线总结 // fpga引脚 stm32…...

JavaScript基础知识(七)

数组相关api再续前缘 arr.forEach(function) 对arr数组的每一项执行遍历操作,并且可以通过function来对相关元素进行二次操作 function: 函数,同时接收三个参数 - item: 数组中的每一项 - index: 数组每一项的下标(item的对应下标) - arr: 原数组 arr.map(function) 对数组的…...

20240821让飞凌的OK3588-C的核心板在Linux R4下挂载1TB的exFAT格式的TF卡

fdisk -l df -h df -t df -T mount 20240821让飞凌的OK3588-C的核心板在Linux R4下挂载1TB的exFAT格式的TF卡 2024/8/21 19:47 百度&#xff1a;rk3588 buildroot exFAT mount: mounting /dev/mmcblk1p1 on /mnt failed: Invalid argument Disk /dev/mmcblk1: 955 GB, 10254234…...

Java HashMap练习

JDK1.2添加&#xff0c;线程不安全&#xff0c;性能相对较好 注意&#xff1a;允许使用null作为key或者value 使用数组加链表结构&#xff0c;结合数组和链表的优点 Hash Map的基本使用 package HashMap;import text5.Student;import java.util.Collection; import java.ut…...

前后端分离项目实战-通用管理系统搭建(前端Vue3+ElementPlus,后端Springboot+Mysql+Redis)第三篇:登录功能优化

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…...

8.20 Redis ACL配置 多个用户连接同一个Redis

**一、首先通过 linux命令 redis-cli 输入用户名和密码连接redis的客户端** **二、查看用户&#xff0c;创建用户&#xff0c;设置密码操作** &#xff08;1&#xff09;**ACL LIST** 命令 可以查看到当前的权限用户 &#xff08;2&#xff09;**ACL SETUSER userName** 此…...

【C语言】static和extern的作用

本文首发于 ❄️慕雪的寒舍 简单介绍C/C中static关键字和extern关键字的作用。 1.简介 在之前的博客中&#xff0c;提到过static的三个作用&#xff0c;但是没有详细说明这三个作用的场景&#xff0c;现在回过头来记录一下。 修饰函数修饰全局变量修饰函数内变量 static还有…...

全新分支版本!微软推出Windows 11 Canary Build 27686版

已经很久没有看到 Windows 11 全新的分支版本了&#xff0c;今天微软发布 Windows 11 Canary 新版本&#xff0c;此次版本号已经转移到 Build 27xxx&#xff0c;首发版本为 Build 27686 版。 此次更新带来了多项改进&#xff0c;包括 Windows Sandbox 沙盒功能切换到 Microsof…...

【Linux】ARM服务器命令行安装虚拟机

在Arm服务器上安装虚拟机操作笔记 一、基础环境准备1、环境准备2、检查KVM支持3、启动并启用libvirtd服务4、创建虚拟网络&#xff08;可选&#xff09;5、使用virt-manager创建虚拟机&#xff08;支持KVM&#xff09;6、管理虚拟机9、监控和日志 二、软虚拟化替代方案1、查看虚…...

Android 10.0 锁屏页面忘记锁屏密码情况下点击5次解锁图标弹出锁屏密码功能实现

1. 前言 在10.0的系统ROM定制化开发中,在一些产品中带锁屏密码的功能中,系统默认是滑动解锁,但是客户会设置锁屏密码,在某些时候会 忘掉锁屏密码,导致需要进入恢复出厂设置然后才能进入系统桌面,这样就导致系统的保存的资料都丢失了,所以需要要求在锁屏密码页面在忘记解…...

Java-CompletableFuture工具类

CompletableFuture 是 Java 8 引入的一个强大的异步编程工具,它提供了对异步计算的高级支 持,包括组合多个任务的能力、处理结果、异常处理等。为了方便地使用 CompletableFuture,你 可以创建一个工具类来封装常用的操作。 CompletableFuture 工具类 下面是一个 Complet…...

C语言:递归

递归简单来说就是函数自己调用自己。 特点&#xff1a;一般代码比较简洁&#xff0c;没有出口。 例子1&#xff1a;用一个函数计算阶乘 #include<stdio.h>//不用递归 int fac(int n) {int val 1;for (int i 1; i <n;i){val * i;}return val; }//用递归 int fac1(…...

自动化测试框架pytest+allure+requests

最近复习了一下关于自动化测试的内容&#xff0c;结合[码尚教育] 相关的思路来对测试框架进行开发。 争取实现零代码来实现自动化测试环境的搭建 AutoTestFrame 介绍 AutoTestFrame是一个基于Python的自动化测试框架&#xff0c;旨在帮助测试人员快速、高效地完成测试任务。…...

Python 笔记 numpy.ndarray切片

NumPy 的 ndarray 类型提供了非常灵活的切片功能&#xff0c;可以方便地访问和操作数组中的元素。切片允许您通过指定索引来选择数组的一部分。下面是一些基本的切片操作及其解释。 一维数组的切片 对于一维数组&#xff0c;切片操作类似于 Python 列表的切片。 示例 impor…...

一、HTML5知识点精讲

一、HTML5介绍 html是用来描述网页的一种语言&#xff08;就是写网页的一种语言&#xff09;。 它和CSS&#xff0c;JS称为网页三要素。 HTML负责把元素简单呈现在网页上&#xff0c;是网页的身体CSS负责给网页元素添加各种样式&#xff0c;是网页的衣服JS负责实现各种动态、…...

【杂乱算法】前缀和与差分

前缀和 文章目录 前缀和一维应用 二维差分一维 二维扩展1、前缀和与哈希表 一维 一个数组prefix中&#xff0c;第i个元素表示nums[0]至nums[i-1]的总和&#xff0c;那么我们就称这个prefix数组是nums数组的前缀和。 prefix [ i ] ∑ j 0 i nums [ j ] \text{prefix}[i] \s…...

Arduino调试ESP32常见问题 exit status 1

问题1&#xff1a;代码上传&#xff08;烧录&#xff09;报Failed uploading: uploading error: exit status 1大概率原因&#xff1a;没有安装对应的驱动&#xff0c;我的ESP32驱动是CH340点击这里下载CH340 下载后打开&#xff0c;若出现乱码不用在意&#xff0c;点击第一个按…...

“决胜面试:高频题目与算法策略一览”

干货分享&#xff0c;感谢您的阅读&#xff01; &#xff08;暂存篇---后续会删除&#xff0c;完整版和持续更新见高频面试题基本总结回顾&#xff08;含笔试高频算法整理&#xff09;&#xff09; 备注&#xff1a;引用请标注出处&#xff0c;同时存在的问题请在相关博客留言…...

Node-RED的安装

最近对Node-RED比较感兴趣&#xff0c;因为在上OpenHarmony课程的时候&#xff0c;一直想找一个可以通过MQTT控制设备的低代码客户端解决方案。第一次指导Node-RED是在试用聆思开发板的时候&#xff0c;它的云端就是使用的Node-RED。 在安装Node-RED之前&#xff0c;请确保您的…...

java中的Collections

Java 的集合框架(Collections Framework)提供了一组标准的数据结构接口和类,用于存储和操作数据。Java 集合类位于 java.util 包中,主要包括以下几个核心接口和实现类。 1. 核心接口 1.1. Collection 接口 Collection 是集合框架的根接口,但它本身并不提供任何直接实现…...

linux Qt QkeyEvent及驱动键盘按键捕获

基于正点原子 QT中有专门的类处理键盘事件的类QKeyEvent 1.include “QKeyEvent” 查看它的说明中的描述 也就是说接受按键事件在keyPressEvent和keyReleaseEvent这两个函数&#xff0c;继续查看 重构这个函数 查看输入的QKeyEvent类&#xff0c;发现有一个方法key返回哪一个按…...

dw怎么做打开网站跳出提示/策划推广

1.下载搜狗拼音词库 wget http://hslinuxextra.googlecode.com/files/sougou-phrases-full.7z 2.用sougou-phrases-full.7z中的ibus/android.db文件替换/usr/share/ibus-pinyin/db/android.db文件。 转载于:https://www.cnblogs.com/tswcypy/p/3930848.html...

杭州住房和城乡建设局网站/爱站长尾关键词挖掘工具

企业信息化除了&#xff25;&#xff32;&#xff30;外&#xff0c;还需要什么&#xff1f; 如果ERP仅仅局限于局域网内应用&#xff0c;当然就不存在其他的问题。然而&#xff0c;当企业需要实时能够了解各地分支机构的经营状况&#xff1b;出差人员需要随时随地访问办公系统…...

免费域名服务器申请/seo优化便宜

PHP可以直接读取MongoDB GridFS中的图片并显示到页面中&#xff0c;但对PHP的压力就大了。偶然机会&#xff0c;了解到Nginx可以代理访问&#xff0c;实现过程如下&#xff1a; 1、工具准备 安装一些必要的编译工具及库&#xff0c;这里是直接从“编译安装LNMP”系列教材中摘取…...

j2ee大型网站开发框架/刚刚传来最新消息

使用Vue UI创建、管理项目 1.全局安装vue-cli 3.0 npm install -g vue/cli 2.启动vue ui 创建项目&#xff1a; vue ui 转载于:https://www.cnblogs.com/qicao/p/10713288.html...

毕业设计做网站难吗/关键词优化哪个好

| 来源&#xff1a;知乎无意间刷到的一篇文章https://zhuanlan.zhihu.com/p/998520592019.11.27 &#xff5e; 2019.12.27 入职字节整整一个月了&#xff0c;这是我人生中第一份实习&#xff0c;也是我职场生涯的第一步&#xff0c;真的很幸运能够加入字节这样一个扁平、年轻且…...

网站怎么做短信ip限定/制作免费个人网站

思维导图思维导图如下计算机体系网络结构分层概述这里进行概述如下物理层物理层上传送的单位为比特&#xff0c;规定了网络的一些电器特定&#xff0c;主要负责0,1比特流与电子信号之间的转换&#xff0c;如果没有物理层&#xff0c;0,1 构成的比特流将会无法在物理介质中传播。…...