android - querySkuDetailsAsync 在尝试测试 Android 的应用内购买时收到 -1 的响应代码

标签 android in-app-purchase

我正在开发 Android 应用程序,并且希望进行应用内购买。为了测试这些,我只向我自己发布了一个 Alpha 版本。当我尝试查询产品详细信息时,我得到的响应代码为 -1,根据文档,这意味着服务已断开连接。我的相关代码:

mBillingClient = BillingClient.newBuilder(getContext()).setListener(new PurchasesUpdatedListener() {
        @Override
        public void onPurchasesUpdated(int responseCode, @Nullable List<Purchase> purchases) {
            Log.d(TAG, "Purchase Updated!");
        }
    }).build();

    mBillingClient.startConnection(new BillingClientStateListener() {
        @Override
        public void onBillingSetupFinished(int billingResponseCode) {
            if (billingResponseCode == BillingClient.BillingResponse.OK) {
                Log.d(TAG, "Billing setup complete!");
            }
        }
        @Override
        public void onBillingServiceDisconnected() {
            Log.d(TAG, "DISCONNECTED!");
            // Try to restart the connection on the next request to
            // Google Play by calling the startConnection() method.
        }
    });

    List skuList = new ArrayList<> ();
    skuList.add("plaque001");
    SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
    params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);
    mBillingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {
        @Override
        public void onSkuDetailsResponse(int responseCode, List<SkuDetails> skuDetailsList) {
            Log.d(TAG, "details response received!");
            Log.d(TAG, Integer.toString(responseCode));
        }
    });

每次我打开这个 fragment ,我都会在日志上看到:

details response received!
-1
Billing setup complete!

当我使用从 Play 商店下载的 Alpha 版本时,会出现这种情况,我在 Play 管理中心上有一个 ID“plaque001”标记为 Activity 的产品。 我究竟做错了什么? 我是否错过了设置和发布应用内购买的步骤? 我如何测试以确保产品正常工作?

最佳答案

startConnection 是一个异步调用,您在连接 BillingClient 之前尝试 querySkuDetailsAsync

mBillingClient.startConnection(new BillingClientStateListener() {
    @Override
    public void onBillingSetupFinished ( int billingResponseCode){
        if (billingResponseCode == BillingClient.BillingResponse.OK) {
            Log.d(TAG, "Billing setup complete!");

           //TODO query here. (extract into a separate method)
        }
    }
});

关于android - querySkuDetailsAsync 在尝试测试 Android 的应用内购买时收到 -1 的响应代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50361470/

相关文章:

android - 我应该将此类数据存储在 onSaveInstanceState() Bundle 中吗?

java - JUnit 调用一个调用另一个方法的方法返回 nullPointerException

ios - 应用内购买仍在等待审核

java - 使用 AsyncTask 将数据写入数据库更好吗?

android - 他们找到设备的任何方法是手机还是 android 中的标签?如何单独删除最近的应用程序按钮?

java - 在 Android 中使用 SSL

android 应用内计费 : remove ads

ios - 用于以下要求的应用内购买类型

ios - 自动续订订阅和应用收据

iphone - 从 iPhone 应用程序中删除自动续订订阅