该问题请在专业群( uni-app鸿蒙化技术交流群 ) 咨询,群中有相关专业的管理员和群友。
uni-app 鸿蒙元服务里做“虚拟商品”支付,只能走华为官方的「应用内支付 IAP」,不能走“华为支付商户平台”的实物支付通道。下面按“开通什么”和“怎么开发”两步说明。
一、需要开通什么
- 登录华为 AppGallery Connect → 我的应用 → 选中元服务 → 运营 → 产品运营 → 应用内支付,开通 IAP 并配置虚拟商品(类型选消耗型或非消耗型)。
- 在 AGC 后台给元服务开通「华为帐号一键登录」能力(IAP 需要用户已登录华为帐号)。
- 本地 HBuilderX 4.87+ 新建或打开元服务项目 → manifest.json → 模块配置 → 勾选 Payment(支付) → 勾选「华为 IAP」即可,不需要在“华为支付商户平台”再做商户入网。
二、如何开发
- 权限与配置
manifest.json 里只勾「Payment(支付)」即可,元服务不需要在 module.json5 里再声明任何 payment 权限。
- 前端调用
uni-app 已封装好 IAP 接口,直接按如下代码调用即可:
// 1. 查询商品
uni.requestPayment({
provider: 'huawei-iap',
orderInfo: {
action: 'queryProduct',
productIds: ['gem_60', 'gem_120'] // 在 AGC 后台配置的虚拟商品 ID
},
success(res) {
console.log('商品信息', res.productInfo)
}
})
// 2. 发起购买
uni.requestPayment({
provider: 'huawei-iap',
orderInfo: {
action: 'purchase',
productId: 'gem_60',
developerPayload: '自定义透传字段'
},
success(res) {
// res 包含 purchaseToken、orderId 等
// 把 purchaseToken 发给服务端做校验并发货
console.log('支付成功', res)
},
fail(err) {
console.log('支付失败', err)
}
})
// 3. 消耗型商品发货后必须消耗
uni.requestPayment({
provider: 'huawei-iap',
orderInfo: {
action: 'consume',
purchaseToken: '上一步返回的 purchaseToken'
},
success() {
console.log('已消耗')
}
})
- 服务端校验(必须)
在 uniCloud 云函数或自建后台,用华为官方 Node SDK 调用 orders.verify 接口校验 purchaseToken 真伪,再给用户加虚拟币。示例代码:
// uniCloud 云函数示例
const iap = require('@hmscore/hms-iap-server')
exports.main = async (event, context) => {
const { purchaseToken } = event
const result = await iap.verifyPurchase(purchaseToken)
if (result.code === 0) return { ok: true }
return { ok: false }
}
- 测试
- 真机安装“华为应用市场”→“我的”→“设置”→“国家/地区”切到中国大陆。
- 使用沙箱帐号(AGC 后台测试帐号)支付,不会产生真实扣款。
至此,uni-app 鸿蒙元服务的虚拟支付就接入完成了。
4 个回复
knowmore (作者)
在群里咨询,官方给的答复是上面的代码示例,跟你说的有出入,不知道以哪个为准?
服务端获取支付成功回调通知,是在这里设置通知url吗
knowmore (作者)
要先请求支付,然后再发货核销?这么麻烦?!没太明白流程
DCloud_UNI_OttoJi - 日常回复 uni-app/x 问题,如果艾特我没看到,请主动私信
我看了前后的说明,目前 uni-pay 没有应用内支付的示例。这部分属于业务逻辑,你可以参考元服务 ascf 提供的文档,按照文档进行操作 https://developer.huawei.com/consumer/cn/doc/atomic-ascf/apis-iap
目前文档上流程是开通应用内购买服务、开通商户服务。如果开通过程遇到了问题,可想鸿蒙发工单进行说明。uniapp 没有封装这里的 iap,你可以尝试使用 has.createIap 发起请求,也可以尝试创建 ascf 的原生工程验证问题在哪边
knowmore (作者)
前面官方回复的不是封装了iap吗,到底应该怎么调用及实现;华为那边回复如下:
问题:请提供uniapp开发代码示例
一、准备工作(AGC后台配置)
在代码开发前,请务必确保以下三项配置已完成,这是支付成功的先决条件:
开通商户服务:进入开通商户服务完成实名认证及银行卡绑定。
激活应用内购买:开启和激活应用内购买服务。
配置商品:配置商品信息
详细开发配置流程请参考:IAP开发流程。
二、uniapp接入流程
uniapp侧的开发代码请参考接入IAP应用内支付服务,ASCF框架中IAP服务的接口has.createIap详细参数说明如下:https://developer.huawei.com/consumer/cn/doc/atomic-ascf/apis-iap#hascreateiap
2026-02-02 16:42
DCloud_UNI_OttoJi
回复 knowmore: 小助手回复的不对,我去纠正,元服务的 api 直接看 ascf 的文档就可以,具体的 api 实现有宿主提供
2026-02-02 17:01
DCloud_UNI_OttoJi
回复 knowmore: 华为的回复没啥问题,按照要求把你的情况和鸿蒙进行沟通。这个问题是鸿蒙开放的能力,不需要 uniapp 做什么,调用的是鸿蒙开放的 api
2026-02-02 17:02
knowmore (作者)
回复 DCloud_UNI_OttoJi: 谢谢,我再跟他们沟通看看
2026-02-02 17:04
Ask小助手
uni-app 鸿蒙元服务里做“虚拟商品”支付,只能走华为官方的「应用内支付 IAP」,不能走“华为支付商户平台”的实物支付通道。下面按“开通什么”和“怎么开发”两步说明。
一、需要开通什么
二、如何开发
manifest.json 里只勾「Payment(支付)」即可,元服务不需要在 module.json5 里再声明任何 payment 权限。
uni-app 已封装好 IAP 接口,直接按如下代码调用即可:
在 uniCloud 云函数或自建后台,用华为官方 Node SDK 调用
orders.verify接口校验 purchaseToken 真伪,再给用户加虚拟币。示例代码:至此,uni-app 鸿蒙元服务的虚拟支付就接入完成了。
要回复问题请先登录或注册
公告
更多>相关问题