鸿蒙Next-支付宝SDK接入教程
App适配鸿蒙Next,开始做支付功能了,目前来说只有支付宝支持鸿蒙Next,微信还没上架,但是支付宝官方的文档跟Demo都很老,下载官方的Demo用最新版的DevEco-Studio导入都不成功。
后面在OpenHarmony三方库中心仓找到了最新的代码:
https://ohpm.openharmony.cn/#/cn/detail/@cashier_alipay%2Fcashiersdk
官方Demo地址:
代码实现
首先依赖支付宝SDK,打开终端,cd到项目文件夹,输入命令,如果ohpm没有加入环境变量的话需要手动加一下:
ohpm i @cashier_alipay/cashiersdk
把OrderInfoUtil跟SignUtils文件复制到你的项目中来,当点击界面上的支付按钮时,先请求服务器,获取支付信息,然后调用new Pay().pay(orderInfo, true)进行支付。PayInfo对象所有信息都应该服务器返回。
///这个支付信息对象的所有值都应该服务器返回
let obj = new PayInfo();//支付信息
obj.appId = "1111111111111";
obj.orderId = "1111111111"
obj.productName = "1年VIP"
obj.amount = 10
obj.notifyUrl = 'https://www.huawei.com'
obj.rsaPrivate = "MIICXQIBAA"
OrderInfoUtil.getOrderInfo(obj).then(orderInfo=>{
// orderInfo 由服务端生成
// 第二个参数 控制是否展示支付宝loading
new 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) => {
console.log(error.message);
});
})
效果图

注意事项
官方的Demo是没有notify_url这个参数的,但是我发现不加上notify_url的话,支付成功不会回调我们的业务服务器,于是我对比安卓的代码给加上的,还有notify_url必须要加在method参数后面,因为计算签名的时候参数key是需要排序的。
如果复制我的OrderInfoUtil类是已经修改过的,如果复制官方Demo中的OrderInfoUtil类需要注意一下。
/**
* 生成订单参数Map,这个Key一定要排序,例如b开头的key一定要写在c开头的key前面
* @param payInfo
* @returns
*/
static buildOrderParamMap(payInfo:PayInfo): Map<string, string> {
const keyValues = new Map<string, string>()
keyValues.set('app_id', payInfo.appId);
// 商户网站唯一订单号
let orderId =payInfo.orderId;
if(orderId == undefined || orderId==''){
orderId = util.generateRandomUUID(true);
}
// 不能包含中文,否则加密会有问题。。。。。。。。。。。。
keyValues.set('biz_content', "{\"timeout_express\":\"30m\",\"product_code\":\"QUICK_MSECURITY_PAY\",\"total_amount\":\""+
payInfo.amount+"\",\"subject\":\""+payInfo.productName+"\",\"body\":\""+
payInfo.productName+"\",\"out_trade_no\":\"" + orderId + "\"}");
keyValues.set('charset', 'utf-8');
keyValues.set('method', 'alipay.trade.app.pay');
keyValues.set('notify_url',payInfo.notifyUrl);//支付成功后,支付宝会访问这个通知URL
keyValues.set('sign_type', 'RSA2');
keyValues.set('timestamp', '2016-07-29 16:55:53');
keyValues.set('version', '1.0');
return keyValues;
}
源码下载
如果您想第一时间看我的后期文章,扫码关注公众号
安辉编程笔记 - 开发技术分享
扫描二维码加关注

