HarmonyOS鸿蒙Next中请问大家如何在APP内付费,激活全部应用的代码是什么

HarmonyOS鸿蒙Next中请问大家如何在APP内付费,激活全部应用的代码是什么 请问大家如何在APP内付费,激活全部应用的代码是什么

7 回复

【解决方案】

  • IAP Kit(应用内支付服务)为开发者提供便捷的应用内支付体验和简便的接入流程,让开发者聚焦应用本身的业务能力,助力开发者商业变现。开发者应用可通过使用IAP Kit提供的系统级支付API快速启动IAP收银台,即可实现应用内支付。
  • 这边如果是希望付费解锁应用内的全部功能可以看下非消耗型商品,非消耗性商品的定义为一次性购买,永久拥有,无需消耗,可以参考示例代码

更多关于HarmonyOS鸿蒙Next中请问大家如何在APP内付费,激活全部应用的代码是什么的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


IAP Kit(应用内支付服务)为开发者提供便捷的应用内支付体验和简便的接入流程,让开发者聚焦应用本身的业务能力,助力开发者商业变现。开发者应用可通过使用IAP Kit提供的系统级支付API快速启动IAP收银台,即可实现应用内支付。

通过IAP Kit,用户可以在应用内购买各种类型的数字商品(虚拟商品) ,包括消耗型商品、非消耗型商品、自动续期订阅商品和非续期订阅商品。

使用IAP Kit功能前,请确保已开启应用内购买服务(HarmonyOS NEXT)开关。此开关是应用级别的,即所有使用IAP Kit功能的应用均需执行此步骤,具体操作请参见打开应用内购买服务(HarmonyOS NEXT)API开关

开启应用内购买服务(HarmonyOS NEXT) 开关后,开发者需进一步激活应用内购买服务(HarmonyOS NEXT),具体请参见激活服务和配置事件通知

说明

发布阶段必须申请发布证书、开启和激活“应用内购买服务”后需要重新申请发布Profile文件,并完成手动签名

这种场景建议接入 IAP Kit,并把“解锁全部功能”配置成非消耗型商品 ProductType.NONCONSUMABLE。大致流程是:AGC 创建应用并开启应用内支付,配置商品 ID;客户端调用 queryEnvironmentStatus() 检查环境,queryProducts() 拉取商品信息,用户点击购买时调用购买接口;支付成功后要校验订单/签名并调用 finishPurchase() 完成发货;应用启动时再用 queryPurchases() 查询当前权益,避免换机或重装后丢失解锁状态。

不要只在本地写一个 boolean,当作付费凭证。文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/iap-iap

盲猜下你要做什么。

作为消费者,要在APP内付费,注册华为账号,绑定付费方式,购买或订阅支付。

作为开发者,接入IAP Kit(应用内支付服务)这个的话,可以参考《支付-应用内支付服务》有“开启和激活应用内购买服务”。

IAP Kit(应用内支付服务)为开发者提供便捷的应用内支付体验和简便的接入流程,让开发者聚焦应用本身的业务能力,助力开发者商业变现。开发者应用可通过使用IAP Kit提供的系统级支付API快速启动IAP收银台,即可实现应用内支付。

通过IAP Kit,用户可以在应用内购买各种类型的数字商品(虚拟商品),包括消耗型商品、非消耗型商品、自动续期订阅商品和非续期订阅商品。

详见开发文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/iap-kit-guide

在HarmonyOS Next中,APP内付费需集成华为IAP服务,通过ProductItem定义商品,调用PayService.pay发起支付。激活全部应用功能应在购买成功后,根据返回的订单信息更新本地或远程权限标识,无统一“激活全部”代码,需根据业务逻辑实现状态变更。

在 HarmonyOS NEXT 中通过应用内购买激活全部应用(解锁完整版),核心是使用华为 IAP Kit 实现非消耗型商品购买与权益下发。简要流程如下:

  1. 配置商品
    在 AppGallery Connect 创建非消耗型商品(如“永久解锁”),获取商品 ID。

  2. 初始化与查询商品
    调用 Iap.queryProducts() 获取商品信息,展示价格。

  3. 发起购买
    调用 Iap.purchaseProduct() 传入商品 ID 和 PurchaseType.PRODUCT_NONCONSUMABLE,系统拉起支付收银台。

  4. 处理购买结果与下发权益
    onPurchaseProductResult 回调中通过 PurchaseResultCode.SUCCESS 判断成功,必须完成三步:

    • 验证签名:对返回的 purchaseDatasignature 进行服务端验证(或使用 Iap.verifyPurchaseLocally)。
    • 记录权益:将购买信息写入本地持久化存储(如 Preference),标记应用已激活。
    • 消耗处理:非消耗型商品不应调用 consumeOwnedPurchase,权益永久有效。同时调用 Iap.finishPurchase 通知 IAP 服务该订单已完成。
  5. 激活状态检查
    应用启动时调用 Iap.queryOwnedPurchases(PURCHASE_TYPE.NON_CONSUMABLE) 查询已拥有的非消耗型商品,若包含对应商品 ID 则激活全部功能,无需重复购买。

关键代码片段(Promise 风格示例):

import { iap } from '@kit.IAPKit';

async function buyFullVersion() {
  const req: iap.PurchaseRequest = {
    productType: iap.ProductType.NON_CONSUMABLE,
    productId: 'your_product_id',
    productCount: 1
  };
  const res = await iap.purchaseProduct(req);
  if (res.resultCode === iap.PurchaseResultCode.SUCCESS) {
    // 验证并保存激活状态
    await iap.finishPurchase(res.purchaseResultInfo.signature, res.purchaseResultInfo.purchaseData);
    // 写入本地激活标记
  }
}

恢复购买时,直接用 queryOwnedPurchases 获取已购商品列表即可。

回到顶部