鸿蒙原生支付:7 张图搞懂聚合支付与数字人民币接入

很多开发者一听到“接入支付”,第一反应往往是头大:微信 SDK 要接一套,支付宝 SDK 要接一套,现在鸿蒙原生应用来了,是不是又得再来一套?

说实话,刚开始看文档我也这么想。但深入研究了 HarmonyOS Payment Kit(鸿蒙支付服务) 后,我发现华为这次下的棋有点大。它不仅仅是一个简单的“钱包”,更像是一个系统级的支付聚合器

简单说,你接了 Payment Kit,不仅能用华为支付(Huawei Pay),还能直接在鸿蒙系统里拉起微信、支付宝,甚至直接调用数字人民币。对于咱们做业务开发的,这意味着能用一套代码逻辑,覆盖市面上主流的支付渠道,这波“造轮子”我给满分。

今天咱们就扒一扒鸿蒙支付的核心业务流程,别整那些虚头巴脑的概念,直接看图说话。


一、 核心支付模式解析

鸿蒙支付不仅支持普通的单次支付,还搞定了电商平台最头疼的“合单支付”和订阅制的“自动续费”。咱们一个个来看。

1. 商户基础支付(直连模式)

这是最经典的场景:用户买个东西,点击支付,拉起收银台,输密码,完事。

Payment Kit服务端 Payment Kit客户端 商户服务端 商户客户端 Payment Kit服务端 Payment Kit客户端 商户服务端 商户客户端 预下单 拉起收银台 支付结果处理 1.创建订单信息 2.调用预下单接口 3.返回prepayId 4.返回orderStr订单信息入参 5.拉起华为支付收银台 6.展示华为支付收银台 7.支付 8.支付处理 9.返回支付结果 10.展示支付结果页 11.返回支付结果状态 12.异步通知支付结果回调 13.使用SM2方式验签

👨‍💻 专家解读:

  • 核心逻辑:和微信/支付宝的流程非常像,核心差异在于验签方式。鸿蒙这里强制使用了 SM2 国密算法进行验签(步骤 13),安全性更高,但后端同学对接时得注意证书配置,别拿 RSA 的老套路去套,否则验签必挂。
  • 避坑点:步骤 4 返回的 orderStr 是拉起收银台的关键,千万别在客户端拼接这玩意儿,必须在服务端组装好,防止篡改。

2. 平台类商户合单支付

如果你做的是像美团、京东这样的平台,购物车里可能有好几家不同商户的商品,这时候就需要“合单支付”。

Payment Kit服务端 Payment Kit客户端 商户服务端 商户客户端 Payment Kit服务端 Payment Kit客户端 商户服务端 商户客户端 预下单 拉起收银台 支付结果处理 1.创建合单支付订单 2.调用合单支付预下单接口 3.返回prepayId 4.组建orderStr返回 5.拉起华为支付收银台 6.展示华为支付收银台 7.支付处理 8.支付处理 9.返回支付结果 10.展示支付结果页 11.返回支付结果状态 12.异步通知支付结果回调 13.使用SM2方式验签

👨‍💻 专家解读:

  • 场景:用户一次支付,后台自动分账给子商户。
  • 关键点:注意看步骤 1,这里创建的是“合单支付订单”。Payment Kit 会在后端处理复杂的资金流向,前端对于用户来说,依然只是一次支付动作。这大大降低了前端开发的复杂度,不用自己去写循环调起支付的恶心代码了。

3. 免密支付与签约

视频会员、打车软件自动扣费,靠的就是这个。

Payment Kit服务端 Payment Kit客户端 商户服务端 商户客户端 Payment Kit服务端 Payment Kit客户端 商户服务端 商户客户端 预下单 拉起收银台 签约处理 支付结果处理 1.创建订单信息 2.调用预下单接口 3.返回prepayId 4.组建orderStr并返回 5.调用支付接口,拉起华为支付收银台 6.展示收银台 7.支付并签约 8.处理支付并返回支付结果 9.异步回调支付结果,商户使用SM2方式验签 10.处理签约并返回签约结果 11.异步回调签约结果,商户使用SM2方式验签 12.展示结果 13.返回商户应用 14.处理支付结果

