Google Play 预付费方案的退款规则与订阅不同,一次漏掉的充值确认就可能撤销整个方案
预付费方案从不自动续订,因此用户无法取消,只能充值续期。本文介绍 Google Play 预付费方案退款如何判定、未确认的充值会让你付出什么代价,以及哪个 API 调用会退还哪笔款项。

要点
- Google Play 预付费方案在固定的结算周期内提供访问权限,到期后不会自动续订。用户通过购买充值来延长期限。Google 表示预付费方案无法取消,因为它们只会运行到到期日为止。
- 每一次 Google Play 预付费充值都是一笔新的购买,带有新的购买令牌,上一个令牌会出现在 linkedPurchaseToken 字段中。每次充值时,Google 都会发送一条 SUBSCRIPTION_PURCHASED 通知。
- Google Play 要求开发者确认每一笔预付费购买和充值。时长一周及以上的方案有 3 天时间,时长不足一周的方案只有方案时长的一半,因此三天方案只有 1.5 天。
- 如果开发者错过了 Google Play 预付费充值的确认期限,Google 会撤销这笔充值,撤销并取消剩余的订阅,并向用户退款。
- Google Play 帮助中心告诉用户,尚未使用的预付费方案可以退款,而在购买超过 48 小时后提出的退款申请会转交给开发者处理。
- Google 将 purchases.subscriptionsv2.revoke 的 fullRefund 选项描述为退还每个商品的最近一笔扣款。因此对于充值过的预付费方案,它针对的是最近一笔扣款,而不是用户买过的所有充值。
- 对于 2026 年 8 月 3 日之后下单的 Google Play 订单,如果拒付败诉,开发者需要承担扣除 Play 服务费后的购买价格,外加银行收取的拒付费用。预付费充值与其他订单一样适用这一规则。
只要漏掉一次 Google Play 充值的确认,Google 不会只退还那一笔充值。它会撤销这笔充值,撤销并取消用户预付费方案的剩余部分,然后发放退款。这是 Google Play 预付费方案退款中最锋利的一道边,而它完全在你的掌控之中。预付费方案的其他退款情况与普通订阅相差不大,但有几处差异会影响你的实现方式和你的损失。
Google Play 预付费方案与自动续订订阅有何不同
预付费方案是一种基础方案,它出售一段固定结算周期内的访问权限,到期即止。Google 的 Play Console 帮助文档说明,用户购买它以获得该周期内的权益,如果想继续使用,就通过充值来延长结束日期。充值可以是同一订阅下的任何预付费基础方案,时长也可以不同。Google 自己举的例子是用一笔 $59.99 的充值将方案延长一年。
既然没有任何续订,也就没有什么可以取消。Google 的结算文档指出,预付费方案无法取消,想退出的用户只需让方案运行到到期日。预付费方案的订阅状态只会是 ACTIVE、PENDING 或 CANCELED,并且 expiryTime 始终存在。
在限制周期性扣款的地区,预付费方案最为重要。RevenueCat 的指南以印度为例:由于 Reserve Bank of India(印度储备银行)的规定,Google 暂停了新用户订阅自动续订方案,该指南认为预付费方案显然适合这类市场。
| 自动续订基础方案 | 预付费基础方案 | |
|---|---|---|
| 自动续订 | 是 | 否,用户需购买充值 |
| 用户能否取消 | 能 | 不能,运行到 expiryTime 为止 |
| 免费试用和优惠 | 有 | 无,优惠仅适用于自动续订基础方案 |
| 新的购买令牌 | 升级、降级或重新订阅时 | 每次充值时 |
| 确认 | 每笔新购买后 3 天内 | 一周及以上的方案为 3 天,较短方案为时长的一半 |
| 能否暂停 | 能 | 不能 |
每次充值都是一笔独立的购买
Google 会为每次充值签发新的购买令牌,并在新购买的 linkedPurchaseToken 中放入上一个令牌。Google 还会为每次充值发送一条 SUBSCRIPTION_PURCHASED 实时开发者通知。充值可以叠加。如果用户提前充值,新增时长会加在原到期日之后,而不是从今天算起。用户同一时间只能持有一笔未消耗的充值,prepaidPlan.allowExtendAfterTime 会告诉你下一次充值何时可用。
预付费退款从确认期限开始
你必须确认每一笔预付费购买,包括每一次充值,因为用户每次都会走一遍购买流程。Google 给一周及以上的方案 3 天时间。不足一周的方案只有其时长的一半,因此三天方案必须在 1.5 天内确认,一天方案必须在 12 小时内确认。
这就是短期预付费方案比看上去风险更高的原因。每周或每月的自动续订方案每次都给你同样的 3 天。一天期的预付费通行证只给你 12 小时,后端一旦宕机超过这个时间,付费用户就会自动变成退款。RevenueCat 的指南也提出了同样的观点,提醒在基础方案只有 1 天或 3 天时,第二笔订单必须尽快确认。
谁来决定预付费方案退款
大多数 Google Play 预付费方案退款的决定都不经过你。Google 的退款政策规定,用户在应用内购买(包括订阅)后 48 小时内可能获得退款,具体视情况而定。超过 48 小时后,用户会被告知联系开发者,由开发者根据自己的政策和适用法律处理退款。Google 的订阅帮助页面还专门为预付费方案补充了一句:如果方案尚未使用,用户可以申请退款。
| 退款途径 | 由谁决定 | 你能否回应 | 期限 |
|---|---|---|---|
| 购买或充值后 48 小时内申请 | 否 | 无 | |
| 48 小时后申请 | 你,依据你的政策和当地法律 | 不适用 | Google 未设定 |
| 未确认的购买或充值 | 自动 | 否 | 3 天,不足一周的方案为时长的一半 |
| 标记为需开发者审核的拒付 | 先 Google,后银行 | 能,通过 orders.reviewrefund | 24 小时 |
| 无需开发者审核的拒付 | 银行 | 否 | 无 |
预付费方案不会改变拒付规则。当 Google 请你就争议说明情况时,你有 24 小时通过 orders.reviewrefund 作答,银行一旦作出裁决,结果即为最终结果。
预付费方案上哪个 API 调用退还什么
当退款请求落到你手上时,你有两个服务端工具,而它们退还的内容并不相同。
orders.refund 一次处理一个订单
orders.refund 按订单 ID 退还订阅订单或应用内订单。将 revoke 设为 true,访问权限会立即终止。Google 不会退还超过 3 年的订单。由于每次充值都是独立的购买,退还某次充值对应的订单,就是只退还这一次充值的精确做法。
purchases.subscriptionsv2.revoke 作用于整个订阅
purchases.subscriptionsv2.revoke 会终止订阅,并接受一个 revocationContext 参数。Google 将 fullRefund 描述为退还每个商品最近一笔扣款的全额,将 proratedRefund 描述为根据剩余时间按比例退款。对于充值过两次的方案,最近一笔扣款就是最后一次充值。在向用户承诺退还全部余额之前,请先考虑到这一点。
不要收回用户仍然应得的访问权限
Google 的结算文档警告,在用户仍享有权益时移除其订阅访问权限,违反 Google Play 的订阅政策。对于预付费方案,已付费的时间就是权益。如果你只退还最近一次充值,就应让之前已付费的时间继续生效,除非你也撤销并退还了那部分。

