【HarmonyOS NEXT】鸿蒙应用接入微信支付
本文基于 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 接入微信支付的核心流程可以概括为:
- 在微信开放平台申请并审核 HarmonyOS 应用(配置 Bundle ID 与 Identifier)。
- 集成鸿蒙版微信 OpenSDK,并完成应用注册。
- 客户端向业务服务器请求创建订单。
- 服务端调用微信统一下单接口,生成支付参数并返回客户端。
- 客户端调用微信 SDK 拉起微信支付。
- 微信服务器异步通知业务服务器支付结果,服务端完成验签并更新订单状态。
- 客户端通过查询订单状态确认最终支付结果,而不是仅依赖 SDK 回调。
更多推荐




所有评论(0)