Google Play 开发者 API(Android Publisher)集成,采用托管式 OAuth。可管理应用、订阅、应用内购买和评论。在以下情况使用此技能:
Google Play : 使用管理下的 OAuth 认证, 访问 Google Play 开发者 API( Android Publisher).是一项面向实际任务的技能,主要用于Manage app 上市,订阅, 程序内购买, 评论, 以及更多.;QQQ快速启动.。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
通过受管 OAuth 认证访问 Google Play Developer API(Android Publisher)。可管理应用列表、订阅、应用内购买、评论等。
# 列出应用内商品
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/google-play/androidpublisher/v3/applications/{packageName}/inappproducts')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
https://api.maton.ai/google-play/{native-api-path}
Maton 将请求代理至 androidpublisher.googleapis.com,并自动注入您的 OAuth 令牌。
所有请求均需在 Authorization 请求头中提供 Maton API 密钥:
Authorization: Bearer $MATON_API_KEY
环境变量:请将您的 API 密钥设为 MATON_API_KEY:
export MATON_API_KEY="YOUR_API_KEY"
您可在 https://api.maton.ai 管理 Google OAuth 连接。
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/connections?app=google-play&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'google-play'}).encode()
req = urllib.request.Request('https://api.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
响应示例:
{
"connection": {
"connection_id": "{connection_id}",
"status": "ACTIVE",
"creation_time": "2025-12-08T07:20:53.488460Z",
"last_updated_time": "2026-01-31T20:03:32.593153Z",
"url": "https://connect.maton.ai/?session_token=...",
"app": "google-play",
"metadata": {}
}
}
在浏览器中打开返回的 url 以完成 OAuth 授权流程。
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
若您拥有多个 Google Play 连接,请使用 Maton-Connection 请求头指定目标连接:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/google-play/androidpublisher/v3/applications/{packageName}/inappproducts')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Maton-Connection', '{connection_id}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
若存在多个连接,务必始终包含该请求头,以确保请求被路由至预期账户。
GET /google-play/androidpublisher/v3/applications/{packageName}/inappproducts
GET /google-play/androidpublisher/v3/applications/{packageName}/inappproducts/{sku}
POST /google-play/androidpublisher/v3/applications/{packageName}/inappproducts
Content-Type: application/json
{
"packageName": "com.example.app",
"sku": "premium_upgrade",
"status": "active",
"purchaseType": "managedUser",
"defaultPrice": {
"priceMicros": "990000",
"currency": "USD"
},
"listings": {
"en-US": {
"title": "Premium Upgrade",
"description": "Unlock all premium features"
}
}
}
PUT /google-play/androidpublisher/v3/applications/{packageName}/inappproducts/{sku}
Content-Type: application/json
{
"packageName": "com.example.app",
"sku": "premium_upgrade",
"status": "active",
"purchaseType": "managedUser",
"defaultPrice": {
"priceMicros": "1990000",
"currency": "USD"
}
}
DELETE /google-play/androidpublisher/v3/applications/{packageName}/inappproducts/{sku}
GET /google-play/androidpublisher/v3/applications/{packageName}/subscriptions
GET /google-play/androidpublisher/v3/applications/{packageName}/subscriptions/{productId}
POST /google-play/androidpublisher/v3/applications/{packageName}/subscriptions
Content-Type: application/json
{
"productId": "monthly_premium",
"basePlans": [
{
"basePlanId": "p1m",
"autoRenewingBasePlanType": {
"billingPeriodDuration": "P1M"
}
}
],
"listings": [
{
"languageCode": "en-US",
"title": "Premium Monthly"
}
]
}
GET /google-play/androidpublisher/v3/applications/{packageName}/purchases/products/{productId}/tokens/{token}
POST /google-play/androidpublisher/v3/applications/{packageName}/purchases/products/{productId}/tokens/{token}:acknowledge
Content-Type: application/json
{
"developerPayload": "optional payload"
}
GET /google-play/androidpublisher/v3/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}
POST /google-play/androidpublisher/v3/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:cancel
POST /google-play/androidpublisher/v3/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:refund
GET /google-play/androidpublisher/v3/applications/{packageName}/reviews
GET /google-play/androidpublisher/v3/applications/{packageName}/reviews/{reviewId}
POST /google-play/androidpublisher/v3/applications/{packageName}/reviews/{reviewId}:reply
Content-Type: application/json
{
"replyText": "Thank you for your feedback!"
}
POST /google-play/androidpublisher/v3/applications/{packageName}/edits
GET /google-play/androidpublisher/v3/applications/{packageName}/edits/{editId}
POST /google-play/androidpublisher/v3/applications/{packageName}/edits/{editId}:commit
DELETE /google-play/androidpublisher/v3/applications/{packageName}/edits/{editId}
// 列出应用内商品
const packageName = 'com.example.app';
const response = await fetch(
`https://api.maton.ai/google-play/androidpublisher/v3/applications/${packageName}/inappproducts`,
{
headers: {
'Authorization': `Bearer ${process.env.MATON_API_KEY}`
}
}
);
const products = await response.json();
console.log(products);
import os
import requests
headers = {'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'}
package_name = 'com.example.app'
# 列出应用内商品
response = requests.get(
f'https://api.maton.ai/google-play/androidpublisher/v3/applications/{package_name}/inappproducts',
headers=headers
)
products = response.json()
print(products)
{packageName} 替换为您应用的包名(例如:com.example.app)fields[]、sort[]、records[]),请使用 curl -g 参数禁用 glob 解析jq 或其他命令时,在某些 shell 环境中,$MATON_API_KEY 等环境变量可能无法正确展开,导致出现“Invalid API key”错误。| 状态码 | 含义 |
|---|---|
| 400 | 缺少 Google Play 连接 |
| 401 | Maton API 密钥无效或缺失 |
| 404 | 未找到包名或无访问权限 |
| 429 | 请求频率受限(每个账户每秒最多 10 次请求) |
| 4xx/5xx | 来自 Google Play API 的透传错误 |
MATON_API_KEY 环境变量是否已设置:echo $MATON_API_KEY
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
google-play 开头。例如:https://api.maton.ai/google-play/androidpublisher/v3/applications/{packageName}/inappproductshttps://api.maton.ai/androidpublisher/v3/applications/{packageName}/inappproducts