Android - queryPurchase() 返回一个空列表,但我购买了应用内产品

问题描述

我已在我的应用中的应用产品中实施。我可以成功购买,一切正常。但是在一台设备上,购买不起作用,尽管当我再次尝试购买时,我收到“产品已拥有”的响应,表明购买没问题。但是 queryPurchase() 返回一个空的采购清单。 我在该设备上只有一封电子邮件

public void queryPurchase() {
    Runnable queryPurchaseRequest = getQueryPurchaseRequest();
    executeRequest(queryPurchaseRequest);
}

    private Runnable getQueryPurchaseRequest() {
        return new Runnable() {
            @Override
            public void run() {
                Purchase.PurchasesResult purchasesResult = mBillingClient.queryPurchases(BillingClient.SkuType.INAPP);
                if(purchasesResult.getResponseCode() == BillingResponseCode.OK) {
                    ArrayList<Purchase> purchaseList = new ArrayList<>();
                    purchaseList.addAll(purchasesResult.getPurchasesList());
    
                    if(isSubscriptionSupported()) {
                        Purchase.PurchasesResult subscriptionResult
                                = mBillingClient.queryPurchases(BillingClient.SkuType.SUBS);
    
                        if (subscriptionResult.getResponseCode() == BillingResponseCode.OK) {
                            purchaseList.addAll(subscriptionResult.getPurchasesList());
                        } else {
                            Log.e(TAG,"Got an error response trying to query subscription purchases");
                        }
                    }
                    onQueryPurchasesFinished(purchaseList);
                } else {
                    Utilities.setPurchaseLog("onBilling manager on query purchase request: result unkNown\n");
    
                }
            }
        };
    }

注意:计费结果,订阅响应代码一切似乎都成功了。一切都在其他设备上完美运行。

大家有什么解决办法吗?感谢您的帮助!

解决方法

自从计费库版本 2.x(优先级:P1,严重性 S2)以来,这是一个已经发生多年的已知错误

https://issuetracker.google.com/issues/160473001

我认为你能做的最好的事情就是去那里并留下你的星号/评论以尝试加快速度。

然而,有时我们会错过一些事情:事实证明,您需要等待 billingClient.startConnection() 调用完成它的事情,并且 onBillingSetupFinished() 回调在提供的BillingClientStateListener。只有在此之后,您才能调用 queryPurchases 方法。如果您在完成与服务的连接之前调用 queryPurchases,您将获得一个空列表。