PAYATHON 2026

鸿蒙APP接入支付宝支付SDK能否沿用现有APPID?

支付小周

结论

现有 Android、iOS 应用使用的支付宝开放平台 APPID 可以继续用于鸿蒙版,但需要满足几个条件:鸿蒙版仍属于同一业务应用和同一商户主体,并且该 APPID 已开通“App 支付”等所需能力。

APPID 标识的是支付宝开放平台中的应用,与 Android、iOS 或 HarmonyOS 等设备平台无关。支付订单仍由服务端使用该 APPID 和应用私钥签名,鸿蒙客户端负责调用支付宝鸿蒙 SDK。

如果开放平台暂时没有 HarmonyOS 选项,不要直接选择 Android 并随意填写签名。Android 应用签名通常指 APK 签名证书指纹,它与 HarmonyOS 应用签名、支付宝接口使用的 RSA2 签名都不是一回事。除非支付宝鸿蒙 SDK 的当前接入文档明确要求复用 Android 配置入口,否则应先确认是否无需新增平台信息,或者联系支付宝开放平台技术支持开通相应配置。

接入前需要确认的条件

复用现有 APPID 前,需要检查以下内容:

  1. 现有开放平台应用已经签约并开通“App 支付”能力。
  2. 鸿蒙版与原 Android、iOS 版本属于同一个产品,并非独立运营、独立结算的新应用。
  3. 服务端继续使用该应用对应的支付宝公钥、应用私钥和签名方式。
  4. 鸿蒙 SDK 支持当前使用的 HarmonyOS 版本和设备范围。
  5. 开放平台应用、签约及商户账户状态均正常。

如果鸿蒙版由不同主体运营,或者需要独立结算、权限和风控管理,更适合创建新的开放平台应用,并使用新的 APPID。

推荐接入方式

1. 复用现有开放平台应用

进入支付宝开放平台,找到 Android、iOS 当前使用的应用,核对其 APPID、App 支付签约状态和接口加签方式。

增加 HarmonyOS 客户端并不意味着需要在支付请求中伪造成 Android 应用。是否需要补充 HarmonyOS 包信息,应以当前鸿蒙支付 SDK 的接入要求为准。

2. 由服务端创建支付订单

客户端不应保存应用私钥,也不应自行拼接和签名完整的支付参数。服务端调用 alipay.trade.app.pay 生成支付宝 SDK 所需的订单字符串,然后将其返回给鸿蒙客户端。

以下是 Java 服务端的典型写法:

AlipayClient alipayClient = new DefaultAlipayClient(
    "https://openapi.alipay.com/gateway.do",
    APP_ID,
    APP_PRIVATE_KEY,
    "json",
    "UTF-8",
    ALIPAY_PUBLIC_KEY,
    "RSA2"
);

AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();

AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
model.setOutTradeNo(outTradeNo);
model.setTotalAmount("0.01");
model.setSubject("订单支付");
model.setProductCode("QUICK_MSECURITY_PAY");

request.setBizModel(model);
request.setNotifyUrl("https://example.com/alipay/notify");

AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
String orderString = response.getBody();

在生产环境中,金额、订单号和商品信息必须由服务端根据真实订单生成,不能直接采用客户端提交的数据。

3. 鸿蒙客户端调用支付 SDK

鸿蒙客户端从业务服务端取得 orderString 后,将其传给支付宝鸿蒙 SDK。SDK 的具体类名、方法名和返回值结构可能随版本变化,应按照已安装版本的配套文档调用,不要直接套用 Android 的 PayTask API。

一般调用流程如下:

鸿蒙客户端创建业务订单
    -> 业务服务端调用 alipay.trade.app.pay
    -> 服务端返回 orderString
    -> 客户端调用支付宝鸿蒙 SDK
    -> 支付宝返回客户端结果
    -> 服务端接收异步通知并验签
    -> 服务端查询并更新最终订单状态

客户端返回“支付成功”只能用于页面提示。最终支付结果必须以服务端验签后的支付宝异步通知,或者主动查询接口返回的结果为准。

Android 签名应该怎么配置

如果开放平台页面显示“Android 包名”和“Android 应用签名”,需要区分以下三种签名:

  • Android 应用签名:用于识别 APK,一般来自 Android 签名证书。
  • HarmonyOS 应用签名:用于签署鸿蒙应用,证书格式和指纹规则由鸿蒙工具链决定。
  • 支付宝接口签名:由服务端使用应用私钥完成的 RSA2 签名。

它们的用途不同,不能相互替代。

如果支付宝当前文档没有说明如何在 Android 配置项中填写 HarmonyOS 签名,就不要自行填写 .p12 密码、公钥内容或证书序列号,也不要把某个 SHA-256 指纹转换成 Android 签名值。配置错误可能造成应用审核失败、SDK 无法拉起或身份校验不通过。

只有官方接入说明明确要求“通过 Android 入口登记 HarmonyOS 应用”,并给出包名字段和证书指纹算法时,才应按照说明提取 HarmonyOS 发布证书的信息。调试证书与正式发布证书通常不同,生产配置必须使用最终发布包对应的证书。

回调验签不能省略

业务服务端收到支付宝异步通知后,需要使用支付宝公钥验签,并至少核对以下字段:

  • app_id 是否等于预期的 APPID
  • out_trade_no 是否存在且属于当前商户
  • total_amount 是否与服务端订单金额一致
  • seller_id 是否属于预期收款账户
  • trade_status 是否为业务允许处理的状态

验签通过并完成幂等处理后,才能更新订单状态。不要仅凭鸿蒙客户端的返回值发货或开通服务。

注意事项

  • 复用 APPID 不代表继续使用 Android SDK。鸿蒙客户端必须使用支付宝提供的鸿蒙 SDK,并按照对应方式集成。
  • 不要将应用私钥、商户敏感配置或完整的签名逻辑放入鸿蒙客户端。
  • 沙箱环境和生产环境的网关、账号及密钥配置应分开管理。
  • 更换应用密钥后,需要同步更新服务端私钥和开放平台配置。
  • 如果控制台强制要求选择平台,却没有 HarmonyOS 入口,应提交工单,并附上 APPID、SDK 名称、HarmonyOS 版本和控制台页面截图,请支付宝确认配置方式。
  • 支付宝开放平台的控制台字段和鸿蒙 SDK 支持范围可能发生调整。实际配置应以接入时对应版本的官方文档和平台审核要求为准。

备注:内容仅供参考。