You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Play订阅:Android端如何检测订阅是否已自动续费

可行解决方案

核心原理说明

Google Play订阅自动续费完成后,对应订阅的Purchase对象会更新两个核心字段,你之前没注意到这两个字段的变化:

  • orderId:首单为普通订单号格式,后续每续费一次后缀会累加.1/.2/.3依次递增
  • purchaseTime:会更新为最新一次续费成功的时间戳

你遇到的查询结果无变化的问题,大概率是本地缓存未更新,或是调用方法的版本不对。

客户端侧实现步骤

  1. 替换过时的查询方法
    你现在用的queryPurchases是Google Play Billing Library 4.0及之前的过时同步方法,优先改用最新的异步查询方法获取实时数据:
billingClient.queryPurchasesAsync(QueryPurchasesParams.newBuilder()
        .setProductType(BillingClient.SkuType.SUBS)
        .build(), new PurchasesResponseListener() {
    @Override
    public void onQueryPurchasesResponse(@NonNull BillingResult billingResult, @NonNull List<Purchase> purchases) {
        if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && !purchases.isEmpty()) {
            for (Purchase purchase : purchases) {
                if (purchase.getSku().equals("你的订阅SKU") && purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED) {
                    // 在这里判断续费状态
                    String currentOrderId = purchase.getOrderId();
                    long currentPurchaseTime = purchase.getPurchaseTime();
                    
                    // 对比本地/服务端存储的上一次订单号/购买时间
                    // 如果orderId后缀数字更大,或purchaseTime晚于上一次记录时间,即为已完成自动续费
                }
            }
        }
    }
});
  1. 补充自动续费开关状态判断
    如果需要额外判断用户是否开启了后续的自动续费权限,直接调用purchase.isAutoRenewing()即可,返回true代表自动续费处于开启状态,到期前会自动扣费。

服务端侧实现(更安全,推荐优先使用)

客户端数据存在被篡改的风险,生产环境建议用服务端验证订阅状态:

  • 把客户端拿到的purchaseToken传到你的服务端
  • 服务端调用Google Play Developer API的订阅查询接口
  • 接口返回的orderId、startTimeMillis、expiryTimeMillis字段可以准确判断是否完成续费,同时还能校验订阅的真实性,防止破解。

注意事项

  • 同一个订阅的purchaseToken终身不变,不要用这个字段判断续费状态
  • 尽量不要依赖queryPurchaseHistoryAsync的返回结果,这个接口返回的是所有历史购买记录,包含已过期的订阅,排序规则也不是最新在前,容易误判
  • 如果调用查询方法还是拿不到最新数据,可以尝试调用billingClient.querySkuDetailsAsync主动拉取一次最新的商品信息,触发本地缓存更新

内容的提问来源于stack exchange,提问作者DevTest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 21:45:04