首页 > 解决方案 > Android 应用内购买:BillingClient:getPurchase() 失败。响应码:3

问题描述

我正在使用 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 console注册的google账号进行测试。

为什么我会收到此消息?

另外,这真的是检查订阅是否仍然有效的正确方法吗?

我已经尝试了很长时间才能找到这个解决方案,感谢您的帮助!

标签: androidandroid-inapp-purchase

解决方案


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

var list = billingClient.queryPurchases(SkuType.SUBS)


推荐阅读