预付费方案退款让你付出什么代价
预付费用户为一段固定时间预先付了款,而从他们获得访问权限的那一刻起,你就开始为他们花钱了。退款把他们的钱退回去,而你的这些支出却留在原地。
- 计算资源:用户在付费期间运行的每一次会话、同步或服务端任务,都是你已经付过钱的算力。
- API 调用:语音、翻译、地图、模型推理或任何按请求计费的第三方服务,费用照样要付。
- 存储:用户创建的文件和历史记录会一直占用你的存储账单,直到你删除它们。
- 分成支出:与这笔购买相关的收入分成、创作者分成和推荐佣金,已经从你的账户中付出。
漏掉确认的情况代价最高。一笔 $59.99 的一年期充值如果确认迟了,损失的不只是这 $59.99。Google 还会撤销剩余的方案,于是用户失去了已经付过钱的访问权限并拿到退款,而你为服务他们产生的每一笔成本都已经花掉了。
预付费方案开发检查清单
- 在服务端确认每一次充值,而不仅仅是首次购买,并对几小时后仍未确认的购买发出告警。
- 为短期方案单独设置告警。一天方案只有 12 小时,三天方案只有 1.5 天。
- 保存每个订单 ID 和购买令牌,并沿着 linkedPurchaseToken 追溯,以便看到一个用户背后完整的充值链。
- 尽早处理购买令牌。Google 表示令牌仅在到期后 60 天内有效,之后 Developer API 将不再接受它。
- 退还单次充值时,对该充值的订单使用 orders.refund,不要假设 fullRefund 会覆盖之前的充值。
- 按每笔购买记录使用情况,这样在拒付审核的 24 小时窗口内就能给出真实的答复。
- 一收到 SUBSCRIPTION_REVOKED 就立即撤销访问权限,因为此时方案状态已变为过期。
常见问题解答
- 用户可以取消 Google Play 预付费方案吗?
- 不可以。Google 表示预付费方案无法取消,因为它们不会自动续订。方案会运行到到期日,用户在此之前都保有访问权限。想停止付费,只要不再购买充值即可。
- 用户可以就 Google Play 预付费方案获得退款吗?
- 可以。Google 帮助中心表示,未使用的预付费方案可以退款,而且如果在 48 小时内提出申请,Google 可能会退还任何应用内购买,包括订阅。超过 48 小时后,Google 会让用户联系开发者,由开发者依据自己的政策和当地法律退款。
- 如果我没有确认预付费充值,会发生什么?
- Google 会撤销这笔充值,撤销并取消剩余的订阅,并向用户退款。一周及以上的方案必须在 3 天内确认,较短的方案必须在其时长的一半内确认,因此三天方案只有 1.5 天。
- 对预付费方案执行 fullRefund 会退还每一次充值吗?
- 按照 Google 的描述,不会。purchases.subscriptionsv2.revoke 的 fullRefund 选项退还的是每个商品最近一笔扣款的全额。每次充值都是带有独立订单的单独购买,因此想退还某一次充值时,请对相应订单使用 orders.refund。
- 预付费方案支持免费试用吗?
- 不支持。Google 的 Play Console 帮助文档说明,优惠(包括免费试用和首期优惠价)只能为自动续订基础方案创建。预付费方案在购买时和每次充值时都需全额支付。
来源和延伸阅读
- Google Play Billing: Subscription lifecycle (prepaid plans, top-ups, acknowledgement)
- Play Console Help: Understanding subscriptions
- Google Play Help: Cancel, pause, or change a subscription on Google Play
- Google Play Help: Apps, games, and in-app purchases refund policies
- Google Play Developer API: orders.refund
- Google Play Developer API: purchases.subscriptionsv2.revoke
- Google Play Developer API: orders.reviewrefund
- Play Console Help: Updates to refund protection and chargeback cost responsibility
- RevenueCat: Google prepaid plans
RefundHalt
App Store 和 Google Play 退款自动驾驶
继续阅读
过多的退款申请,代价可能远超退款本身,因为两大应用商店都把它当作质量信号
Apple 审核指南 5.6.4 把过多的退款申请列为应用未达质量标准的迹象,Google 的开发者分发协议也允许它依据退款率下架新开发者的应用。本文梳理两家商店的原文、下架的真实成本,以及如何避开风险。
在处理退款之前先验证 App Store 服务器通知,因为任何人都能向你的 webhook URL 发送请求
在检查签名之前,一条退款通知只不过是一个 HTTPS 请求。本文介绍如何验证 App Store 服务器通知和 Google Play RTDN 消息、每个商店签名的内容,以及伪造的退款或被错误拒绝的退款会让你付出什么代价。