Google Play Billing 5:多优惠场景下如何获取订阅基础套餐价格?
获取Billing 5中订阅的基础套餐价格
在Google Billing Library 5里,确实没有直接的isBasePlan()或getBasePlans()方法,但你可以通过SubscriptionOfferDetails的**getOfferType()**方法来区分基础套餐和促销优惠:
- 当
getOfferType()返回SubscriptionOfferDetails.OFFER_TYPE_BASE_PLAN时,该条目就是基础套餐对应的订阅信息; - 返回
SubscriptionOfferDetails.OFFER_TYPE_PROMOTION时,则是促销优惠。
具体实现代码
遍历SubscriptionOfferDetails列表,筛选出基础套餐后,从其定价阶段中提取价格即可:
List<SubscriptionOfferDetails> subscriptionOfferDetailsList = productDetails.getSubscriptionOfferDetails(); if (subscriptionOfferDetailsList != null) { for (SubscriptionOfferDetails offerDetails : subscriptionOfferDetailsList) { // 筛选基础套餐 if (SubscriptionOfferDetails.OFFER_TYPE_BASE_PLAN == offerDetails.getOfferType()) { // 获取基础套餐的定价阶段列表 List<PricingPhase> pricingPhases = offerDetails.getPricingPhases().getPricingPhaseList(); if (!pricingPhases.isEmpty()) { // 基础套餐通常为固定循环价格,取第一个定价阶段的格式化价格 String basePlanPrice = pricingPhases.get(0).getFormattedPrice(); // 这里可以将basePlanPrice用于展示 } } } }
补充说明
如果你的订阅配置了多个基础套餐(比如月付、年付两种不同时长的基础方案),每个基础套餐都会对应一个OFFER_TYPE_BASE_PLAN类型的SubscriptionOfferDetails,遍历后就能拿到所有基础套餐的价格。
内容的提问来源于stack exchange,提问作者Alex Busuioc
相关产品推荐
相关产品推荐

