【问题标题】:How to manage Google Billing subscription with free trial period?如何管理具有免费试用期的 Google Billing 订阅?
【发布时间】:2023-01-05 07:16:30
【问题描述】:

这是 Google Play 控制台中的当前测试设置:

  • 测试产品1
    • 订阅基础计划 1:持续时间 1 个月
    • 订阅基础计划 2:持续时间 6 个月
      • 优惠1:1周免费试用期

queryProductDetailsAsync的结果是3个offer:

  • 报价1
    • 定价阶段 1:P1M
  • 优惠2
    • 定价阶段 1:P1W(免费)
    • 定价阶段 2:P6M
  • 优惠3
    • 定价阶段 1:P6M

该应用程序动态地向用户展示所有可用的优惠,以便可以通过 Google Play 控制台远程管理优惠。

问题是要约 2 出现此外提供 3. 如果基本计划有报价并且用户有资格获得它,我想隐藏基本计划(报价 3),因为它有点多余,因为它不如 P1W (free) + P6M(报价 2)有吸引力。

另一方面,如果用户已经订阅P1W (free) + P6M并在免费试用期内取消,他们不应该获得P1W (free) + P6M,而只能获得基本计划P6M。我假设这已经由 Google Billing 管理,因为 queryProductDetailsAsync 应该只返回用户可用的优惠。

queryProductDetailsAsync 回复中,我看不到要约 2 正在使用要约 3 作为基本计划。它们显示为两个不相关的报价,这使得很难在应用程序中添加任何逻辑来隐藏基本报价。我能想到的唯一解决方案是使用offerTags,向基本计划添加一个唯一 ID,以便能够相互关联。

如果优惠 2 也可用,隐藏优惠 3 的最佳方法是什么?

【问题讨论】:

    标签: google-play-services in-app-subscription


    【解决方案1】:

    根据docs,标签似乎是谷歌打算使用的:

    标签是最多包含 20 个字符的可选标签,您可以使用它来标记或分组基本计划和报价,并在 API 中识别它们。标签可用于确定在用户有资格获得多个优惠时显示哪个优惠。您最多可以添加 20 个标签。用户看不到标签。

    提示:我们建议使用标签来识别使用开发人员确定的资格创建的优惠,以帮助在显示可供用户使用的优惠集合时区分它们。

    这似乎是将报价确定为基本计划的一部分的唯一方法。这是令人惊讶的,因为 Google Billing 已经知道该优惠是基本计划的一部分,为什么我们必须乱用自定义标签来获取该信息?更令人惊讶的是,Google Billing API 5.0 直到最近(2022 年 5 月)才进行了重新设计,但缺少这样的基本功能。

    【讨论】:

      【解决方案2】:

      2022 年 5 月,Google 重新设计了订阅。原始问题和我的回答与这些更改有关,更多详细信息here

      参考问题,最后有两种方法排除重复的基本报价.我们大多数人都会有兴趣应用这些解决方案中的一种,因为基本计划(根据定义)对用户的吸引力不如适用的优惠,对吗?

      1. 使用标签识别当前接受的答案中提到的计费 API 提供的报价并记录在here(搜索“标签”)。

      2. 使用优惠编号,在 Google Play 控制台中为任何配置的优惠设置的。基本计划没有它,而且在运行时检测起来很简单。记录here

        笔记:此字段仅为打折商品设置。对于常规基本计划,返回 null。

        示例实现(基于 Billing Client 5.1.0):

        • 通过ProductDetails.getSubscriptionOfferDetails()获取订阅优惠列表(SubscriptionOfferDetails)
        • 其中一个优惠代表订阅基本计划,SubscriptionOfferDetails 的实例包含offerId/getOfferId() 方法下的null 值。
        • TLDR:要过滤掉基本计划,我建议检查返回的订阅报价列表是否大于一个,如果是,则从中删除基本计划报价(删除 offerId == null 所在的那个)。

      【讨论】:

        猜你喜欢
        • 2018-06-09
        • 2019-12-22
        • 2021-12-07
        • 2022-06-16
        • 1970-01-01
        • 2020-08-14
        • 2019-11-24
        • 2018-04-30
        • 1970-01-01
        相关资源
        最近更新 更多