HarmonyOS鸿蒙Next中请问月卡、年卡、体验卡这类商品,关于购买后的有效期是如何进行确定的呢?
HarmonyOS鸿蒙Next中请问月卡、年卡、体验卡这类商品,关于购买后的有效期是如何进行确定的呢? 问题描述:
请问关于有效期类型的商品,购买后的有效期是如何确认是发放的?
问题详情:
我们在进行有效期类型的商品定义的时候,例如体验卡或者月卡这一类,它既不需要进行自动续期,又是有效期类型的商品,那么:
1、我们应该将他创建为什么类型的商品?非自动续期吗?
2、如果是创建为了非自动续期,那么为什么我们在AGC商品配置的时候,看不到哪里可以确定他的使用时间呢?自动续期倒是有。
3、我看AGC配置的时候,消耗型和非自动续期型的商品创建需要填写的信息是一样的,那么这是否意味着这种一次性有效期商品得通过我们后端自己判断和设置使用时长?那么我们可以通过什么接口去查询用户购买的是什么商品?
4、基于上述疑问,请问消耗型和非自动续期型的区别在于哪里呢?
辛苦老师们帮忙解答一下。
更多关于HarmonyOS鸿蒙Next中请问月卡、年卡、体验卡这类商品,关于购买后的有效期是如何进行确定的呢?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
开发者您好,
1、根据您的描述,应该创建为非续期订阅商品 ,符合定义:用户购买后在一段时间内允许访问增值功能或内容,周期结束后禁止访问,除非再次购买自动续期订阅或非续期订阅商品。
2、非自动续费商品使用时长、有效期由开发者根据自身业务逻辑管理。
3、是的,需要开发者根据自身业务逻辑管理。查询用户购买的商品可参考:iap.queryPurchases 查询已购商品的订单信息。
4、消耗型商品是使用一次后即消耗掉,随使用减少,如游戏货币,游戏道具等;非续期订阅商品是用户购买后在一段时间内允许访问增值功能或内容,如:视频一个月会员。具体区别可以参考 IAP简介 。
更多关于HarmonyOS鸿蒙Next中请问月卡、年卡、体验卡这类商品,关于购买后的有效期是如何进行确定的呢?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
可从权益分类维度、时效归属逻辑两个层面拆分梳理相关实现方案:
- 月度会员、年度会员、限时体验卡均属于带固定使用周期的权益产品。若 AGC 平台支持配置「非自动续订订阅」品类,可直接匹配 IAP Kit 中的 ProductType.NONRENEWABLE 类型,该类型适配无需平台自动扣款、权益到期后需用户主动重新下单的业务场景;具备自动扣费续期能力的会员产品,则选用 ProductType.AUTORENEWABLE 类型。
- 若当前 AGC 商品创建界面未开放周期时长、使用有效期相关配置栏,代表产品时效无法仅依靠后台商品参数自动生成。推荐在后端业务层通过商品唯一 ID 建立时效映射规则,常见命名规范可参考 trial_7d、vip_month、vip_year 等格式。订单支付完成并完成签名校验后,由服务端统一记录用户权益生效、截止时间或剩余可用时长。
- 消耗类商品与非自动续订订阅存在明确适用边界:ProductType.CONSUMABLE 多用于点券、兑换次数、游戏道具等可重复采购、发放后即时消耗的资源;ProductType.NONCONSUMABLE 对应一次性购买、永久生效的商品;ProductType.NONRENEWABLE 则适配固定周期、无自动续费逻辑的权益。月度、年度会员类权益不建议归类为永久生效的非消耗型商品。
- 调用 iap.queryProducts (context, { productType, productIds}) 接口可拉取后台商品基础配置,接口返回内容包含商品 ID、品类类型、定价等核心数据;订阅类商品额外携带 subscriptionInfo 字段,可读取周期单位、周期数量参数。若 AGC 后台无法设置周期参数,权益时长统一以服务端预设的商品 ID 映射规则作为判定标准。
- 调取用户已有权益、历史订单记录可使用 iap.queryPurchases (context, { productType, queryType: iap.PurchaseQueryType.CURRENT_ENTITLEMENT}) 方法。支付回调携带的 purchaseData,以及该查询接口返回的 purchaseDataList,均为带签名的订单原始数据;标准流程为后端完成验签,结合订单与商品数据为用户发放对应权益,权益下发流程执行完毕后,再调用 finishPurchase (context, { productType, purchaseToken, purchaseOrderId }) 完成订单闭环。
该业务场景落地思路:商品类型可选用非自动续订订阅,但月卡、年卡、体验卡的实际有效时长,建议由服务端基于商品 ID 单独配置管控并同步前端,不可单纯依托消耗型、非自动续订两类商品参数自动计算权益时效。
具有有效期的体验卡和月卡、年卡等这类属于非续期订阅商品。
见 创建数字商品 说明
文档将依据商品是否续费的特性,划分为自动续期订阅商品以及非自动续期订阅类商品这两大类别展开阐述。其中,非自动续期订阅类商品涵盖了商品类型为消耗型、非消耗型以及非续期订阅的商品。
接入IAP支付服务这里

