使用Android Publisher API验证应用内购买时遇「Invalid Value」错误
排查Android Publisher API「Invalid Value」400错误
你提供的curl命令:
curl --location 'https://androidpublisher.googleapis.com/androidpublisher/v3/applications/cz.sduhe/purchases/products/credit200/tokens/GPA.3384-7483-3665-46780' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer XXX'
错误响应:
{ "error": { "code": 400, "message": "Invalid Value", "errors": [ { "message": "Invalid Value", "domain": "global", "reason": "invalid" } ] } }
既然已确认访问令牌有效,以下是其他潜在原因及排查解决方法:
应用包名不完整或错误:URL中
applications/后的cz.sduhe可能不是完整的Android应用包名。Android包名通常是多级结构(如cz.sduhe.myapp),需与Google Play Console中应用的包名完全一致。
排查:登录Google Play Console,找到对应应用,复制应用标识下的完整包名,替换URL中的包名部分。商品ID不匹配:URL中的
credit200需与Google Play Console中配置的应用内商品ID完全一致,注意大小写、特殊字符及拼写错误。
排查:进入Google Play Console的「应用内商品」页面,找到目标商品,复制系统生成的商品ID替换到命令中。购买令牌无效或格式错误:
- 检查
GPA.3384-7483-3665-46780是否存在拼写错误(如多空格、少字符); - 该令牌可能已被消费、过期或撤销,需确保购买状态有效;
- 测试环境(如内部测试、封闭测试)的令牌不能用于生产API调用,反之亦然。
排查:用测试账号重新发起购买获取新的有效令牌,确保令牌与当前调用环境(测试/生产)匹配。
- 检查
端点路径与商品类型不匹配:如果你的商品是订阅类型,需使用
subscriptions端点而非products(products对应一次性消耗品/非消耗品)。
排查:确认商品类型,调整URL路径:订阅商品应使用/purchases/subscriptions/{subscriptionId}/tokens/{token}结构。请求参数冗余:
--location参数会让curl跟随重定向,但该API端点不需要重定向,多余参数可能导致请求异常。
排查:移除--location参数,简化curl命令后重试。
内容的提问来源于stack exchange,提问作者RitchyCZE
相关产品推荐
相关产品推荐

