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

鸿蒙Next-拉起支付宝的三种方式——教程

鸿蒙Next-拉起支付宝的三种方式——教程

鸿蒙Next系统即将上线,应用市场逐渐丰富、很多APP都准备接入支付宝做支付功能,目前来说有三种方式拉起支付宝:通过支付宝SDK拉起、使用OpenLink拉起、传入支付宝包名使用startAbility拉起。以上的三种拉起方式都是指的Next应用,不包含元服务,元服务有自己的生态限制暂时不支持拉起第三方应用。

一、使用支付宝SDK拉起

OpenHarmony第三方仓库包有支付宝的SDK:

仓库地址:https://ohpm.openharmony.cn/#/cn/detail/@cashier_alipay%2Fcashiersdk

官方Demo地址:

https://alidocs.dingtalk.com/i/nodes/qnYMoO1rWxrkmoj2IOpZR6yaJ47Z3je9?iframeQuery=utm_source%3Dportal%26utm_medium%3Dportal_recent&rnd=0.2928087218087806
官方的Demo需要登录钉钉去请求授权,一般都能进

代码实现:

onAlipay() {///这个支付信息对象的所有值都应该服务器返回let obj = new PayInfo(); //支付信息obj.appId = "1111111111111";obj.orderId = "1111111111"obj.productName = "1年VIP"obj.amount = 10obj.notifyUrl = 'https://www.huawei.com'obj.rsaPrivate ="MIICXQIBAAKBgQC+L0rfjLl3neHleNMOsYTW8r0QXZ5RVb2p/vvY3fJNNugvJ7lo4+fdBz+LN4mDxTz4MTOhi5e2yeAqx+v3nKpNmPzC5LmDjhHZURhwbqFtIpZD51mOfno2c3MDwlrsVi6mTypbNu4uaQzw/TOpwufSLWF7k6p2pLoVmmqJzQiD0QIDAQABAoGAakB1risquv9D4zX7hCv9MTFwGyKSfpJOYhkIjwKAik7wrNeeqFEbisqv35FpjGq3Q1oJpGkem4pxaLVEyZOHONefZ9MGVChT/MNH5b0FJYWl392RZy8KCdq376Vt4gKVlABvaV1DkapL+nLh7LMo/bENudARsxD55IGObMU19lkCQQDwHmzWPMHfc3kdY6AqiLrOss+MVIAhQqZOHhDe0aW2gZtwiWeYK1wB/fRxJ5esk1sScOWgzvCN/oGJLhU3kipHAkEAysNoSdG2oWADxlIt4W9kUiiiqNgimHGMHPwp4JMxupHMTm7D9XtGUIiDijZxunHv3kvktNfWj3Yji0661zHVJwJBAM8TDf077F4NsVc9AXVs8N0sq3xzqwQD/HPFzfq6hdR8tVY5yRMb4X7+SX4EDPORKKsgnYcur5lk8MUi7r072iUCQQC8xQvUne+fcdpRyrR4StJlQvucogwjTKMbYRBDygXkIlTJOIorgudFlrKP/HwJDoY4uQNl8gQJb/1LdrKwIe7FAkBl0TNtfodGrDXBHwBgtN/t3pyi+sz7OpJdUklKE7zMSBuLd1E3O4JMzvWP9wEE7JDb+brjgK4/cxxUHUTkk592"OrderInfoUtil.getOrderInfo(obj).then(orderInfo => {// orderInfo 由服务端生成// 第二个参数 控制是否展示支付宝loadingnew Pay().pay(orderInfo, true).then((result) => {let message =`resultStatus: ${result.get('resultStatus')} memo: ${result.get('memo')} result: ${result.get('result')}`;console.log("支付结果:" + message);if (result.get('resultStatus') == '9000') { //支付成功console.log("支付成功");} else {console.log("支付失败");}}).catch((error: BusinessError) => {LogUtil.e("aLiParSdk:", error)});})
}

