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

基于Google Cloud Pub/Sub实现Android订阅通知后端监听的分步指导请求

基于Google Cloud Pub/Sub实现Android订阅通知后端监听的分步指导请求

Hey there, I totally get how frustrating it is when you're stuck connecting your Android subscriptions to your backend and can’t find clear, actionable steps—let’s walk through this properly using Google Cloud Pub/Sub, which is Google’s official recommended way for real-time subscription event notifications.

第一步:在Google Play开发者控制台完成基础配置

  • 打开你的Google Play Developer Console,找到对应的应用,进入「Monetization > Subscriptions」页面
  • 切换到「Subscription settings」标签,找到「Cloud Pub/Sub」板块
  • 点击「Set up」,选择一个已有的Google Cloud项目(如果没有就新建一个),确保你的Play账户拥有该Cloud项目的编辑权限
  • 启用Cloud Pub/Sub API(控制台会自动提示你完成这一步),保存配置后,Google Play就会开始把订阅相关的事件推送到你指定的Pub/Sub主题了

第二步:在Google Cloud控制台创建Pub/Sub主题与订阅

  • 进入Google Cloud Console,打开你刚才关联的项目
  • 搜索「Cloud Pub/Sub」进入服务页面,点击「Create topic」,给主题起个好记的名字(比如android-subscription-events)
  • 为这个主题创建订阅,这里分两种模式:
    • Push模式:适合你的后端是HTTP/HTTPS服务,Google会直接把事件推送到你指定的后端端点(比如https://your-backend-domain.com/subscription-webhook)。记得配置签名验证(后面会讲),防止伪造请求。
    • Pull模式:适合后端是后台服务,需要定期主动拉取事件。如果选这个,直接创建拉取型订阅即可。

第三步:后端配置签名验证(重中之重)

Google Play推送的事件会带有签名,你必须验证签名才能确保请求是合法的,防止恶意伪造:

  • 从Google Play Developer Console的「API access」页面下载Google的公钥,或者通过Pub/Sub的验证机制获取对应密钥
  • 在你的后端代码里实现验证逻辑,这里给个Java的简化示例(其他语言逻辑类似):
// 注意:实际开发要处理公钥缓存、异常捕获等细节
PublicKey publicKey = loadGooglePublicKeyFromFile(keyId);
Signature signature = Signature.getInstance("SHA256withRSA");
signature.initVerify(publicKey);
signature.update(requestBody.getBytes(StandardCharsets.UTF_8));
// 从请求头获取签名信息
String signatureHeader = request.getHeader("X-Goog-Signature");
boolean isValid = signature.verify(Base64.getDecoder().decode(signatureHeader));

if (!isValid) {
    throw new SecurityException("Invalid subscription event signature");
}

第四步:解析并处理订阅事件

Google Play推送的事件是JSON格式,包含关键信息,你需要解析后执行业务逻辑:

  • 提取核心字段:
    • subscriptionId:用户的订阅ID
    • purchaseToken:可用于调用Google Play Developer API获取更详细的订阅信息
    • eventType:事件类型,比如SUBSCRIPTION_ACTIVATED(订阅激活)、SUBSCRIPTION_EXPIRED(订阅过期)、SUBSCRIPTION_RENEWED(订阅续费)等
    • profileId:用户的Google Play账户ID,用来关联你后端的用户账号
  • 根据事件类型处理业务:
    • 激活/续费事件:给用户开通或延长服务权限
    • 过期/取消事件:收回用户的服务权限

第五步:测试整个流程

  • 在Google Play Developer Console里开启「Test purchases」,创建测试订阅套餐
  • 用测试账户在Android应用里完成订阅支付操作
  • 检查Pub/Sub主题是否收到事件:
    • Push模式:查看后端的请求日志,确认事件被正确接收
    • Pull模式:用gcloud命令行工具测试拉取:
gcloud pubsub subscriptions pull android-subscription-events-sub --auto-ack
  • 注意:测试时后端端点必须是公网可访问的,本地测试可以用ngrok之类的工具临时暴露端口

第六步:错误处理与幂等性保障

  • 后端收到Push请求后,必须返回200 OK状态码,否则Google会重复推送事件
  • 处理重复事件:每个事件都有唯一的eventId,后端可以用这个ID做幂等校验,避免重复执行相同的业务逻辑
  • 配置Pub/Sub的重试策略,比如设置消息过期时间,防止无效事件无限重试

如果还是找不到某个配置入口,多留意Play Console的菜单变化(有时候界面更新会调整位置),核心是确保你的Google Cloud项目和Play应用是正确关联的——这是整个流程的前提。

备注:内容来源于stack exchange,提问作者MohammedIsmael

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 08:24:11