Save the date! Android Dev Summit is coming to Mountain View, CA on November 7-8, 2018.

Handbag Love WEAVON Moschino SHOULDER BAG TXHBq

借助订阅功能,您可以通过自己的应用出售内容、服务或功能,并定期自动向用户收费。 您可以轻松地通过修改现有的应用内购买结算实现来出售订阅。

本文档将重点介绍特定于订阅的实现细节,以及相关结算和业务模式的一些策略。

  • 借助订阅功能,您可以出售商品,并以各种间隔定期向用户收费。
  • 您可以为按月和按年订阅提供一个可配置的试用期。
  • 您可以通过 Developer Console 或使用 Google Play Developer API 管理订阅。
  • 用户从您的应用内(而不是直接从 Google Play)购买订阅。
  • 用户可以在当前订阅处于有效期时续订订阅。
  • 用户可以在订阅期中段升级或降级订阅。 旧订阅的费用按比例收取,而未使用部分将应用到替换订阅。
  • 您可以推迟特定用户订阅的结算来管理帐户或者提供奖励。

概览

订阅是应用内购买结算中提供的一种商品类型,利用订阅,您可以通过自己的应用出售内容、服务或功能,并以您指定的间隔定期自动向用户收费。 您可以从任意类型的应用或游戏出售对几乎任意类型数字内容的订阅。

您可以使用 Developer Console 配置和发布订阅,然后从 Android 设备上安装的应用出售这些订阅,就像出售其他应用内商品一样。 在 Developer Console 中,您可以创建订阅商品并将其添加到商品列表,然后为每个订阅设置价格和可选试用期,选择结算间隔,最后发布。 如需了解有关使用 Developer Console 的详细信息,请参阅配置订阅商品

当用户在您的应用中购买订阅时,Google Play 会处理所有结算详情,因此,您的应用不必直接处理任何财务交易。 Google Play 将通过 Google Payments 处理订阅的所有付款,就像处理标准应用内商品和应用购买一样。这样可以确保为您的用户提供一致、熟悉的购买流。

在用户购买订阅后,他们可以从 Play 商店应用的 My Apps 屏幕或应用的商品详情页查看和取消订阅。 如需了解有关处理用户取消的详细信息,请参阅订阅取消

除了客户端 API 调用外,您还可以为应用内购买结算使用服务器端 API,以便为订阅购买者提供内容的扩展访问权限(例如从您的网站或其他服务访问)。利用服务器端 API,您可以在用户登录您的其他服务时验证订阅的状态。 如需了解有关 API 的详细信息,请参阅 Google Play Developer API

您还可以在自己的 Android 应用内壮大现有的外部订阅者群体。

  • 例如,如果您在网站上出售订阅,则可以将自己的业务逻辑添加到 Android 应用中以确定用户是否已经在其他地方购买某个订阅,并在用户已经购买的情况下向他们提供内容的访问权限,而如果没有购买,您则可以从 Google Play 提供订阅购买。
  • 您可以根据自己的需要实现在不同的应用或商品间共享订阅的解决方案。 例如,您可以通过按月或者按年付费的形式出售让订阅者可以访问整个系列的应用、游戏或其他内容的订阅。 要实现这种解决方案,您可以将自己的业务逻辑添加到应用中以确定用户是否已经购买给定订阅,如果用户已经购买,则向他们提供内容的访问权限。

一般而言,订阅和标准应用内商品适用相同的基本政策和条款,不过,也存在一些不同。 如需了解有关当前政策和条款的完整信息,请阅读政策文档

要详细了解订阅的最低系统要求,请参阅版本说明

配置订阅商品

要创建和管理订阅,您可以使用 Developer Console 为应用设置商品列表,然后为每个订阅商品配置以下属性:

  • 购买类型:始终设置为 Subscription
  • 订阅 ID:订阅的标识符
  • 发布状态:已取消发布/已发布
  • 语言:用于显示订阅的默认语言
  • 标题:订阅商品的标题
  • 说明:向用户提供的订阅详情
  • 价格:每个重复周期的默认订阅价格
  • 重复周期:结算周期的间隔
  • 其他币种的价格(可以自动填充)

