簡體   English   中英

IabResult:設備上的計費服務不可用。 (回復: 3:Billing Unavailable)

[英]IabResult: Billing service unavailable on device. (response: 3:Billing Unavailable)

我正在嘗試使用應用內計費:

mIabHelper = new IabHelper(this, BILLING_KEY);
        mIabHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
            @Override
            public void onIabSetupFinished(IabResult result) {
                if (!result.isSuccess()) {
                    Log.d(TAG, "Problem setting up In-app Billing: " + result);
                }
            }
        });

並得到錯誤:

Problem setting up In-app Billing: IabResult: Billing service unavailable on device. (response: 3:Billing Unavailable)

為什么? 試圖清除 Play 商店的緩存,對我不起作用。

好吧,如果沒有太多信息,我們無法為您提供幫助。因此,我會嘗試為您做一個清單,以防您遺漏了什么:

  1. 你在模擬器上測試嗎?計費服務應該在設備上測試,但如果你真的要在模擬器上測試,請確保模擬器已經安裝並設置了google play。這一點非常重要!

  2. 您是否在清單中設置了正確的權限? (com.android.vending.BILLING)

  3. 如果您仍在測試應用程序,您是否從 Playstore 獲得了測試應用程序許可證,在您的 SDK 中導入了關卡,設置了您的許可證驗證庫? (您可以在此處進行操作: 設置

  4. 在您的 onActivityResult 活動中,您是否正確處理了活動結果?正如在 google 的示例中所見,您應該這樣做:


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
  Log.i(TAG, "onActivityResult(" + requestCode + "," + resultCode + "," + data);

  // Pass on the activity result to the helper for handling
  if (!inappBillingHelper.handleActivityResult(requestCode, resultCode, data)) {
    super.onActivityResult(requestCode, resultCode, data);
  }
  else {
    Log.i(TAG, "onActivityResult handled by IABUtil.");
  }
}

還有更多信息可能很有用,比如如果您在模擬器或設備上進行測試,設備名稱,Android 版本等...

此錯誤表明您正在連接設備上的應用內結算服務,但該服務不支持 IAB 版本 3。可能是您設備的 Google Play 版本僅支持 IAB 版本 2。 您的設備上運行的是哪個版本的 Google Play?

您的 Google Play 版本是否具有其他功能(例如,您能否打開 Google Play 商店)? 有時,如果您設備上的日期已關閉,或者存在其他問題,Google Play 本身可能會南下。

最后,你的 logcat 輸出是什么? 如果您提供更多詳細信息,則提供幫助會更容易。

在我注冊所有內容並設置 Google Play 商店之前安裝應用程序時出現了該錯誤。 一旦我設置了 Google Play 商店帳戶,錯誤就消失了。

擦幫我。 奇怪的錯誤。

盡管我使用的是 3.0 版的帳單,但帳單 2.0 版的文檔實際上比 3.0 版更有幫助。

以下是 2.0 對響應代碼 3 的描述:

表示由於您指定的 API_VERSION 未被 Google Play 應用程序識別或用戶不符合應用內購買資格(例如,用戶居住在禁止應用內購買的國家/地區),因此應用內購買不可用.

對我來說,在測試之前,我必須先在手機上設置一個測試 Google 帳戶。 我忘了那一步。 一旦我這樣做了,它就為我修復了......

在此處查找服務器響應代碼:

http://developer.android.com/google/play/billing/v2/billing_reference.html

http://developer.android.com/google/play/billing/billing_reference.html

我發現了一個需要修復的問題,請嘗試使用您的 LuckyPatcher 進行 root,打開配置切換 -> 禁用計費。

在此處輸入圖片說明

當我從手機中刪除所有 Google 帳戶時,我遇到了這個錯誤(因此擦除修復,因為擦除后您可能會在手機重新啟動后設置一個帳戶)。

添加帳戶后,我沒有看到此錯誤。

相關問題InApp 購買中出現此錯誤代碼 3 的可能性有哪些? .

有同樣的問題。

我的設備是用舊版本的 Google Market 植根和 ROM 的,它不能自我更新。 您可以通過在 AppManager 中查看來驗證您的 Market/Play 版本。

我實際上決定使用另一台設備,但我想否則我將不得不找到一種方法來升級 Market/Play 版本。

我在擦除 Google Play 緩存時遇到此錯誤。 您必須重新打開 Google Play 應用並接受條款,然后才能再次對 IAB 發揮作用。

這是因為當前登錄設備的帳戶未在 Google Developer Console 中注冊。 要解決此問題, 1. 轉到您的 Google Developer Consol 2. 在“帳戶詳細信息”選項卡中,在“具有測試訪問權限的 Gmail 帳戶”中輸入電子郵件地址(在設備中),然后按頂部的保存按鈕。

就是這樣。

就我而言,我為 serviceIntent.setPackage("com.android.vending"); 設置了不同的值。 來自 IabHelper。 確保使用此值保留它

我有同樣的錯誤,然后注意到我的手機處於飛行模式! 一旦連接恢復,我就可以開始了。

IabHelper.java

Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND");
serviceIntent.setPackage("com.android.vending");

如果無法將 action 和 packageName 正確指定到IInAppBillingService.aidlIInAppBillingService.aidl

已經想出了解決辦法。

嘗試以下 3 個步驟:

  1. 清除 GooglePlay 應用和 Google Play 服務應用的緩存。
  2. 刪除 IInAppBillingService.aidl 文件。
  3. 再次從 sdk 文件夾復制上述文件並將其粘貼到我的應用程序中的 aidl 文件夾中。

當我們將aidl文件從一個項目復制到另一個項目時,通常會出現這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM