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

在C#/ASP.NET MVC后端读取Google Pub/Sub安卓订阅完整详情

获取Google Play订阅完整详情的实现步骤

我耗时3天完成安卓应用的Google Pub/Sub推送通知配置,目前后端已能接收安卓端的所有订阅通知,但不知如何读取付款人、过期日期等完整订阅详情,也不清楚必要步骤。

后端收到的Pub/Sub通知格式:

{
    "message" :
    {
        "attributes":{ "key": null },
        "data": "JSON_CODE",
        "messageId": "6542662753109422",
        "message_id": "6546652753109422",
        "publishTime": "2023-01-01T15:53:42.962Z",
        "publish_time": "2023-01-01T15:53:42.962Z"
    },
    "subscription": "projects/{api_id}/subscriptions/{service_name}-sub"
}

message.data解码后的内容:

{
    "version": "1.0",
    "packageName": "com.expamle.android",
    "eventTimeMillis": "1672588422635",
    "subscriptionNotification": 
    {
        "version": "1.0",
        "notificationType": 4,
        "purchaseToken": "lkgkfeofbmfnnalianjdppej.AO-J1OxNcztkkzntpvQk4nttaBiqHJ5WMD58tb_KxCdsyPooE_QPvqXdtnoEpqD0t96j5V4lxol3_FfpuRNDvBeRTYKo_ixJtw",
        "subscriptionId": "12_month_plan"
     }
}

我持有keys.json文件,且已配置Pub/Sub服务账号的全部必要权限,以下是获取完整订阅详情的方法:

  • 核心逻辑:Pub/Sub推送的通知仅包含基础订阅标识,需通过Google Play Developer API查询完整订阅数据
  • 步骤1:启用Google Play Developer API
    在Google Cloud Console中找到并启用该API,确保服务账号拥有调用权限
  • 步骤2:服务账号认证
    使用keys.json生成OAuth2认证令牌,或直接借助官方SDK(支持Java、Python等)处理认证
  • 步骤3:调用订阅查询接口
    调用purchases.subscriptions.get接口,传入以下参数:
    • packageName:解码后data中的对应字段值
    • subscriptionId:解码后data中的对应字段值
    • token:解码后data中的purchaseToken字段值
  • 步骤4:解析响应数据
    接口返回的响应包含完整订阅信息,比如:
    • expiryTimeMillis:订阅过期时间戳
    • autoRenewing:自动续费状态
    • priceAmountMicros:订阅价格
    • purchaseTimeMillis:购买时间戳
    • 付款人相关标识等

示例代码(Python):

from google.oauth2 import service_account
from googleapiclient.discovery import build

# 加载服务账号密钥
SERVICE_ACCOUNT_FILE = 'keys.json'
SCOPES = ['https://www.googleapis.com/auth/androidpublisher']

credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE, scopes=SCOPES)

# 初始化API客户端
android_publisher = build('androidpublisher', 'v3', credentials=credentials)

# 接口参数
package_name = 'com.expamle.android'
subscription_id = '12_month_plan'
purchase_token = 'lkgkfeofbmfnnalianjdppej.AO-J1OxNcztkkzntpvQk4nttaBiqHJ5WMD58tb_KxCdsyPooE_QPvqXdtnoEpqD0t96j5V4lxol3_FfpuRNDvBeRTYKo_ixJtw'

# 调用接口
response = android_publisher.purchases().subscriptions().get(
    packageName=package_name,
    subscriptionId=subscription_id,
    token=purchase_token
).execute()

# 打印完整订阅详情
print(response)
  • 注意事项:必须将服务账号添加到Google Play Console的开发者团队,并授予查看应用或财务数据权限,否则会触发权限不足错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:55:37