【问题标题】:querySkuDetailsAsync receives responseCode of -1 while trying to test in-app purchasing for AndroidquerySkuDetailsAsync 在尝试测试 Android 应用内购买时收到 -1 的 responseCode
【发布时间】:2019-09-24 20:52:39
【问题描述】:

我正在开发一款 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));
        }
    });

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

details response received!
-1
Billing setup complete!

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

【问题讨论】:

  • 嗨诺姆!你设法解决了这个问题吗?我遇到了同样的问题:/
  • 我确实解决了这个问题,但我不记得确切是如何解决的。部分解决方案是从developer.android.com/reference/com/android/billingclient/api/… 意识到 -1 的响应代码意味着服务完全断开连接。我认为它根本没有连接,所以这不是代码问题,而是一些更大的问题。等我有时间的时候,我会试着弄清楚我是如何解决这个问题的。希望这会有所帮助!
  • 我现在遇到了这个问题。

标签: android in-app-purchase


【解决方案1】:

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)
        }
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 2012-12-01
    • 1970-01-01
    相关资源
    最近更新 更多