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 {
const keyValues = new Map()
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;
}
源码下载
如果您想第一时间看我的后期文章,扫码关注公众号
安辉编程笔记 - 开发技术分享
扫描二维码加关注
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容