鸿蒙Next-支付宝SDK接入教程的更多相关文章
- 快手、抖音、微视类短视频SDK接入教程,7步就能搞定
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由视频咖 发表于云+社区专栏 终端部分 按照如下三步操作,可以用 XCode 或者 Android Studio 编译和调试小视频 Ap ...
- cocos2dx工程中接入支付宝sdk
1. 首先去支付宝官网下载开发者文档 2. 然后按着开发者文档将支付宝的sdk导入到你的工程中,并关联到工程中,步骤入下图: (1)将从支付宝官方网站获得的支付宝的sdk的jar包拷贝到工程中的lib ...
- cocos2d-x android工程接入第三方支付宝SDK
1. 首先去支付宝官网下载开发者文档 2. 然后按着开发者文档将支付宝的sdk导入到你的工程中,并关联到工程中,步骤入下图: (1)将从支付宝官方网站获得的支付宝的sdk的jar包拷贝到工程中的lib ...
- maui BlazorWebView+本地html (vue、uniapp等都可以) 接入支付宝sdk 进行支付宝支付 开发 Android app
首先添加支付宝sdk的绑定库 nuget 包:Chi.MauiBinding.Android.AliPay 项目地址:https://github.com/realZhangChi/MauiBindi ...
- 统一SDK接入(U8SDK)——总体思路和架构
题记:很多做游戏开发的人,估计都或多或少地接过渠道SDK,什么UC,当乐,91,小米,360……据统计国内市场当前不下于100家渠道,还包括一些没有SDK的小渠道.每个渠道SDK接入的方法呢,多是大同 ...
- 【Unity游戏开发】SDK接入与集成——小白入门篇
一.简介 通常一款游戏开发到后期,一般都会涉及到第三方SDK的接入与集成,对于不熟悉SDK接入的同学来说,接SDK每次都是云里雾里,而熟悉SDK接入的同学又觉得不断地重复做接入SDK工作这样没有成就感 ...
- 阿里云视频直播PHP-SDK接入教程
阿里云视频直播PHP-SDK接入教程 阿里云 视频直播 配置 及 PHP-SDK 接入教程 准备工作 域名管理 配置鉴权 地址生成器及DEMO演 ...
- 基于IOS下的支付宝SDK的学习与使用——实现产品支付(二)
首先本篇为作者原创,仅供学习使用,以后会不断完善,精炼.阅读之前请参考 上一篇 上一篇 中详细说明了结合官方支付宝SDK,对工程环境进行的一些配置,实现了支付,本篇重点说明一下,注意事项和原理,主要 ...
- 手机游戏渠道SDK接入工具项目分享(二)万事开头难
一般接到任务后程序员们通常都开始着手进行技术调研了,但我这活是项目负责人.还有一大堆事情要先期准备,没人能帮忙. 一.人力配置 考虑的之前已经有一波人搞了大半年,但没有起色,先期也没有太大人力需求,所 ...
- SDK接入(3)之iOS内支付(In-App Purchase)接入
SDK接入(3)之iOS内支付(In-App Purchase)接入 继整理了Android平台的SDK接入过程.再来分享下iOS平台的内支付(In-App Purchase)接入,作为笔者在游戏开发 ...
随机推荐
- yb课堂 新版SSM-SpringBoot2.X 后端项目框架搭建 《二》
在线创建 https://start.spring.io/ 依赖项 Spring Boot核心包 <dependency> <groupId>org.springframewo ...
- js 获取年、月、周、当前日期第几周、这月有那几周
查看当前日期是第几周:https://wannianli.tianqi.com/today/zhou/ //获取完整的日期 var date=new Date; var y = date.getFul ...
- 如何免费提取PDF里的图片-pdfimages使用教程
写在前面 本随笔是非常菜的菜鸡写的.如有问题请及时提出. 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 动机 ...
- Nacos 高级详解:提升你的开发和部署效率
Nacos 高级 一 .服务集群 需求 服务提供者搭建集群 服务调用者,依次显示集群中各服务的信息 搭建 修改服务提供方的controller,打印服务端端口号 package com.czxy.co ...
- 《最新出炉》系列入门篇-Python+Playwright自动化测试-53- 处理面包屑(详细教程)
1.简介 面包屑(Breadcrumb),又称面包屑导航(BreadcrumbNavigation)这个概念来自童话故事"汉赛尔和格莱特",当汉赛尔和格莱特穿过森林时,不小心迷路了 ...
- RHCA rh442 004 加载模块 ulimit cgroup
模块调优 lsmod 可以看到内核加载的模块 [root@servera ~]# lsmod | grep usb [root@servera ~]# modprobe usb_storage [ro ...
- mysql中的隐式转换导致全表扫描
mysql中的隐式转换导致全表扫描 在mysql查询中,当查询条件左右两侧类型不匹配的时候会发生隐式转换,可能导致查询无法使用索引.下面分析两种隐式转换的情况 看表结构 phone为 int类型,na ...
- android:inputType 类型详细介绍
//文本类型,多为大写.小写和数字符号.android:inputType="none"//输入普通字符android:inputType="text"//输入 ...
- .NET 开源快捷的数据库文档查询和生成工具
前言 在实际项目开发中,需求变更和项目迭代是常态.要求我们能够迅速响应,对数据库结构进行相应的调整,如添加新表.更新现有表结构或增加字段等. 为了确保团队成员之间的信息同步,实时更新和维护数据库文档变 ...
- Linux下查看压缩文件内容的 10 种方法【转】
转载地址:https://zhuanlan.zhihu.com/p/91593509 1.使用 Vim 编辑器 Vim 不仅仅是编辑器,它还包含其他许多强大的功能.下面的命令将直接显示压缩归档文件的内 ...