在应用内购买Android:BillingClient:getPurchase()失败。响应码:3

时间:2020-05-10 20:37:36

标签: android android-inapp-purchase

我正在使用BillingClient api在应用购买中实现Android。

我成功设置了计费客户端,如下所示:

   billingClient = BillingClient.newBuilder(this)
        .enablePendingPurchases()
        .setListener(this).build()

我实现了要进行应用内购买的代码,在我的情况下是订阅。

我的问题如下,我需要(定期)检查用户是否仍具有有效的订阅,或者他们是否已取消订阅。从我的阅读中,我可以调用方法queryPurchases(PRODUCT_ID)。我这样做如下:

 override fun onBillingSetupFinished(billingResult: BillingResult?) {
            if (billingResult != null) {

                if (billingResult.responseCode == BillingClient.BillingResponseCode.OK){

                    // The BillingClient is ready. You can query purchases here.

                    Log.d(TAG_PURCHASES_ACTIVITY, "BillingClient ready and connected")

                    billingClient.queryPurchases(MONTHLY_AGENT_SUBSCRIPTION_PRODUCT_ID)

                }

                else{
                    Log.d(TAG_PURCHASES_ACTIVITY, "BillingClient ERROR: ${billingResult.responseCode}")
                }



            }
        }

但是,我在控制台中收到此消息:

W/BillingClient: getPurchase() failed. Response code: 3

现在,经过研究,许多人都说这是来自旧手机以及旧版本的Google Play服务。但是我正在使用新的手机(Pixel 3a),它是最新的。这部手机还具有在Google Play控制台中注册的Google帐户以进行测试。

为什么我收到此消息?

此外,这真的是检查订阅是否仍处于活动状态的正确方法吗?

我很久以来一直在寻找这种解决方案,谢谢您的帮助!

1 个答案:

答案 0 :(得分:2)

我犯了一个错误,将产品ID作为参数传递给查询请求。 这是我需要做的:

var list = billingClient.queryPurchases(SkuType.SUBS)