完整的代码可以参考后面的git仓库,详细的描述在另外一位博主上也有详细的解释:
博主链接:鸿蒙Next-支付宝SDK接入教程_怎么唤起鸿蒙版支付宝-CSDN博客

完整代码仓库地址:https://gitee.com/qq1963861722/AliPayDemo.git

效果图

在这里插入图片描述

二、使用OpenLink拉起支付宝

使用OpenLink可以实现应用之间的跳转,具体的支付宝也可以参考拉起游览器的案例进行实现

使用API: UIAbilityContext.openLink 链接:UIAbilityContext-application-接口依赖的元素及定义-ArkTS API-Ability Kit(程序框架服务)-应用框架 - 华为HarmonyOS开发者 (huawei.com)

API官方参考用法链接: 使用Deep Linking实现应用间跳转-指向性跳转-应用间跳转-Stage模型开发指导-Ability Kit(程序框架服务)-应用框架 - 华为HarmonyOS开发者 (huawei.com)

拉起支付宝代码参考:

let context = getContext(this) as common.UIAbilityContext;
let link: string = 'alipays://platformapi/startapp' //支付宝拉起的专属链接
let openLinkOptions: OpenLinkOptions = {appLinkingOnly: false,parameters: { demo_key: 'demo_value' }
};try {context.openLink(link,openLinkOptions,(err, result) => {LogUtil.e(TAG, `openLink callback error.code: ${JSON.stringify(err)}`);LogUtil.i(TAG, `openLink callback result: ${JSON.stringify(result.resultCode)}`);LogUtil.i(TAG, `openLink callback result data: ${JSON.stringify(result.want)}`);}).then(() => {LogUtil.i(TAG, `open link success.`);}).catch((err: BusinessError) => {LogUtil.e(TAG, `open link failed, errCode ${JSON.stringify(err.code)}`);});
} catch (e) {LogUtil.e(TAG, `exception occured, errCode ${JSON.stringify(e.code)}`);
}

完整代码仓库地址: https://gitee.com/qq1963861722/AliPayDemo.git

实现效果参考
在这里插入图片描述

三、使用startAbility拉起支付宝

在鸿蒙Next系统中知道应用的包名就可以通过startAbility拉起另一个应用,明确了拉起的应用使用显式Want传入包名进行拉起

使用API: UIAbilityContext.startAbility

API官方参考用法链接: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-inner-application-uiabilitycontext-V5#uiabilitycontextstartability

支付宝的包名获取方式

1.通过hdc命令进行获取(使用命令行进行获取)
hdc shell aa dump -l

hdc命令的使用链接:hdc-调试工具-开发 - 华为HarmonyOS开发者 (huawei.com)

2.通过连接真机在编译器中的Device File Browser获取包名

路径:/data/app/el2/100/database/com.alipay.mobile.client

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

代码实现:

const context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext;
let want: Want = {deviceId: '',bundleName: 'com.alipay.mobile.client',abilityName: 'EntryAbility',flags: wantConstant.Flags.FLAG_INSTALL_ON_DEMAND, //如果未安装指定的功能,请安装该功能,parameters: {//自定义参数传递页面信息}
}
context.startAbility(want)

完整代码仓库地址: https://gitee.com/qq1963861722/AliPayDemo.git

效果实现:

在这里插入图片描述

以上是支付宝在鸿蒙Next中常见的三种拉起方式,希望对其他开发人员有所帮助、若文中有不足之处望读者谅解并指出。

相关文章:

鸿蒙Next-拉起支付宝的三种方式——教程

鸿蒙Next-拉起支付宝的三种方式——教程 鸿蒙Next系统即将上线,应用市场逐渐丰富、很多APP都准备接入支付宝做支付功能,目前来说有三种方式拉起支付宝:通过支付宝SDK拉起、使用OpenLink拉起、传入支付宝包名使用startAbility拉起。以上的三种…...

Vue.js 组件化开发:父子组件通信与组件注册详解

