后端验证Google订阅时如何获取用户所选Base Plan ID?
获取Google Play订阅用户所选Base Plan ID的解决方案(服务账号认证场景)
嘿,我之前遇到过一模一样的问题!Google推出Base Plans之后,一开始我也在V1和V2接口里找不到对应的ID,后来才发现关键信息藏在V2接口的嵌套字段里。以下是具体的解决步骤:
- 首先确保你调用的是Subscriptions V2接口(
purchases.subscriptionsv2.get),旧版的V1订阅接口确实不支持Base Plan相关字段,必须用V2接口才行。 - 在接口返回的
SubscriptionPurchaseV2对象中,找到lineItems数组——这个数组包含了当前订阅的所有计费条目,通常只会有一个条目对应用户正在使用的Base Plan。 - 数组里的每个
SubscriptionPurchaseLineItem对象中,都有一个basePlanId字段,这就是你要找的用户所选Base Plan的ID。
给你看个简化后的响应示例,方便你定位字段:
{ "lineItems": [ { "productId": "你的父订阅产品ID", "basePlanId": "monthly_base_plan", // 这就是目标Base Plan ID "expiryTime": "2024-12-31T23:59:59Z", "autoRenewing": true } ], "subscriptionId": "你的订阅ID", // 其他响应字段... }
另外还要注意两个关键点:
- 确认你的服务账号已经配置了Android Publisher API的正确权限,至少需要「查看应用信息并下载报告」的权限,拥有「管理应用发布」权限会更稳妥。
- 检查你的接口调用是否使用了最新的API版本(当前是v3),同时确保后端解析响应时没有遗漏
lineItems这个嵌套字段。
既然你已经能在Play Console的订单详情里看到Base Plan信息,说明数据肯定是存在的,只要按照上面的方式调用V2接口,就能在后端拿到这个ID用于订阅验证了。
内容的提问来源于stack exchange,提问作者marekk
相关产品推荐
相关产品推荐

