我想测试我的后端服务器以确保我正确处理来自 Google.Apis.AndroidPublisher.v3.purchases.products.get 的响应。使用测试帐户启动计费流程时,我在 PurchasesUpdatedListener 中收到了 BillingClient.BillingResponseCode.ITEM_UNAVAILABLE 的响应代码。
以下是重现的步骤:
- 我正在使用 Galaxy 选项卡和 Android Studio 并在调试器中运行该应用程序
- 使用 billingClient.launchBillingFlow 启动购买对话框
- Android 购买对话框出现并显示错误:您请求的项目不可购买。
- 当用户在对话框中按下 OK 时,PurchaseUpdatedListener 会给出一个响应代码: billingResult.getResponseCode() = BillingClient.BillingResponseCode.ITEM_UNAVAILABLE
这是我已验证的内容:
- 正在购买的商品在 Google Play 管理中心中处于活动状态
- 调用 billingClient.querySkuDetailsAsync 时正确返回此项
- 我用来调试的平板电脑上的帐户是控制台上的许可证测试员
- 我在控制台的许可证测试器选项卡中尝试了 RESPOND_NORMALLY 和 LICENSED
- 版本代码与封闭测试轨道上上传的相同
- 平板电脑上的帐户有一张有效的信用卡
如果我使用应用内项目 android.test.purchased 尝试上述过程,那么一切正常。当用户使用假信用卡对话框按下购买按钮时,我得到正确的响应(billingResult.getResponseCode() = BillingClient.BillingResponseCode.OK)。
但是,在这种情况下,我不能使用 PurchasesUpdatedListener 提供的令牌,因为它是假的,而且 Google.Apis.AndroidPublisher.v3.purchases.products.get 给出了 400 错误。我需要真正的购买才能成功,这样我才能将其发送到我的服务器,以便它可以向 Google.Apis.AndroidPublisher.v3 发送一个真正的令牌以获得真正的响应。
根据此链接:https://developer.android.com/google/play/billing/test?authuser=1,我想做的事情是可能的。根据链接,该应用程序不必在 alpha 或 beta 测试轨道上,并且可以是侧面加载的调试版本。
有谁知道为什么我在测试期间得到一个 BillingClient.BillingResponseCode.ITEM_UNAVAILABLE ?