Vue.js 组件化开发:父子组件通信与组件注册详解 简介: 在 Vue.js 的开发中,组件是构建应用的重要基础。掌握组件的创建与使用,尤其是父子组件的通信和组件的注册与命名,是开发中不可或缺的技能。本文将详细探讨这些内容…...

【HTTP、Web常用协议等等】前端八股文面试题

HTTP、Web常用协议等等 更新日志 2024年9月5日 —— 什么情况下会导致浏览器内存泄漏? 文章目录 HTTP、Web常用协议等等更新日志1. 网络请求的状态码有哪些?1)1xx 信息性状态码2)2xx 成功状态码3)3xx 重定向状态码4&…...

Datawhale x李宏毅苹果书AI夏令营深度学习详解进阶Task03

在深度学习中,批量归一化(Batch Normalization,BN)技术是一种重要的优化方法,它可以有效地改善模型的训练效果。本文将详细讨论批量归一化的原理、实现方式、在神经网络中的应用,以及如何选择合适的损失函数…...

【机器学习】任务三:基于逻辑回归与线性回归的鸢尾花分类与波士顿房价预测分析

目录 1.目的和要求 1.1 掌握回归分析的概念和使用场景 1.2 掌握机器学习回归分析进行数据预测的有效方法 1.3 掌握特征重要性分析、特征选择和模型优化的方法 2.波士顿房价预测与特征分析 2.1第一步:导入所需的模块和包 2.2 第二步:加载波士顿房价…...

【操作系统存储篇】Linux文件基本操作

目录 一、Linux目录 二、Linux文件的常用操作 三、Linux文件类型 一、Linux目录 Linux有很多目录,Linux一切皆是文件,包括进程、设备等。 相对路径:相对于当前的操作目录,文件位于哪个目录。 绝对路径 :从根目录开…...

C++ | Leetcode C++题解之第387题字符串中的第一个唯一字符

题目&#xff1a; 题解&#xff1a; class Solution { public:int firstUniqChar(string s) {unordered_map<char, int> position;queue<pair<char, int>> q;int n s.size();for (int i 0; i < n; i) {if (!position.count(s[i])) {position[s[i]] i;…...

数学建模--皮尔逊相关系数、斯皮尔曼相关系数

目录 1.总体的皮尔逊相关系数 2.样本的皮尔逊相关系数 3.对于皮尔逊相关系数的认识 4.描述性统计以及corr函数 ​编辑 5.数据导入实际操作 6.引入假设性检验 6.1简单认识 6.2具体步骤 7.p值判断法 8.检验正态分布 8.1jb检验 8.2威尔克检验&#xff1a;针对于p值进行…...

DAY87 APP 攻防-安卓逆向篇Smail 语法反编译签名重打包Activity 周期Hook 模块

1、APK 逆向-数据修改-结构&格式 2、APK 逆向-逻辑修改-Smail 语法 3、APK 逆向-视图修改-Activity&Xml #章节点&#xff1a; 1、APP 资产-内在提取&外在抓包 2、APP 逆向-反编译&删验证&重打包 3、APP 安全-存储&服务&组件&注册等 演示案例&a…...

jenkins 工具使用

使用方式 替代手动&#xff0c;自动化拉取、集成、构建、测试&#xff1b;是CI/CD持续集成、持续部署主流开发模式中重要的环节&#xff1b;必须组件 jenkins-gitlab&#xff0c;代码公共仓库服务器&#xff08;至少6G内存&#xff09;&#xff1b;jenkins-server&#xff0c;…...

使用C语言实现字符推箱子游戏

使用C语言实现字符推箱子游戏 推箱子&#xff08;Sokoban&#xff09;是一款经典的益智游戏&#xff0c;玩家通过移动角色将箱子推到目标位置。本文将带你一步步用C语言实现一个简单的字符版本的推箱子游戏。 游戏规则 玩家只能推箱子&#xff0c;不能拉箱子。只能将箱子推到…...

用SpringBoot API实现识别pdf文件是否含有表格

