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

如何在Google Pay订阅续费触发时调用指定函数

检测Google Pay订阅续费事件的可行方案

1. 配置Google Play实时开发者通知(Server-to-Server,推荐)

这是最可靠的方式,订阅续费后Google Play会主动推送事件到你的服务端:

  • 在Google Play Console的「开发者工具」>「实时开发者通知」中,配置你的服务端接收URL,确保该URL支持HTTPS。
  • 当用户订阅续费成功时,Google会发送包含SUBSCRIPTION_RENEWED事件类型的POST请求到你的URL,请求体为JWT格式消息。
  • 用Google提供的公钥验证JWT签名,确认消息合法性后,解析订阅信息(用户ID、订阅ID、续费时间等),触发权限添加逻辑。
  • 注意处理重复通知,服务端接口要保证幂等性,避免重复执行权限添加操作。

2. 客户端实时监听(辅助补充)

通过Google Play Billing Library在客户端监听订阅状态变化:

  • 初始化BillingClient时设置PurchasesUpdatedListener,订阅续费后Google Play会触发该监听器并返回PurchasesResult。
  • 在监听器中获取更新后的订阅信息,调用后端接口同步状态,触发权限更新。
  • 该方式依赖客户端在线,仅能作为服务端通知的补充方案。
  • 示例代码片段:
val billingClient = BillingClient.newBuilder(context)
    .setListener { result, purchases ->
        if (result.responseCode == BillingClient.BillingResponseCode.OK && purchases != null) {
            for (purchase in purchases) {
                if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED && !purchase.isAcknowledged) {
                    // 同步续费信息到后端,触发权限更新
                    syncSubscriptionToServer(purchase)
                }
            }
        }
    }
    .enablePendingPurchases()
    .build()

3. 定期服务端轮询(兜底方案)

为避免推送通知丢失,可定期轮询Google Play Developer API:

  • 调用purchases.subscriptions.get接口,传入用户订阅ID和应用包名,获取最新订阅状态。
  • 检查订阅的autoRenewing状态和expiryTimeMillis,若到期时间更新则判定完成续费,触发权限添加逻辑。
  • 建议轮询间隔设为1小时左右,避免频繁调用导致API配额超限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:06:44