👨‍💻 专家解读:

  • 二合一:注意步骤 7,这是一个原子操作“支付并签约”。很多老系统是先支付,成功后再弹个窗让用户签约,转化率极低。Payment Kit 把它合并了,用户体验顺滑很多。
  • 双重回调:后端会收到两次回调(步骤 9 和 11),一个是扣款成功,一个是签约成功。千万别只处理一个,否则会导致业务状态不一致(比如扣了钱但没开通自动续费)。

4. 签约代扣(纯签约)

如果你只是想让用户先签个协议(比如水电费代扣),不涉及当场付款。

Payment Kit服务端 Payment Kit客户端 商户服务端 商户客户端 Payment Kit服务端 Payment Kit客户端 商户服务端 商户客户端 预签约 拉起收银台 签约结果处理 免密代扣 1.创建订单信息 2.调用预签约接口 3.返回preSignNo 4.组建contractStr并返回 5.拉起华为支付签约收银台 6.展示签约收银台 7.签约 8.签约处理 9.返回签约结果 10.展示签约结果页 11.返回签约结果状态 12.异步通知签约结果回调 13.使用SM2方式验签 14.调用申请免密代扣接口 15.返回代扣申请结果 16.异步通知代扣结果回调 17.使用SM2方式验签

👨‍💻 专家解读:

  • 流程分离:这个流程分为“签约”(前 13 步)和“代扣”(后 4 步)。签约是用户交互的,代扣是服务器后台静默发起的。
  • 风控:步骤 14 发起代扣时,如果金额较大或频率异常,Payment Kit 服务端可能会拒绝,业务逻辑里要做好失败重试或降级处理(发短信提醒用户手动缴费)。

5. 数字人民币支付

这可是鸿蒙的一大杀手锏,原生支持央行数字货币。

数字人民币服务端 Payment Kit客户端 商户服务端 商户客户端 数字人民币服务端 Payment Kit客户端 商户服务端 商户客户端 预下单 拉起收银台 支付结果处理 1.创建订单信息 2.调用预下单接口 3.返回订单加密信息 4.返回orderInfo订单信息入参 5.拉起数字人民币支付收银台 6.展示数字人民币支付收银台 7.支付 8.支付处理 9.返回支付结果 10.展示支付结果页 11.返回支付结果状态 12.异步通知支付结果回调

👨‍💻 专家解读:

  • 极简集成:你看这个图,比前面的都要简单。因为它是系统底层集成的。
  • 加密差异:注意步骤 3,返回的是“订单加密信息”,数字人民币的安全性要求极高,数据传输全程加密,调试时候如果抓包看到一堆乱码别慌,那是正常的。

6. 混合支付(聚合模式)

最骚的操作来了。Payment Kit 收银台不仅能付华为支付,还能当一个“路由”,把支付请求转发给微信或支付宝。

Payment Kit服务端 三方支付服务端 三方支付客户端 Payment Kit客户端 商户服务端 商户客户端 Payment Kit服务端 三方支付服务端 三方支付客户端 Payment Kit客户端 商户服务端 商户客户端 预下单 拉起通用收银台 场景1:选择华为支付 场景2:选择三方支付 基于SDK拉起 1.创建订单信息 2.调用预下单接口 3.返回prepayId 4.返回orderStr订单信息入参 5.拉起通用收银台 6.展示通用收银台(含华为支付) 1.选择华为支付方式 2.支付处理 3.返回支付结果 4.异步通知支付结果回调 5.回调结果验签 2.返回支付结果 1.选择三方支付方式 2.返回三方支付方式 3-2-1.请求三方支付 3-2-2.获取跳转三方收银台参数,传递payInfo返回 3-2-3.返回payInfo 3-2-4.使用payInfo调用ThirdPayClient接口 3-2-5.拉起三方支付收银台 3-2-6.展示收银台 3-2-7.用户支付 3-2-8.支付处理 3-2-9.返回支付结果 3-2-10.支付处理完成 3-2-11. handlePayCallback返回支付结果(非支付结果) 3-2-12.异步通知支付结果回调 3-2-13.回调结果验签 3-2-13.返回支付结果

