You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在移动端从Purchases中获取base plan id或offer id

移动端获取订阅具体Base Plan/Offer的解决方案

不用拆分多个产品,直接通过Billing Library v6提供的API就能拿到用户购买的具体方案信息,步骤如下:

  • 调用queryPurchasesAsync拿到Purchase列表后,对每个订阅类型的Purchase对象,调用getSubscriptionContents()方法,获取SubscriptionContents实例
  • 从SubscriptionContents中提取关键信息:
    • 调用getBasePlanId():拿到用户实际购买的base plan ID(比如你设置的monthly/6 months/annual)
    • 调用getAppliedOfferDetails():如果用户使用了优惠(比如免费试用),这里会返回OfferDetails列表,从中可以拿到offer的ID或描述信息
  • 在本地代码中维护一个映射表,把base plan ID和对应的展示名称(比如“月度Pro会员”“半年Pro会员”“年度Pro会员”)、offer ID和对应的优惠说明(比如“3天免费试用”)一一对应,把API返回的ID转换成用户能看懂的文字展示在个人主页

举个简单的伪代码示例:

// 假设拿到了某个订阅Purchase对象
val purchase: Purchase = ...
val subscriptionContents = purchase.subscriptionContents
val basePlanId = subscriptionContents.basePlanId
val appliedOffer = subscriptionContents.appliedOfferDetails.firstOrNull()

// 本地映射表
val basePlanMap = mapOf(
    "monthly" to "月度Pro会员",
    "6 months" to "半年Pro会员",
    "annual" to "年度Pro会员"
)
val offerMap = mapOf(
    "monthly-trial" to "(7天免费试用)",
    "6months-trial" to "(14天免费试用)",
    "annual-trial" to "(30天免费试用)"
)

// 组合展示文本
val displayText = "${basePlanMap[basePlanId] ?: "未知会员方案"}${appliedOffer?.let { offerMap[it.offerId] } ?: ""}"

这样就能在不拆分产品、不依赖后端API的前提下,准确展示用户购买的具体订阅方案,完全符合新版计费结构的设计。

内容的提问来源于stack exchange,提问作者psydj1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 03:16:05