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

2024-08-31 09:04

本文主要是介绍鸿蒙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-拉起支付宝的三种方式——教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1123457

相关文章

最新Spring Security的基于内存用户认证方式

《最新SpringSecurity的基于内存用户认证方式》本文讲解SpringSecurity内存认证配置,适用于开发、测试等场景,通过代码创建用户及权限管理,支持密码加密,虽简单但不持久化,生产环... 目录1. 前言2. 因何选择内存认证?3. 基础配置实战❶ 创建Spring Security配置文件

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

Python获取浏览器Cookies的四种方式小结

《Python获取浏览器Cookies的四种方式小结》在进行Web应用程序测试和开发时,获取浏览器Cookies是一项重要任务,本文我们介绍四种用Python获取浏览器Cookies的方式,具有一定的... 目录什么是 Cookie?1.使用Selenium库获取浏览器Cookies2.使用浏览器开发者工具

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取

电脑提示d3dx11_43.dll缺失怎么办? DLL文件丢失的多种修复教程

《电脑提示d3dx11_43.dll缺失怎么办?DLL文件丢失的多种修复教程》在使用电脑玩游戏或运行某些图形处理软件时,有时会遇到系统提示“d3dx11_43.dll缺失”的错误,下面我们就来分享超... 在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是缺失某个dll文件。其中,d3dx11_4

Linux下在线安装启动VNC教程

《Linux下在线安装启动VNC教程》本文指导在CentOS7上在线安装VNC,包含安装、配置密码、启动/停止、清理重启步骤及注意事项,强调需安装VNC桌面以避免黑屏,并解决端口冲突和目录权限问题... 目录描述安装VNC安装 VNC 桌面可能遇到的问题总结描js述linux中的VNC就类似于Window

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

linux批量替换文件内容的实现方式

《linux批量替换文件内容的实现方式》本文总结了Linux中批量替换文件内容的几种方法,包括使用sed替换文件夹内所有文件、单个文件内容及逐行字符串,强调使用反引号和绝对路径,并分享个人经验供参考... 目录一、linux批量替换文件内容 二、替换文件内所有匹配的字符串 三、替换每一行中全部str1为st