PAYATHON 2026

Android 应用从 Play Store 下架后如何停止订阅扣费?

支付老李

结论

应用从 Google Play 下架后,已有订阅不会自动取消。只要订阅仍处于自动续订状态,Google Play 就可能在下一个结算周期继续扣费。

如果服务已经停止,应尽快取消所有现有订阅的后续续费。具体可以按订阅数量选择处理方式:

  • 订阅较少时,在 Google Play Console 中逐笔取消,必要时退款并撤销订阅权益。
  • 订阅较多时,使用 Google Play Developer API,根据每位用户的 purchase token 批量停止续费。

停用服务器、下架应用、删除订阅商品或停止销售新订阅,都不会取消已有订阅。

为什么下架后仍然会续费

应用下架主要影响新用户下载,不会直接改变已经建立的订阅关系。现有订阅由 Google Play 的结算系统管理,与应用是否仍在商店公开上架是两个不同的状态。

因此,即使出现以下情况,已有订阅仍可能自动续订:

  • 应用已从商店下架;
  • 后端服务器已经关闭;
  • 订阅商品不再向新用户销售;
  • 用户无法重新安装应用。

如果服务已经无法提供,却没有停止订阅续费,可能带来退款、拒付、投诉和合规风险,需要主动处理。

方案一:在 Play Console 中处理少量订阅

订阅用户不多时,可以在 Google Play Console 的订单管理页面查找相关订单或订阅,再使用控制台提供的功能取消订阅。

操作时需要区分以下两种处理:

  • 取消续订:阻止下一个周期再次扣费。用户通常仍可使用服务,直到当前已付款周期结束。
  • 退款并撤销:退还相应款项,同时立即撤销订阅权益。可以退款的范围以及控制台提供的选项,以账户当前显示为准。

Google Play Console 的菜单名称和操作入口可能发生调整。实际处理时,应在对应应用的订单管理或订阅管理区域查找,并以当前控制台界面为准。

如果服务器已经完全停止,用户在当前付款周期内也无法获得服务,只取消下一次续费可能不够。此时还需要评估是否应为未能履约的周期退款。

方案二:使用 Google Play Developer API 批量停止续费

批量取消订阅需要取得每笔订阅对应的 purchase token。该 token 通常来自应用完成购买后的 Billing Library 回调,并应由后端保存。

较新的接口是 purchases.subscriptionsv2.cancel:

POST https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/purchases/subscriptionsv2/tokens/{token}:cancel

停止后续付款的请求示例:

curl -X POST \
  "https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.example.app/purchases/subscriptionsv2/tokens/PURCHASE_TOKEN:cancel" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "cancellationContext": {
      "cancellationType": "DEVELOPER_REQUESTED_STOP_PAYMENTS"
    }
  }'

其中:

  • com.example.app 替换为应用的 package name;
  • PURCHASE_TOKEN 替换为该用户订阅的 purchase token;
  • ACCESS_TOKEN 必须由拥有相应 Google Play Developer API 权限的服务账号或授权主体获取;
  • DEVELOPER_REQUESTED_STOP_PAYMENTS 表示由开发者发起停止后续付款。

具体订阅类型是否支持该接口和枚举,应以当前 Google Play Developer API 文档及实际返回结果为准。处理分期订阅、预付费方案和特殊地区方案时尤其需要核对。

批量处理时,可以逐条调用并记录结果:

for each purchaseToken:
    查询当前订阅状态
    如果仍会自动续订:
        调用 subscriptionsv2.cancel
    保存响应状态和处理时间

取消前,最好先调用 purchases.subscriptionsv2.get 核对订阅状态,避免重复处理已经到期、取消或撤销的订阅。

如果没有保存 purchase token

Google Play Developer API 通常不能直接分页列出应用历史上的全部订阅购买,并自动提供所有 purchase token。开发者一般需要从以下来源恢复 token:

  • 后端保存的购买记录;
  • Real-time Developer Notifications 消息记录;
  • 订单与订阅管理数据;
  • 客服或用户提供的订单信息。

如果 token 已经丢失,应先通过 Play Console 处理能够查到的订单,同时通知用户自行取消订阅。

用户可以在 Google Play 的“付款和订阅”中取消:

Google Play → 个人资料 → 付款和订阅 → 订阅 → 选择对应应用 → 取消订阅

即使应用已经下架,用户通常仍可在自己的 Google Play 账户中管理订阅。

建议的完整处置流程

  1. 立即停止订阅商品的新购买,避免产生新的订阅。
  2. 导出或整理现有订阅订单,以及后端保存的 purchase token。
  3. 查询每笔订阅的当前状态和下一次续费时间。
  4. 通过 Play Console 或 Developer API 停止所有后续付款。
  5. 对服务停止后仍被扣费且无法获得服务的用户评估退款。
  6. 通过邮件、已有的应用内渠道或其他合规联系方式通知用户。
  7. 保存订单号、purchase token、取消结果、退款结果和处理时间,以便应对投诉或拒付。
  8. 确认没有有效权益依赖后,再关闭剩余的结算通知和订阅后端。

注意事项

应用下架不等于取消订阅,删除订阅商品也不一定会终止已经生效的订阅。不要只是等待订阅自然过期。

批量取消前,需要特别检查是否存在分期付款方案。对于分期订阅,“停止续订”和“停止后续付款”可能产生不同结果,不能直接套用普通月度或年度自动续订的处理方式。

用户来自 United Arab Emirates 或购买了高价方案,不会改变取消订阅的基本流程,但退款、消费者投诉和拒付的风险会更高。如果服务已经无法交付,应尽快停止后续扣费,并根据实际未履约情况审慎处理退款。

取消订阅和退款是两个独立动作。取消订阅只能阻止未来扣费,不会自动退回已经收取的款项。是否退款需要另行处理。

备注:内容仅供参考。