👨‍💻 专家解读:

  • 逻辑分支:这个图稍微有点绕。关键在步骤 6,收银台展示了所有选项。如果用户选了“微信支付”(场景 2),Payment Kit 不会自己处理资金,而是把控制权交还给你的 App(步骤 2 返回三方支付方式),然后你的 App 再去调微信的接口。
  • 体验优化:虽然底层还是调的三方,但对用户来说,UI 是统一的。

7. 纯外部支付(只用收银台 UI)

如果你不想接华为支付的资金能力,只想蹭它的收银台 UI,也是可以的。

Payment Kit服务端 三方支付服务端 三方支付客户端 Payment Kit客户端 商户服务端 商户客户端 Payment Kit服务端 三方支付服务端 三方支付客户端 Payment Kit客户端 商户服务端 商户客户端 拉起通用收银台 基于URL跳转 1.拉起通用收银台 2.展示通用收银台(不含华为支付),用户选择支付方式 3.返回三方支付方式 1.请求三方支付 2.调用预下单,获取URL 3.返回URL 4.返回URL 5.请求三方支付接口 6.跳转URL 7.展示收银台 8.支付 9.支付处理 10.返回支付结果 11.异步通知支付结果回调 12.回调结果验签

👨‍💻 专家解读:

  • 空壳模式:这里的 Payment Kit 纯粹就是个 UI 皮肤。
  • URL 跳转:注意步骤 6,对于 H5 支付或 URL Scheme 跳转的支付方式,Payment Kit 提供了封装,不用你自己去处理 WebView 的重定向逻辑,这点还是挺省心的。

二、 灵魂拷问:微信 vs 支付宝 vs 鸿蒙支付

都 2026 年了,咱们技术选型得看本质。这三家到底有啥区别?

维度 微信支付 支付宝 鸿蒙支付 (Payment Kit)
定位 社交应用内置钱包 专业金融工具 系统级支付基础设施
接入形态 独立 SDK (App/JSAPI/H5) 独立 SDK (App/Wap/Page) Unified Kit (聚合 SDK)
核心优势 社交粘性大,用户覆盖率 99% 金融属性强,信用支付完善 原生流畅、数字人民币、聚合能力
支付体验 需跳转微信 App 需跳转支付宝 App 系统内拉起,部分场景免跳转
特色功能 社交红包、公众号支付 花呗、芝麻信用 人脸核身(系统级)、华为账号绑定
跨端能力 依赖微信客户端 依赖支付宝客户端 分布式能力(手机付电视订单)
验签方式 MD5/HMAC-SHA256/RSA RSA/RSA2 SM2 (国密)

异同点总结:

  • :都是基于 OAuth 2.0 的授权逻辑,都有“预下单 -> 拉起收银台 -> 异步回调”的标准三板斧。
  • :鸿蒙支付最大的不同在于**“聚合”**。它不是要取代微信支付宝,而是把它们“包”进来。对于鸿蒙原生应用开发者来说,接一个 Payment Kit 约等于接了全家桶,而且还能享受到系统级的安全验证(如系统级人脸识别,不需要 App 自己搞一套活体检测)。

写在最后

看完这些流程图,相信你对鸿蒙支付的“套路”已经心里有数了。

在我看来,Payment Kit 最香的地方不在于它多了一个支付渠道,而在于它标准化了支付流程。以前我们在 App 里要写一堆 if (channel == WECHAT) { ... } else if (channel == ALIPAY) { ... } 的胶水代码。现在,这层脏活累活华为系统帮你干了。

对于开发者来说,赶紧把 SM2 国密验签异步回调处理 这两块硬骨头啃下来,剩下的就是调 API 的事儿了。趁着鸿蒙生态还在爆发期,把支付这一环打通,绝对是提升应用转化率的关键一步。

加油,打工人!🚀

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