本文基于 HarmonyOS NEXT(API 12+/HarmonyOS 5)以及腾讯最新鸿蒙版微信开放 SDK 编写,详细介绍鸿蒙应用接入微信支付的完整流程,包括开放平台申请、SDK 集成、服务端开发、客户端调起支付、支付结果回调、常见问题及最佳实践。整体接入流程需要同时完成客户端 + 服务端两部分开发。


一、前言

随着 HarmonyOS NEXT 生态逐渐完善,微信开放平台已经正式支持 HarmonyOS 应用接入微信支付。

如果你的 Android / iOS 已经完成微信支付接入,那么鸿蒙版基本可以复用:

  • 商户后台
  • 支付下单接口
  • 支付签名逻辑
  • 支付结果通知

需要新增的主要工作是:

  • 鸿蒙应用申请
  • 鸿蒙版微信开放 SDK 集成
  • 鸿蒙客户端支付调起
  • 鸿蒙支付结果回调

如果以前从未接入微信支付,那么除了客户端,还需要开发完整的服务端支付能力。


二、整体支付流程


用户点击支付
        │
        ▼
HarmonyOS APP
        │
请求服务器创建订单
        │
        ▼
业务服务器
        │
调用微信统一下单
        │
        ▼
微信支付
        │
返回预支付信息
        │
        ▼
业务服务器
        │
返回支付参数
        │
        ▼
HarmonyOS APP
        │
拉起微信支付
        │
        ▼
微信APP
        │
用户确认付款
        │
        ▼
微信服务器
        │
异步通知业务服务器
        │
        ▼
服务器更新订单状态
        │
        ▼
客户端查询订单

注意:

真正决定订单是否支付成功的是:

微信服务器异步通知(Notify)

而不是客户端返回结果。


三、接入前准备

3.1 注册微信开放平台

首先需要:

  • 微信开放平台账号
  • 企业主体认证

然后创建:

移动应用


3.2 创建 HarmonyOS 应用

需要填写:

  • Bundle ID
  • Identifier(AppID)
  • 应用名称
  • Logo
  • 应用截图

等待审核。

其中:

Bundle ID

例如:


com.demo.mall

就是:


AppScope
    app.json5

中的:


bundleName

Identifier

HarmonyOS App Identifier

可以在:

AGC

查看

App ID

例如:


1234567890123456789

申请时需要填写。


四、下载微信 OpenSDK

鸿蒙版 SDK:


@tencent/wechat_open_sdk

安装:


{
    "dependencies": {
        "@tencent/wechat_open_sdk":"1.0.0"
    }
}

然后:


Sync Now

即可下载 SDK。


五、初始化 SDK

例如:


import * as wx from '@tencent/wechat_open_sdk'

初始化:


wx.registerApp({
    appId: APP_ID
})

APP_ID:


wx123456789

就是开放平台申请得到的 AppID。

建议应用启动时只初始化一次。


六、检测微信是否安装


let installed = await wx.isWXAppInstalled()

if(installed){
    console.info("微信已安装")
}

如果没有安装:


提示用户安装微信

七、判断微信版本

部分能力要求:


微信最新版

可以:


wx.getWXAppVersion()

检查版本。


八、服务器统一下单

客户端不要:

  • 商户号
  • API Key
  • 商户证书

全部放服务器。

客户端只请求:


POST

/createOrder

服务器:

调用微信:


统一下单接口

返回:


prepay_id

然后生成:

支付参数:


appId

partnerId

prepayId

nonceStr

timeStamp

packageValue

sign

返回客户端。


九、客户端调起支付

例如:


const req = {
    appId: "",
    partnerId:"",
    prepayId:"",
    nonceStr:"",
    timeStamp:"",
    packageValue:"",
    sign:""
}

wx.pay(req)

随后:

微信 APP

会自动启动。


十、支付结果回调

支付完成:

返回:


SUCCESS

或者:


FAIL

例如:


wx.onResp((resp)=>{

})

根据:


errCode

判断。

例如:


0

表示成功。

但是:

不要立即认为订单成功。

正确做法:

客户端:


查询服务器订单状态

服务器:

收到微信通知后:


更新数据库

然后:

客户端:


轮询订单状态

十一、微信支付回调通知

微信服务器:

POST:


notify_url

例如:


https://api.demo.com/pay/notify

服务器:

验证:

  • 签名
  • 金额
  • 商户号
  • AppID

全部正确:

更新订单。


十二、订单查询

如果:

客户端:

支付成功返回失败

或者:

网络异常。

都建议:

调用:


查询订单接口

例如:


GET

/order/status

服务器:

查询数据库:


已支付

即可。


十三、异常处理

常见异常:

AppID错误


AppID Invalid

原因:

注册错误。


Bundle ID不一致

申请:


com.demo.mall

项目:


com.demo.app

不能支付。


未安装微信

提示:


请安装微信

微信版本过低

提示升级。


用户取消

错误码:


-2

属于正常行为。


签名错误


SIGN ERROR

通常:

服务器生成签名错误。


时间戳错误

服务器:

时间不同步。

建议:

NTP

同步。


十四、安全建议

不要:

客户端保存:


API KEY

不要:

客户端签名。

全部:

服务器完成。

不要:

相信客户端:


支付成功

必须:

服务器确认。


十五、支付最佳实践

推荐流程:


点击支付
      │
创建订单
      │
服务器统一下单
      │
返回支付参数
      │
拉起微信
      │
支付完成
      │
查询订单
      │
服务器确认
      │
刷新页面

这样可以避免:

  • 重复支付
  • 漏单
  • 假成功
  • 网络异常

十六、Android、iOS 与 HarmonyOS 对比

项目 Android iOS HarmonyOS NEXT
SDK Java/Kotlin Swift/OC ArkTS
AppID
商户号
服务端 共用 共用 共用
支付参数 共用 共用 共用
回调 SDK SDK SDK
微信APP调起

因此,如果已有 Android/iOS 微信支付,迁移到 HarmonyOS NEXT 时,绝大多数服务端逻辑可以直接复用,只需要新增鸿蒙客户端接入即可。


十七、总结

HarmonyOS NEXT 接入微信支付的核心流程可以概括为:

  1. 在微信开放平台申请并审核 HarmonyOS 应用(配置 Bundle ID 与 Identifier)。
  2. 集成鸿蒙版微信 OpenSDK,并完成应用注册。
  3. 客户端向业务服务器请求创建订单。
  4. 服务端调用微信统一下单接口,生成支付参数并返回客户端。
  5. 客户端调用微信 SDK 拉起微信支付。
  6. 微信服务器异步通知业务服务器支付结果,服务端完成验签并更新订单状态。
  7. 客户端通过查询订单状态确认最终支付结果,而不是仅依赖 SDK 回调。
Logo

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

更多推荐