封禁作弊玩家拦不住 Apple 或 Google 退款,所以在封号之前就要想好被封禁玩家退款的应对方案
封禁只会终止访问权限,不会终止商店的退款流程。被封禁玩家退款仍由 Apple 或 Google 决定,你能提交的证据有严格限制,而一旦退款被撤销,你可能还得恢复已经收回的内容。下面说明哪些是你能掌控的,以及要付出什么代价。

要点
- 在应用内封禁玩家,并不会取消其在 App Store 或 Google Play 的购买。Apple 和 Google 仍按各自的规则决定是否退款,被封禁的玩家和其他顾客一样,可以向任一商店申请退款。
- 当 App Store 顾客申请退款时,Apple 会发送 CONSUMPTION_REQUEST,并要求你在 12 小时内通过 Send Consumption Information 作出回应。该请求中没有任何字段可以表示封禁、作弊标记或违反条款。
- 除非 customerConsented 为 true,否则 Apple 会以 HTTP 400 InvalidCustomerConsentedError 拒绝消费数据,因此只有当被封禁玩家同意共享消费数据时,你才能提交相关证据。
- Apple 的 REFUND_REVERSED 通知说明,如果你的应用因退款而收回了内容或服务,就需要予以恢复。这与任何“因退款而封禁玩家”的政策都相冲突。
- 在 Google Play 上,开发者可以调用 orders.refund 并将 revoke 设为 true,一次性完成退款并终止访问权限。但超过 3 年的订单无法退款,已消耗的物品也必须由你自己的应用处理。
- Google Play 要求你在 24 小时内通过 orders.reviewrefund 陈述你对拒付的意见。对于 2026 年 8 月 3 日之后的订单,拒付败诉的代价是购买价格减去 Play 的服务费,再加上银行收取的拒付手续费。
封禁玩家会终止其对游戏的访问,但对其购买毫无影响。接下来通常就是被封禁玩家退款申请,而这份申请是提交给 Apple 或 Google 的,不是提交给你。每个商店都按自己的规则作出决定,一个要求退钱的作弊者,在那条队列里不过是又一个退款申请而已。请围绕这一点来规划封禁,因为在整场纠纷中,只有封禁本身是你能完全掌控的。
封禁和退款是两个独立的决定
你的服务条款管辖账号,商店的规则管辖付款。封禁是你决定谁能玩,退款是 Apple 或 Google 决定钱是否退回。两个决定互不抵消,商店在作出决定之前,也从不会问你是否封禁了某人。
大型发行商说得很直白。Riot 的 Wild Rift 支持页面告诉玩家,由于第三方应用市场的性质,Riot 无法自行发放商店退款;如果 Apple、Google 或 Samsung 拒绝退款,Riot 也无能为力。每个移动开发者都处于同样的位置。你只能在两个地方影响商店的决定,而且只有在商店主动询问时才行。
| 退款途径 | 由谁决定 | 能否提交证据 | 你的时限 |
|---|---|---|---|
| App Store 退款申请 | Apple | 能,在收到 CONSUMPTION_REQUEST 后通过 Send Consumption Information 提交 | 12 小时 |
| 购买后 48 小时内的 Google Play 退款 | 不能 | 无 | |
| 购买 48 小时后的 Google Play 退款 | 你,依据你自己的政策和当地法律 | 不适用 | 不适用 |
| 需要开发者审核的 Google Play 拒付 | Google,然后是银行 | 能,通过 orders.reviewrefund 提交 | 24 小时 |
| App Store 购买的银行卡拒付 | Apple 和银行 | 不能 | 无 |
关于被封禁玩家,你能告诉 Apple 什么
顾客对任何类型的产品申请退款时,从消耗型项目到自动续期订阅,Apple 都会发送 CONSUMPTION_REQUEST 通知。你有 12 小时可以通过 Send Consumption Information 作答。Apple 表示,它会将这些信息与其他因素一起作为决定的参考,而你的 refundPreference 就是其中之一。
请求体很小,只包含 customerConsented、consumptionPercentage、deliveryStatus、refundPreference 和 sampleContentProvided,仅此而已。其中没有任何内容描述玩家的行为,所以你无法告诉 Apple 这个账号因作弊被封禁。你能告诉 Apple 的,是这笔购买被使用了多少,以及你是否希望拒绝退款。
deliveryStatus 里没有“已封禁”这个值
Apple 将 deliveryStatus 定义为应用是否交付了能正常使用的 In-App Purchase。可选值为 DELIVERED、UNDELIVERED_QUALITY_ISSUE、UNDELIVERED_WRONG_ITEM、UNDELIVERED_SERVER_OUTAGE 和 UNDELIVERED_OTHER。如果状态不是 DELIVERED,Apple 要求 consumptionPercentage 必须为 0,否则请求会失败。把被封禁玩家的购买报告为未交付之前,请三思。这等于告诉 Apple 顾客什么都没得到,而这恰恰是支持退款的最有力理由。
是否获得同意,决定了你能不能作答
当 customerConsented 不是 true 时,Apple 服务器会以 HTTP 400 InvalidCustomerConsentedError 拒绝 ConsumptionRequest。Apple 的文档还说明了征求同意时应包含的内容,例如清楚告知顾客其数据将提供给 Apple 用于退款审核,以及顾客可以撤回同意。如果玩家从未同意或已撤回同意,你就没有任何东西可以提交。请在注册时征求同意,而不是等到封禁之后。
如果 Apple 撤销退款会怎样
Apple 的 REFUND_REVERSED 通知表示,App Store 因顾客提出的争议,撤销了此前批准的一笔退款。Apple 的文档写得很明确:如果你的应用因该退款收回了内容或服务,就需要予以恢复。因此,凡是“退款即封禁”的规则,都需要一条撤销路径。请把封禁与退款事件关联起来,这样退款被撤销时,封禁也能干净地解除。

