将 google 播放计费库更新到版本 3,但行为令人困惑

Updating google play billing library to version 3 with confusing behavior

我有一个正常运行的 Android 实施应用内结算,使用结算客户端 1.0.2 库,一切正常。我有一个简单的高级升级,没有订阅。 现在我尝试升级到 3.0.0,我对我的代码进行了所有必要的更改(使用官方文档、发行说明和 Whosebug)并且它似乎可以工作。我知道我必须在三天内确认所有购买。未能正确识别购买将导致这些购买的报销。这就是我所做的。现在让我困惑的一点是:

我又一次测试了我的购买工作流程并调试了所有步骤以查看会发生什么。在 BillingManager 的 handlePurchase 里面,我使用了下面的代码,灵感来源于官方文档:

if (purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED) {
    if (!purchase.isAcknowledged()) {

        AcknowledgePurchaseParams acknowledgePurchaseParams = AcknowledgePurchaseParams.newBuilder().setPurchaseToken(purchase.getPurchaseToken()).build();

        AcknowledgePurchaseResponseListener acknowledgePurchaseResponseListener = new AcknowledgePurchaseResponseListener() {
            @Override
            public void onAcknowledgePurchaseResponse(BillingResult billingResult) {
                Toast.makeText(getContext(), "Purchase acknowledged", Toast.LENGTH_LONG);
            }
        };

        mBillingClient.acknowledgePurchase(acknowledgePurchaseParams, acknowledgePurchaseResponseListener);
     }
}

在第二行中,“isAcknowledged()”总是 returns true(因此 if 语句 returns false),尽管方法“acknowledgePurchase”从未被调用,也永远不会被调用……。有人对此行为有解释吗?怎么可能已经承认了呢?这会导致这些购买的真实应用程序购买报销吗?我只用了试用账号。

非常感谢您的帮助!

我找到问题中描述的行为的原因:

我之前使用相同的 Google 帐户测试购买流程(虽然这是一个简单的高级升级,没有订阅,但有一个简单的技巧可以“消费”这次购买并再次购买以进行测试)和这导致它从“isAcknowledged()”变为 return“真”。

创建一个全新的 Google 帐户并再次测试完整的工作流程后,一切正常,可以在调试模式下观察确认购买的过程!