在日常业务中,您可能需要对订阅或一次性购买交易执行管理操作。例如,您的客户服务可能需要为用户办理全额退款或部分退款,或者在某些情况下您可能需要撤消权限。您可以通过 Play 管理中心管理订单,或者,如果您想通过自己的系统管理订单,也可以使用 Google Play Developer API 来实现。
取消订阅
用户可以随时通过 Play 商店取消 Google Play 订阅,但您还必须为用户提供在您的应用和网站上取消订阅的选项(如果适用)。
要让用户能够自愿取消订阅,最简单的方法是深层链接到 Play 商店,用户可以在其中查看和管理自己的订阅。
您可能还需要从后端触发取消操作。您可以使用 purchases.subscriptions.cancel
方法取消订阅购买交易。例如,您可以使用此方法来停用旧版服务。取消订阅不会发放退款,用户仍可继续享用订阅内容,直到当前结算周期结束为止。通过此方法取消订阅会阻止用户在 Play 商店中恢复订阅,但用户仍然可以根据需要通过您的应用重新注册。
执行此操作会触发 SUBSCRIPTION_CANCELED
实时开发者通知。请按照取消中的说明处理这些取消。
延迟结算
使用 subscriptions.defer
延长订阅的权限期限。在推迟期内,用户仍可订阅您的内容,但无需为额外时间付费。如果您延迟订阅结算,系统会相应地更新状态信息,并且您会看到购买状态信息的 expiryTime
字段中反映出来:
- 对于有效的周期性订阅,推迟结算会延长下一个续订日期。
- 对于预付费方案,推迟结算会延长到期时间。
以下示例说明了如何使用推迟结算:
- 将免费访问权限作为一项特别优惠提供给用户,例如为填写反馈调查问卷的现有订阅者提供一周的免费体验。
- 将客户的免费访问权限作为客户服务提供给客户,例如,在可能影响其服务使用能力的长时间中断后。
每次调用 API,结算最短可推迟一天,最长为一年。如需进一步推迟使用权的结束时间,请在新的到期日期到来之前再次调用该 API。
执行此操作会触发 SUBSCRIPTION_DEFERRED
实时开发者通知。如需了解如何处理这些事件,请参阅订阅简介中的为订阅者推迟结算部分。
示例:
FitnessGoals 流式传输服务想要开展一项促销活动,以鼓励用户在 2 月份定期锻炼。
他们决定为在 2 月份使用 FitnessGoals 进行至少 10 次锻炼的任何订阅者额外提供 1 个月的服务。
他们跟踪挑战的结果,并于 3 月 1 日针对属于 2 月份挑战的用户的每笔有效订阅购买交易调用
subscriptions.defer
API。这些用户还可以免费观看一整月的常规锻炼视频,还可以告诉所有朋友 FitnessGoals 如何帮助他们保持健康!
办理退款和撤消事宜
在很多情况下,您可能希望针对订阅或一次性购买交易办理退款或撤消其访问权限。
按订单 ID 为订单全额退款
借助 orders.refund
API,您可以针对购买后三年内的任何订单办理全额退款。除了提供退款之外,orders.refund
方法还会收到一个撤消参数,用于指明是否应撤消访问权限。
如果您通过针对订阅购买的退款调用发出撤消请求,订阅会立即终止,并触发SUBSCRIPTION_REVOKED
实时开发者通知。阅读订阅生命周期管理指南的“撤消”部分,了解如何处理这些事件。
示例:
为庆祝全新世界杯的开始,电竞应用 Football-Not-Soccer 决定面向在前 24 小时内购买新球队装备的所有用户提供免费虚拟球衣抽奖机会。
Football-Not-Soccer 使用
orders.refund
API,而不传递撤消参数,以便将所购球衣的款项退还给获奖者。
按购买令牌撤消订阅并退款
在某些用例中,您可能需要撤消对用户订阅的访问权限并为订阅退款。Play 结算服务提供部分退款,包括按比例退款,您可以使用 subscriptionsv2.revoke
API 办理退款。使用此端点时,您可以指定 revocationContext
来确定退款的计算方式。
执行此操作会触发 SUBSCRIPTION_REVOKED
实时开发者通知。您的应用应按照撤消中的说明来处理这些取消事件。
示例:
- 使用购买令牌
1a2b3c4d5e6f7g8h9i0j
购买 - 软件包名称为“
com.your.app
”的应用 - 办理按比例退款的意图
HTTP POST 请求:
https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptionsv2/tokens/1a2b3c4d5e6f7g8h9i0j:revoke
请求正文:
{
"revocationContext": {
"proratedRefund": {}
}
}
按比例退款
如果您需要终止订阅并退还部分剩余使用权,请按比例退款。使用 purchases.subscriptionsv2.revoke
函数,并将 "proratedRefund": {}
设置为退款类型。
示例:
Maria 有一个为期 30 天的
SuperMovies
每月在线播放方案自动续订型订阅。她很高兴地使用该服务一段时间了。 Maria 在结算周期的第 15 天联系了客户服务团队,她声称她正在国外迁移,从次日开始将无法再使用这项服务。客户服务会在其系统中找到 Maria 的订阅购买详细信息,并触发对
purchases.subscriptionsv2.revoke
的调用,请求按比例退款。客户服务团队告诉 Maria,她应该获得订阅价格的 50% 左右的退款,并且会立即终止对该服务的访问权限。