在 Google Play 上你能做什么
Google 自己的退款页面告诉买家,应用内购买后 48 小时内可能获得退款,具体视情况而定;超过 48 小时,则应联系开发者。页面还说明,一件商品只能退款一次,退款后的商品会从买家处移除。所以,被封禁玩家在前 48 小时内向 Google 申请,结果由 Google 决定。之后,申请就会落到你手里。
自行退款并收回购买
Google 的 orders.refund 方法可以为订阅或应用内订单退款。将 revoke 设为 true,对该商品的访问会立即终止,周期性订阅也会停止续订。Google 补充了两个限制:超过 3 年的订单无法退款;已消耗的应用内物品必须由你的应用处理,因为 Google 无法收回玩家已经花掉的货币。如果你决定给被封禁玩家退款以了结此事,请在同一次调用中执行 revoke,以免对方保留该物品。
立即拒绝来自被封禁账号的购买
如果你的客户端仍然显示商店,被封禁玩家再次购买就是实实在在的风险。Google 的结算指南指出,如果某笔购买未通过你的资格、欺诈或滥用检查,就不应授予该购买,也不应确认它。等三天的确认期限过去,技术上会让订单被退款,但 Google 表示不要依赖这种方式。请改为通过 API 收回并退款:订阅使用 purchases.subscriptionsv2.revoke 并全额退款,一次性商品使用 orders.refund 并将 revoke 设为 true。
在 24 小时内回应拒付审核
当 Google Play 拒付需要开发者审核时,Google 会发送 PendingRefundReviewNotification,并给你 24 小时调用 orders.reviewrefund。Google 只记录你的第一次调用。请求体接受取值为 DECLINE、APPROVE 或 NEUTRAL 的 refundPreference、一个 sampleContentProvided 标记、可选的 consumptionPercentageMilliunits 值,以及最多 1,000 条 consumptionUsageEvents,每条都可以包含你的 obfuscatedAccountId、消耗时间和所用内容的描述。封禁之前记录的使用事件就是证据。封禁之后不会再有事件,所以关闭账号时请保留历史记录。
被封禁玩家退款要花多少钱
封禁本身不花你一分钱。随之而来的退款却可能从三方面让你付出代价。第一,你从这笔购买中获得的收益会从之后的结算款中扣回。第二,这笔购买已经产生的成本照样要付。第三,在 Google Play 上,拒付败诉现在还要额外承担银行的手续费。
- 计算资源:玩家用这笔已退款的购买进行的每一场对局、每一次会话和每一次服务器端模拟,都占用了你已经付过钱的算力。
- API 调用:反作弊检查、匹配调用,以及任何按请求计费的第三方服务,在封禁之前就已经消耗掉了。
- 存储:作为封禁证据保留的物品栏、回放和日志,只要你还保留着,就会一直产生费用。
- 支出款项:如果玩家的购买资助了奖金、创作者收入分成或联盟佣金,这些钱已经离开你的账户,不会随着退款回来。
玩家申请退款,就该被封禁吗?
很多游戏都有类似的做法。Riot 的支持页面告诉那些因余额变为负数而被封禁的 Wild Rift 玩家,按照其拒付处理步骤操作,就能重新回到游戏。锁定已被撤回的消费是站得住脚的。对每个申请退款的人一律封禁则难以自圆其说,消费者监管机构也已经注意到了这一点。
2017 年 7 月,韩国消费者院要求 Niantic 修改其认定为不公平的 Pokémon GO 条款,其中包括不予退款即终止账号。该机构表示,这种做法可能侵犯消费者取消购买的法定权利。这只是一个监管机构、一个案例,但它清楚地表明,“我们封了你,所以你失去一切”这种做法是可能被挑战的。
一份经得起退款申请考验的封禁清单
- 提前按每笔购买记录消耗情况,并附上时间戳。Apple 和 Google 问的都是使用情况,而不是玩家行为。
- 在注册时征求消费数据共享同意,这样被封禁玩家的 CONSUMPTION_REQUEST 才是你有权回应的。
- 如实报告 deliveryStatus。不要因为后来封禁了账号,就把已交付的物品说成未交付。
- 保留被封禁账号的购买和使用历史,不要随账号一起删除。
- 阻止被封禁账号进行新的商店购买,对漏网的购买进行退款并收回。
- 将封禁记录与退款事件关联,这样 REFUND_REVERSED 就能精确恢复因退款而被收回的内容。
常见问题解答
- 被封禁的玩家还能从 Apple 或 Google 获得退款吗?
- 能。在你的应用中封禁玩家,不会改变该玩家在商店的身份。App Store 退款由 Apple 决定,48 小时内申请的 Play 退款由 Google 决定,玩家还可以向银行对扣款提出争议。只有当 Apple 发送 CONSUMPTION_REQUEST,或 Google 要求进行拒付审核时,你才有发言权。
- 我能告诉 Apple 我因作弊封禁了这名玩家吗?
- 不能。Apple 的 ConsumptionRequest 有五个字段:customerConsented、consumptionPercentage、deliveryStatus、refundPreference 和 sampleContentProvided。没有一个字段描述玩家行为。你可以报告这笔购买被使用了多少,并将 refundPreference 设为 DECLINE,Apple 会把这一偏好作为多个考量因素之一。
- 在 Google Play 上,我应该自己给被封禁玩家退款吗?
- 可以。如果你这样做,请调用 orders.refund 并将 revoke 设为 true,让退款和失去访问权限同时发生。Google 不会为超过 3 年的订单退款,玩家已经消耗的货币必须由你的应用处理,因为 Google 无法收回。
- 如果 Apple 撤销了退款,封禁会怎样?
- Apple 会发送 REFUND_REVERSED 通知,并表示你的应用需要恢复因该退款而收回的任何内容或服务。如果退款是你限制该账号的唯一理由,就应解除这项限制。因作弊而实施的封禁则独立成立,与退款无关。
- 封禁申请退款的玩家合法吗?
- 这取决于你的玩家所在地区,而且风险比看上去更大。2017 年,韩国消费者院表示,不予退款即终止 Pokémon GO 账号,可能侵犯消费者取消购买的法定权利。收回已退款的物品是常见做法。惩罚退款申请本身,则会招来这类挑战。
来源和延伸阅读
- App Store Server API: Send Consumption Information
- App Store Server API: ConsumptionRequest
- App Store Server Notifications: notificationType
- Google Play Developer API: orders.refund
- Google Play Developer API: orders.reviewrefund
- Google Play Billing: Integrate the library, handle rejected or unfulfilled purchases
- Google Play Help: Apps, games, and in-app purchases refund policies
- Play Console Help: Updates to refund protection and chargeback cost responsibility
- Riot Games Support: Cash refunds in Wild Rift
- Korea JoongAng Daily: Pokemon Go panned for unfair refunds policy (July 3, 2017)
RefundHalt
App Store 和 Google Play 退款自动驾驶
继续阅读
过多的退款申请,代价可能远超退款本身,因为两大应用商店都把它当作质量信号
Apple 审核指南 5.6.4 把过多的退款申请列为应用未达质量标准的迹象,Google 的开发者分发协议也允许它依据退款率下架新开发者的应用。本文梳理两家商店的原文、下架的真实成本,以及如何避开风险。
在处理退款之前先验证 App Store 服务器通知,因为任何人都能向你的 webhook URL 发送请求
在检查签名之前,一条退款通知只不过是一个 HTTPS 请求。本文介绍如何验证 App Store 服务器通知和 Google Play RTDN 消息、每个商店签名的内容,以及伪造的退款或被错误拒绝的退款会让你付出什么代价。