要详细了解如何在 Developer Console 中添加和配置商品,请参阅管理应用内购买结算

您也可以使用 Google Play Developer API 创建和管理订阅。

订阅定价

在 Developer Console 中创建订阅时,您可以使用任何可用币种设置订阅的价格。 每个订阅都必须有一个不等于零的价格。 您可以为相同内容的多个订阅设置不同的价格 — 例如,您可以为按年订阅提供一个相对于按月订阅的折扣。

重要说明:要更改订阅的价格,您可以用新价格发布一个新订阅商品 ID,然后在应用(而不是原始商品)中提供此订阅。 已经购买的用户将继续支付原始价格,但是新用户将以新价格支付。

用户结算

在 Developer Console 中,您可以配置订阅商品,并以您选择的间隔定期自动向用户收费。

  • 按周 — Google Play 将在购买时从客户的 Google Payments 帐户中扣除费用,此后将每周扣除一次。
  • 按月 — Google Play 将在购买时从客户的 Google Payments 帐户中扣除费用,此后将每月扣除一次(确切结算间隔可能会随着时间延长略有不同)。
  • 3 个月 — Google Play 将在购买时从客户的 Google Payments 帐户中扣除费用,此后将每三个月扣除一次(确切结算间隔可能会随着时间延长略有不同)。
  • 6 个月 — Google Play 将在购买时从客户的 Google Payments 帐户中扣除费用,此后将每六个月扣除一次(确切结算间隔可能会随着时间延长略有不同。
  • 按年 — Google Play 将在购买时从客户的 Google Payments 帐户中扣除费用,此后将在每年的相同日期扣除一次。
  • 按赛季 — Google Play 将在每个“赛季”的开始从客户的 Google Payments 帐户中扣除费用(您可以指定赛季开始日期和结束日期)。 这种方式适用于季节性内容(例如体育相关内容)的按年购买。 订阅的有效期为整个赛季,并在下一年赛季开始时重新开始。

结算将以您为订阅指定的间隔和价格无限期持续下去。 在每次订阅续订时,Google Play 都会自动从用户帐户中扣除费用,然后通过电子邮件通知用户扣款情况。 对于按月和按年订阅,结算周期将根据购买日期始终与订阅匹配。 (季节性订阅每年将在赛季的第一天扣款一次。)

在确认订阅付款后,Google Play 将通过 In-app Billing API 向发起购买的应用提供一个购买令牌。 您的应用可以本地存储令牌或者将其传递到后端服务器,服务器随后可以使用此令牌通过 Google Play Developer API 远程验证或者取消订阅。

如果周期性付款失败(例如,因为客户的信用卡已经无效),订阅将不会续订。 getPurchases() 方法不会返回失败或者过期的订阅。

建议:在您的应用中添加业务逻辑,向您的后端服务器通知订阅购买、令牌以及可能发生的任何结算错误。 您的后端服务器可以使用服务器端 API 查询和更新您的记录,并根据需要直接与客户联系。

手动续订

使用 In-app Billing API 版本 3,用户可以在订阅处于有效期内续订,即使订阅未设置为自动续订。 如果用户在订阅处于有效期时重复购买,订阅将以当前价格延长相应时间。

例如,Achilles 订阅了 Modern Hoplite 应用。他当前订阅的截止日期为 8 月 1 日。他在 7 月 10 日以当前价格购买了 1 个月的订阅。 这一个月将添加到他的现有订阅中,因此订阅现在将于 9 月 1 日过期。

应用应采用相应的 UI 进行指示。例如,如果用户没有有效订阅,应用可以显示购买按钮,但是如果用户已经拥有订阅,按钮则可以变成续订

订阅升级/降级

使用 In-app Billing API 版本 3,用户可以在订阅的有效期内对其进行升级或降级。 如果用户进行此操作,将取消有效订阅,并创建一个新订阅。 旧订阅的未使用余额将按比例应用到新订阅。 新订阅的第一个结算周期将在余额用完后开始。 (新订阅的周期长度不需要与旧订阅相同。)

例如,Samwise 订阅了 Country Gardener 应用的在线内容。 他当前的订阅为第 1 层版本的内容(仅文本内容)的按月订阅。 此订阅的费用为每月 2 英镑,并在每月的第一天续订。 在 4 月 15 日,他选择升级到第 2 层订阅(包含视频更新),费用为每月 3 英镑。 他的第 1 层订阅将立即终止。由于他已支付整个月(4 月 1 日 - 30 日)的费用,但是仅使用了一半的时间,剩余半个月的订阅费用(1 英镑)将应用到新订阅。 不过,由于新订阅的费用为每月 3 英镑,1 英镑的余额仅够 10 天的费用, 也就是从 4 月 15 日 - 25 日的费用。在 4 月 26 日,他需要为新订阅支付 3 英镑的费用,此后在每个月的 26 日都需要支付 3 英镑。

:新订阅的结算日期取决于订阅者按比例计算的余额何时用完。因此,订阅者无法升级或降级至季节性订阅,季节性订阅拥有固定且预先确定的开始日期和结束日期。

在用户升级或降级订阅时,应用将调用 getBuyIntentToReplaceSkus()。此方法将调用用户想要购买的新 SKU,以及新 SKU 将要替换的所有旧 SKU。 旧 SKU 的余额将用于支付新订阅的费用,结算将在此余额用完后开始。

延迟结算

使用 Google Play Developer API,您可以延迟订阅者的下一个结算日期。 用户将继续订阅内容并拥有内容的完全访问权限,但在延迟期内不会被扣款。 这样,您可以进行以下操作:

  • 作为捆绑或特别优惠的一部分让用户免费访问内容(例如,让订阅印刷杂志的用户免费访问网络内容)
  • 向客户赠送内容的访问权限

您可以延迟结算的最长时间为每次调用一年。当然,您可以在一年结束前再次调用 API 以进一步延迟结算。

例如,Darcy 拥有 Fishing Gentleman 应用在线内容的按月订阅。 正常情况下,每个月第一天他都需要支付 1.25 英镑的费用。在 3 月 10 日,他参与了应用发布者的在线调查。 作为奖励,发布者将其下一次付款日期延迟到 6 月 1 日。Darcy 在 4 月 1 日或 5 月 1 日不会被扣款,但仍可以正常访问内容。 在 6 月 1 日,他将被扣除 1.25 英镑的正常订阅费。

:API 始终只能将结算日期延迟整数天数。 如果请求包含小数天数的延迟期,API 会将延迟期舍入为下一个完整天数。例如,如果用户的订阅设置为 2015 年 6 月 15 日 14:00:00 (UTC) 续订,并且您将续订日期延迟到 2015 年 8 月 15 日 02:00:00 (UTC),API 将舍入为下一个完整天数,并将续订日期设置为 2015 年 8 月 15 日 14:00:00 (UTC)。

您也可以为新订阅者提供免费试用,如免费试用所述。

免费试用

在 Developer Console 中,您可以设置一个免费试用期,让用户可以在购买前试用您的订阅内容。 试用期将持续您设置的时间,随后将自动转换为按照订阅的结算间隔和价格管理的完整订阅。 Google Play 支持所有订阅类型的免费试用,包括季节性订阅。

要利用免费试用,用户必须通过应用内购买结算流“购买”完整订阅,此购买流会向用户提供一个用于结算的有效付款表单并要求用户完成正常的购买交易。不过,用户不会被扣除任何费用,因为初始期对应于免费试用。 Google Play 会记录一个 0.00 美元的交易,在试用期间或者取消之前,订阅将被标记为已购买。 在交易完成后,Google Play 会通过电子邮件通知用户他们已经购买一个包含免费试用期的订阅,并且初始费用为 0.00 美元。

在试用期结束时,Google Play 会自动从用户在初始购买期间提供的信用卡扣款(扣款金额为完整订阅的费用),并以订阅间隔持续。 如果需要,用户可以在试用期内随时取消订阅。 在这种情况下,订阅将在试用期结束前保持有效,但是 Google Play 会将订阅设置为自动续订;在试用期结束后,订阅将过期,并且 Google Play 不会向用户收费。

您可以在 Developer Console 中为订阅设置试用期,无需修改或更新您的 APK。 只需要在商品列表中找到并修改订阅,为试用设置一个有效的天数(必须是 7 天或更长),然后发布。 您可以随时更改试用期,不过请注意,Google Play 不会将更改应用到已经“购买”订阅试用期的用户。 只有新订阅购买才会使用更新的试用期。 只能为每个订阅商品创建一个免费试用期。

订阅发布

在 Developer Console 中或者通过 API 完成订阅商品详情的配置后,您可以在应用商品列表中发布订阅。

在商品列表中,您可以添加订阅、应用内商品,或者两者。您可以添加可访问不同内容或服务的多个订阅,也可以添加可访问相同内容但间隔或价格不同的多个订阅,例如促销。 例如,新闻媒体可能决定提供相同内容的按月和按年订阅,并为按年订阅提供折扣。 您也可以为订阅商品提供应用内购买替代者,从而确保不支持订阅的旧设备的用户也能访问您的内容。

将订阅或应用内商品添加到商品列表后,您必须先发布商品,之后 Google Play 才能将其设置为可以购买。 请注意,您还必须发布应用,以便 Google Play 将商品设置为可以在应用内购买。

重要说明:您可以从应用的商品列表中移除订阅商品,不让用户查看或购买。

按比例的季节性订阅价格

您可以为在赛季开始日期后购买季节性订阅的用户设置按比例价格。 您需要指定折扣价格的生效日期。 折扣价格将在指定日期的 0:00 (UTC) 生效。 您可以设置多个按比例价格,并随着赛季的进行降低订阅价格。 如果用户购买按比例收费的季节性订阅并在下赛季开始前一直保持订阅状态,Google Play 将在下赛季开始时向其收取完整的订阅价格。

例如,职业西洋棋赛季为每年 3 月 1 日至 8 月 31 日。Checkers Dilettante 应用以 10 欧元的价格提供季节性订阅。 应用还提供两种按比例收费的价格:7.50 欧元(面向在 6 月 1 日及之后注册的用户)和 5 欧元(面向在 8 月 15 日及之后注册的用户)。 不管用户何时注册,季节性订阅都会在 8 月 31 日结束。

订阅取消

用户可以从 Play 商店应用的 My Apps 屏幕查看其所有订阅的状态并根据需要取消订阅。目前,In-app Billing API 不支持从发起购买的应用内通过编程方式取消订阅。

在用户取消订阅时,Google Play 不会为当前结算周期提供退款。 相反,Google Play 允许用户继续访问已取消的订阅,直至当前结算周期结束,随后它将终止订阅。 例如,如果用户购买了一个按月订阅并在当前周期的第 15 天将其取消,Google Play 会将订阅的截止时间视为当前周期的第 30 天(或者其他日期,具体取决于月份)结束。

某些情况下,用户可能会直接联系您请求取消订阅。 在这种及类似情况下,您可以使用服务器端 API 从服务器查询并直接取消用户的订阅。

重要说明:在所有情况下,只要用户可以访问,您就必须继续提供订阅者已经通过他们的订阅购买的内容。 也就是说,您不得在任何用户仍有有效订阅时移除任何内容,即使该订阅将在当前结算周期结束后终止。 或者,您也可以使用退款和撤销 API(逐一)撤销每个订阅者的订阅并退还订阅费。移除任何用户有权访问的内容会被惩罚。 如需了解详细信息,请参阅政策文档

应用卸载

当用户卸载包含已购买订阅的应用时,Play 商店应用将通知用户存在有效订阅。 如果用户选择继续卸载,应用将被移除,订阅仍保持有效,重复结算也将持续。 用户可以随时返回 Play 商店应用的 My Apps 屏幕取消关联的订阅。 如果用户选择取消卸载,应用和订阅将保持原样。

撤销订阅并退还订阅费

对于订阅,Google Play 不会提供退款窗口,因此用户需要请求退款。 他们可以从 Play 商店应用的 My Orders 页面或者通过直接联系您请求退款。

如果您收到退款请求,可以使用 Google Play Developer API 或者商户中心取消订阅、验证订阅已被取消,或者在不取消的情况下向用户退款。 您可以使用 Google Play Developer API 撤销用户的订阅并退还订阅费。 如果您撤销订阅并退还订阅费,用户的订阅将被立即取消,用户最近的订阅付款将被退回。 (如果您想要退还的金额大于最近一次付款金额,可以通过商户中心处理更多退款。)

重要说明:目前不支持部分退款。

付款处理与政策

一般而言,Google Play 的条款仅允许您通过标准付款处理方 Google Payments 出售应用内订阅。 对于任何订阅商品的购买,交易费与购买应用的交易费相同 (30%)。

在 Google Play 上发布并且正在出售订阅的应用必须使用应用内购买结算处理交易,并且不得提供指向应用和 Google Play 外部购买流的链接(例如指向网站的链接)。

如需了解有关条款与政策的完整详情,请参阅政策文档

订阅的订单号

为了帮助您跟踪与给定订阅相关的交易,Google Payments 会为订阅的所有周期提供一个基础的商户中心编号,并通过附加一个整数表示每次重复交易,如下所示:

GPA.1234-5678-9012-34567(基础订单号)
GPA.1234-5678-9012-34567..0(第一次续订订单 ID)
GPA.1234-5678-9012-34567..1(第二次续订订单 ID)
GPA.1234-5678-9012-34567..2(第三次续订订单 ID)
...

Google Play 将以 INAPP_PURCHASE_DATA JSON 字段 (V3) 或者 PURCHASE_STATE_CHANGED intent (V2) 中 orderId 字段的值的形式提供订单号。

被拒绝付款的宽限期

利用 Developer Console,您可以为订阅设置一个宽限期,以便订阅者在周期性付款遭拒的情况下能够更新他们的付款方式。 如果订阅者的信用卡过期、使用预付卡订阅,或者已经取消卡片但没有更新他们的付款信息,设置宽限期将非常有用。 如需了解为订阅设置宽限期的信息,请参阅 Developer Console 帮助主题添加订阅和周期性收费

如需了解有关设置宽限期对从 getBuyIntent() 方法返回的数据有何影响的信息,请参见 INAPP_PURCHASE_DATA 字段表。

购买验证策略

一般情况下,您的应用将验证新购买的订单状态,以便在向用户授予购买内容的访问权限之前确保这些购买处于有效状态。

为了对购买进行验证,应用会将购买令牌和其他详情传递到您的后端服务器,服务器将使用 Google Play Developer API 直接在 Google Play 上对其进行验证。 如果后端服务器确定购买有效,它将通知应用并向用户授予内容的访问权限。

请记住,用户希望能够随时使用您的应用,包括在没有网络连接的情况下也希望如此。 请确保您的购买验证方法可以包含离线使用情况。

Google Play Developer API

Google Play 提供了一种基于 HTTP 的 API,利用此 API,您可以执行多种任务,例如:

  • 随时远程查询特定订阅的有效性
  • 取消订阅
  • 延迟订阅的下一次结算日期
  • 在不取消订阅的情况下退还订阅费
  • 撤销订阅并退还订阅费

此 API 旨在从您的后端服务器使用,作为管理订阅、延长订阅,以及将订阅与其他服务集成的一种方式。

如需了解完整信息,请参阅 Google Play Developer API

Handbag Love WEAVON Moschino SHOULDER BAG TXHBq Handbag Love WEAVON Moschino SHOULDER BAG TXHBq Handbag Love WEAVON Moschino SHOULDER BAG TXHBq Handbag Love WEAVON Moschino SHOULDER BAG TXHBq Handbag Love WEAVON Moschino SHOULDER BAG TXHBq Handbag Love WEAVON Moschino SHOULDER BAG TXHBq Handbag Love WEAVON Moschino SHOULDER BAG TXHBq
Material & care

Outer material: Faux leather

Lining: Polyester

Fabric: Faux leather

Details

Fastening: Magnet

Article number: LO951H07C-Q11

Love Moschino