【问题标题】:Android - queryPurchase() returns an empty list but I purchased an in app productAndroid - queryPurchase() 返回一个空列表,但我购买了应用内产品
【发布时间】:2021-01-22 16:12:45
【问题描述】:

我已经在我的应用中实现了应用产品。我可以成功购买,一切正常。但是在一台设备上,购买不起作用,尽管当我再次尝试购买时,我收到“产品已拥有”的响应,这表明购买很好。但是 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");
    
                }
            }
        };
    }

注意:计费结果、订阅响应代码一切似乎都成功了。在其他设备上一切正常。

有人有解决办法吗?感谢您的帮助!

【问题讨论】:

  • 你有没有试过清理 Play 缓存并再次调用 queryPurchases?还是您将应用内商品设置为“非消耗品”?如果没有,您是否在购买该商品的同一台设备上遇到了问题?
  • 是的,我已经多次清理 Play 缓存和查询购买。不,应用内商品未设置为非消耗品。是的,我在购买的同一台设备上遇到了这个问题。
  • 这里发生了同样的事情。一切都按照开发者指南实现。甚至在内部测试频道中发布了应用程序并从 Play 商店安装。当我调用 querySkuDetails 尝试再次订阅时,它会返回已拥有的项目结果。在查询购买(SUBS)中,列表返回为空
  • 这个有什么更新吗?

标签: android in-app-purchase billing android-billing google-play-billing


【解决方案1】:

这是自计费库版本 2.x 以来一直存在的已知错误(优先级:P1,严重性 S2)

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

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

然而,有时我们可能会错过一些事情:事实证明,您需要等待 billingClient.startConnection() 调用完成它的事情,并且 onBillingSetupFinished() 回调被调用提供计费客户端状态监听器。只有在那之后,您才能调用 queryPurchases 方法。如果您在完成与服务的连接之前调用 queryPurchases,您将得到一个空列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    相关资源
    最近更新 更多