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

Android Studio Google Play内购确认购买返回错误码5开发者错误如何解决

Google Play Billing 确认购买返回错误码5(DEVELOPER_ERROR)排查解决指南

错误核心原因

返回错误码5属于开发者侧配置或调用逻辑错误,无服务端/网络类问题导致该错误的场景。

常见触发场景

  • 接口与商品类型不匹配:acknowledgePurchase 仅适用于非消耗型商品、订阅商品的确认,如果你处理的是消耗型商品,必须调用 consumeAsync() 接口,错用接口是该错误最高发的原因
  • 重复确认:调用接口前未校验购买状态,对已经确认过、或者未支付成功的订单发起确认请求
  • BillingClient状态异常:调用确认接口时BillingClient未完成连接,未提前判断 billingClient.isReady() 状态
  • 应用配置不匹配:当前运行的应用包名、签名SHA1、版本号和Google Play Console上提交的应用配置不一致,测试场景下debug签名和后台配置的release签名不匹配为常见原因
  • 商品配置异常:Play Console后台对应商品ID未激活、ID和代码中发起购买时传入的ID不一致
  • 测试环境配置错误:测试设备登录的谷歌账号未加入应用测试白名单,用正式账号测试未正式发布的商品

排查解决步骤

  1. 先确认商品类型,调整对应调用接口
    如果是消耗型商品,将原有确认逻辑替换为消耗逻辑,代码示例:
ConsumeParams consumeParams = ConsumeParams.newBuilder()
        .setPurchaseToken(purchase.getPurchaseToken())
        .build();
billingClient.consumeAsync(consumeParams, (billingResult, purchaseToken) -> {
    if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
        Toast.makeText(MainActivity.this, "Consumed!", Toast.LENGTH_LONG).show();
    }
});
  1. 增加前置校验逻辑,确认所有条件满足后再发起确认请求:
  • BillingClient处于可用状态:billingClient.isReady() == true
  • 购买订单状态正常:purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED
  • 订单未被确认过:purchase.isAcknowledged() == false
  1. 核对应用配置:确保当前运行的安装包包名、签名SHA1、版本号和Google Play Console中对应渠道的配置完全一致,测试阶段建议上传安装包到内部测试轨道,从Play商店下载测试包验证
  2. 核对测试环境配置:确认测试账号已经加入应用的测试白名单,Play Console后台对应商品状态为已激活、商品ID和代码中使用的ID完全一致

内容的提问来源于stack exchange,提问作者Jaime Olivé

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:06:03