要使用Spring Boot API 实现一个识别 PDF 文件是否含有表格的功能&#xff0c;你可以结合 PDF 解析库&#xff08;如 Apache PDFBox&#xff09;来解析 PDF 文件内容&#xff0c;并通过分析文本或线条来判断 PDF 是否包含表格。然后使用 Spring Boot 提供的 REST API 来实现上传…...

嵌入式S3C2440:控制LED灯

发光二极管接口&#xff08;左端&#xff09;应为低电平 以LED1为例 LED1的接口为GPB5 void led_init(void) {//配置GPB5功能为输出GPBCON & ~(0x3 << 10);GPBCON | (0x1 << 10); //使GPB5输出高电平(关灯)GPBDAT | (1 << 5); }void led_on(void) {GPB…...

算法:区间dp

文章目录 一、适用场景二、基本思路步骤时间复杂度&#xff1a; 三、例题 区间动态规划&#xff08;Interval DP&#xff09;是一种用于解决某些需要处理区间或子段问题的动态规划方法&#xff0c;特别适合于问题的解可以通过子区间的解进行组合的情况。该方法的核心思想是在子…...

【14.1运行版】C++俄罗斯方块-实现欢迎界面

实现欢迎界面 #include <stdio.h>//C语言形式的输入输出 #include <graphics.h>//图形库的头文件//实现欢迎界面 void welcome(void);int main(void) {welcome();//colsegraph();return 0; }void welcome(void) {//初始化画布initgraph(550, 660);//设置窗口标题H…...

数据分析:R语言计算XGBoost线性回归模型的SHAP值

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍SHAP用途计算方法:应用加载R包导入数据数据预处理函数模型介绍 SHAP(SHapley Additive exPlanations)值是一种解释机器学习模型预测的方法。它基于博弈论中的Shapley值概念,…...

SprinBoot+Vue图书馆预约与占座微信小程序的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue3.6 uniapp代码 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平…...

云计算之大数据(上)

目录 一、Elasticsearch 1.1 产品组件 1.1.1 X-Pack 1.1.2 Beats数据采集中心 1.1.3 Logstash 1.1.4 Kibana 1.2 架构特性 1.2.1 性能 1.2.2 安全性 1.2.3 可用性 1.2.4 可扩展性 1.2.5 可维护性 1.2.6 国际化 1.3 综合检索分析 1.4 全观测 1.5 大数据检索加速…...

交友系统“陌陌”全方位解析

交友系统在现代社会中扮演着越来越重要的角色&#xff0c;尤其是随着互联网技术的发展&#xff0c;各种交友软件层出不穷。陌陌作为其中的佼佼者&#xff0c;其全方位解析对于理解交友系统的商业开发至关重要。 陌陌的核心功能是提供基于地理位置的社交服务&#xff0c;用户可…...

Android 删除开机动画

Android 删除开机动画 两种方法都是将debug.sf.nobootanimation的值改为属性1 第一种&#xff1a; frameworks/base/cmds/bootanimation/BootAnimationUtil.cpp bool bootAnimationDisabled() {char value[PROPERTY_VALUE_MAX]; // property_get("debug.sf.nobootani…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...

华为云Flexus+DeepSeek征文 | 基于Dify构建具备联网搜索能力的知识库问答助手

华为云FlexusDeepSeek征文 | 基于Dify构建具备联网搜索能力的知识库问答助手 一、构建知识库问答助手引言二、构建知识库问答助手环境2.1 基于FlexusX实例的Dify平台2.2 基于MaaS的模型API商用服务 三、构建知识库问答助手实战3.1 配置Dify环境3.2 创建知识库问答助手3.3 使用知…...

在ubuntu等linux系统上申请https证书

使用 Certbot 自动申请 安装 Certbot Certbot 是 Let’s Encrypt 官方推荐的自动化工具&#xff0c;支持多种操作系统和服务器环境。 在 Ubuntu/Debian 上&#xff1a; sudo apt update sudo apt install certbot申请证书 纯手动方式&#xff08;不自动配置&#xff09;&…...