使用API验证Google Play收据时遇404不支持文档类型错误
解决Google Play收据验证API返回404 "The document type is not supported"错误
错误原因分析
这个unsupportedDocType错误指向token参数,常见诱因有这几个:
- 请求端点和购买类型不匹配:你用的是一次性商品(products)的验证接口,但如果用户买的是订阅(subscriptions),就会触发这个报错。
- Purchase Token无效或过期:传入的token不是有效的一次性商品购买凭证,可能被篡改、截断或者已失效。
- 服务账号权限没配置到位:虽然拿到了token,但服务账号没被添加到Google Play Console的对应项目里,导致无权访问资源。
修复方案
1. 匹配购买类型切换接口
如果是订阅类购买,把API地址换成订阅验证端点:
# 订阅验证接口 url = f"https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{package_name}/purchases/subscriptions/{product_id}/tokens/{purchase_token}"
如果确实是一次性商品,核对product_id是否和Google Play Console里配置的完全一致(注意大小写、特殊字符)。
2. 校验Purchase Token有效性
- 确保token是客户端直接返回的原始值,没有被转义、截断或修改。
- 先用Google Play Console提供的测试token做验证,排除token本身的问题。
3. 检查服务账号权限
- 登录Google Play Console,进入「用户和权限」页面,把你的服务账号邮箱添加为开发者或财务角色。
- 确认服务账号已被授权访问目标应用,且相关API处于启用状态。
调试用请求示例(一次性商品)
package_name = 'com.your.package' product_id = 'your_product_id' purchase_token = 'valid_purchase_token' url = f"https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{package_name}/purchases/products/{product_id}/tokens/{purchase_token}" response = requests.get(url, headers={'Authorization': f'Bearer {credentials.token}', 'Accept': 'application/json'}) # 打印响应便于调试 print(response.json())
内容的提问来源于stack exchange,提问作者Technical Storm
相关产品推荐
相关产品推荐

