鸿蒙Next-付出宝SDK接入教程

打印 上一主题 下一主题

主题 504|帖子 504|积分 1512

App适配鸿蒙Next,开始做付出功能了,目前来说只有付出宝支持鸿蒙Next,微信还没上架,但是付出宝官方的文档跟Demo都很老,下载官方的Demo用最新版的DevEco-Studio导入都不成功。
后面在OpenHarmony三方库中央仓找到了最新的代码:
   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
  代码实现

首先依赖付出宝SDK,打开终端,cd到项目文件夹,输入命令,如果ohpm没有加入情况变量的话需要手动加一下:
  1. ohpm i @cashier_alipay/cashiersdk
复制代码
把OrderInfoUtil跟SignUtils文件复制到你的项目中来,当点击界面上的付出按钮时,先请求服务器,获取付出信息,然后调用new Pay().pay(orderInfo, true)进行付出。PayInfo对象全部信息都应该服务器返回。
  1. ///这个支付信息对象的所有值都应该服务器返回
  2. let obj = new PayInfo();//支付信息
  3. obj.appId = "1111111111111";
  4. obj.orderId = "1111111111"
  5. obj.productName = "1年VIP"
  6. obj.amount = 10
  7. obj.notifyUrl = 'https://www.huawei.com'
  8. obj.rsaPrivate = "MIICXQIBAA"
  9. OrderInfoUtil.getOrderInfo(obj).then(orderInfo=>{
  10.     // orderInfo 由服务端生成
  11.     // 第二个参数 控制是否展示支付宝loading
  12.     new Pay().pay(orderInfo, true).then((result) => {
  13.         let message =
  14.             `resultStatus: ${result.get('resultStatus')} memo: ${result.get('memo')} result: ${result.get('result')}`;
  15.         console.log("支付结果:"+message);
  16.         if (result.get('resultStatus') == '9000') { //支付成功
  17.             console.log("支付成功");
  18.         }else{
  19.             console.log("支付失败");
  20.         }
  21.     }).catch((error: BusinessError) => {
  22.         console.log(error.message);
  23.     });
  24. })
复制代码
效果图

注意事项

官方的Demo是没有notify_url这个参数的,但是我发现不加上notify_url的话,付出成功不会回调我们的业务服务器,于是我对比安卓的代码给加上的,还有notify_url必须要加在method参数后面,由于计算签名的时间参数key是需要排序的。
如果复制我的OrderInfoUtil类是已经修改过的,如果复制官方Demo中的OrderInfoUtil类需要注意一下。
  1. /**
  2. * 生成订单参数Map,这个Key一定要排序,例如b开头的key一定要写在c开头的key前面
  3. * @param payInfo
  4. * @returns
  5. */
  6. static buildOrderParamMap(payInfo:PayInfo): Map<string, string> {
  7.     const keyValues = new Map<string, string>()
  8.     keyValues.set('app_id', payInfo.appId);
  9.     // 商户网站唯一订单号
  10.     let orderId =payInfo.orderId;
  11.     if(orderId == undefined || orderId==''){
  12.         orderId = util.generateRandomUUID(true);
  13.     }
  14.     // 不能包含中文,否则加密会有问题。。。。。。。。。。。。
  15.     keyValues.set('biz_content', "{"timeout_express":"30m","product_code":"QUICK_MSECURITY_PAY","total_amount":""+
  16.     payInfo.amount+"","subject":""+payInfo.productName+"","body":""+
  17.     payInfo.productName+"","out_trade_no":"" + orderId +  ""}");
  18.     keyValues.set('charset', 'utf-8');
  19.     keyValues.set('method', 'alipay.trade.app.pay');
  20.     keyValues.set('notify_url',payInfo.notifyUrl);//支付成功后,支付宝会访问这个通知URL
  21.     keyValues.set('sign_type', 'RSA2');
  22.     keyValues.set('timestamp', '2016-07-29 16:55:53');
  23.     keyValues.set('version', '1.0');
  24.     return keyValues;
  25. }
复制代码
源码下载

   https://github.com/ansen666/alipay_harmony_sdk
  如果您想第一时间看我的后期文章,扫码关注公众号
  1.       安辉编程笔记 - 开发技术分享
  2.              扫描二维码加关注
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

小小小幸运

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表