可以按“权益类型”和“有效期归属”来拆:
-
月卡、年卡、体验卡本质是有时长的权益。如果 AGC 里能选择“非自动续期订阅”,对应 IAP Kit 的
ProductType.NONRENEWABLE,它适合这类不自动扣费、到期后用户再手动购买的场景;自动续费会员才用ProductType.AUTORENEWABLE。 -
如果你当前 AGC 创建页没有周期/使用时长字段,说明有效期不能只靠商品配置自动推导。建议在业务侧按
productId维护规则,例如trial_7d、vip_month、vip_year。支付成功并验签后,由服务端写入用户权益的startTime/endTime或剩余天数。 -
消耗型和非自动续期的主要区别:
ProductType.CONSUMABLE适合点券、次数包、道具等可反复购买并在发放后完成/消耗的商品;ProductType.NONCONSUMABLE适合一次购买永久拥有;ProductType.NONRENEWABLE适合固定周期权益但不自动续费。月卡/年卡一般不要按永久非消耗型处理。 -
查询商品配置可以用
iap.queryProducts(context, { productType, productIds }),返回Product.id、Product.type、价格等信息;订阅类商品还会有subscriptionInfo(periodUnit、periodCount)。如果 AGC 没有周期配置,就以你自己服务端的productId映射为准。 -
查询用户当前权益/购买记录可以用
iap.queryPurchases(context, { productType, queryType: iap.PurchaseQueryType.CURRENT_ENTITLEMENT })。支付结果里的purchaseData,以及queryPurchases返回的purchaseDataList都是签名购买数据,建议服务端验签后根据其中的商品信息和订单信息发放权益;权益发放完成后再调用finishPurchase(context, { productType, purchaseToken, purchaseOrderId })完成订单。
所以这个场景的结论是:非自动续期可以作为商品类型选择,但“月卡/年卡/体验卡到底有效多久”最好由你们服务端按商品 ID 维护并下发,不能只依赖消耗型/非自动续期这两个配置项自动判断。
在HarmonyOS NEXT中,月卡、年卡、体验卡的有效期由商品配置的周期类型(如天/月/年)和周期数决定。购买成功后,服务端记录开始时间,并按周期计算到期时间;客户端通过订单或订阅状态接口查询有效期限。
HarmonyOS Next 中,月卡、年卡、体验卡这类 不需要自动续费但有效期的商品,应创建为 “非自动续期型” 商品。
- 商品类型:创建时选择“非自动续期型”,它即支持固定有效期,又不会自动扣费续期。
- 有效期配置:在 AGC 后台配置非自动续期商品时,存在“商品期限”字段(如 7 天、30 天、1 年等),购买后系统会按此发放有效期。若未找到,请检查是否选中了正确的商品类型。
- 有效期发放:有效期由华为 IAP 服务根据后台配置自动计算并下发,无需后端自行判断。可通过
OrderService.queryOrderList或OrderService.queryPurchasedProducts查询用户购买的商品 ID 和订单信息,以匹配商品对应的有效期。 - 消耗型 vs 非自动续期型:
- 消耗型:无固定有效期,购买后由应用消耗(如游戏币),可无限次重复购买。
- 非自动续期型:有固定有效期,到期失效,需用户重新购买,但不会自动续费。
所以,只要在 AGC 中正确配置“非自动续期型”商品的期限,有效期就会由系统按规则自动发放。


