web-dev-qa-db-ja.com

IabResult:課金サービスはデバイスで利用できません。 (応答:3:請求不可)

アプリ内課金を使用しようとしています:

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ストアのキャッシュをクリアしようとしましたが、うまくいきませんでした。

24
int_32

ワイプは助けてくれました。奇妙なエラー。

2
int_32

さて、私たちは多くの情報がなければあなたを助けることはできません。

1)エミュレーターでテストしていますか?

2)マニフェストに正しい許可を設定しましたか? (com.Android.vending.BILLING)

3)まだアプリをテストしている場合、プレイストアからテストアプリライセンスを取得し、SDKにLVLをインポートし、ライセンス検証ライブラリを設定しましたか? (ここでフォローできます: 設定

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バージョンなどでテストしている場合など、より多くの情報があると便利です。

38
sokie

このエラーは、デバイスのアプリ内課金サービスに接続しているが、サービスがIABバージョン3をサポートしていないことを示しています。デバイスのバージョンのGoogle Playは、IABのバージョン2のみをサポートしている可能性があります。デバイスで実行しているGoogle Playのバージョンは何ですか?

Google Playのバージョンは他の機能を備えていますか(たとえば、Google Playストアを開くことができますか)?デバイスの日付がオフになっている場合、またはその他の問題がある場合、Google Play自体が南に移動することがあります。

最後に、logcatの出力には何が含まれていますか?詳細を入力すると、支援が提供しやすくなります。

6
Carl

すべてを登録してGoogle Playストアを設定する前に、アプリをインストールしたときにそのエラーが発生しました。 Google Playストアアカウントを設定すると、エラーはなくなりました。

5
Gene

請求のバージョン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

3
Nathan Prather

修正する問題を見つけました。urLuckyPatcherでrootを試し、configのトグルを開きます->課金を無効にします。

enter image description here

3
KingRider

電話からすべてのGoogleアカウントを削除したときに、まさにこのエラーが発生しました(ワイプ後におそらく電話の再起動後にアカウントを設定するため、修正をワイプします)。

アカウントを追加した後、このエラーは表示されませんでした。

関連する問題 InApp購入でこのエラーコード3を取得する可能性はありますか?

2

Google Playのキャッシュを消去すると、このエラーが発生しました。 IABが再び機能する前に、Google Playアプリを再度開き、条件に同意する必要があります。

1
Lee

同じ問題があった。

私のデバイスは、自己更新しなかった古いバージョンのGoogleマーケットでルート化され、ROM化されました。 AppManagerでマーケット/プレイバージョンを確認することで確認できます。

実際に別のデバイスを使用することにしましたが、そうでない場合はMarket/Playバージョンをアップグレードする方法を見つける必要があると思います。

1
Doigen

同じエラーが発生し、携帯電話が機内モードになっていることに気付きました!接続が回復したら、行ってよかったです。

0
Papasmile

IabHelper.Java

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

アクションとpackageNameをIInAppBillingService.aidlに正しく指定できない場合はエラーになります。

0
Hashido Tomoya

ソリューションを考え出しました。

以下の3つのステップを試してください。

  1. GooglePlayアプリとGoogle Playサービスアプリのキャッシュをクリアします。
  2. IInAppBillingService.aidlファイルを削除します。
  3. 上記のファイルをSDKフォルダーから再度コピーして、アプリのaidlフォルダーに貼り付けます。

この問題は通常、あるプロジェクトから別のプロジェクトにエイドルファイルをコピーするときに発生します。

0
Ankur Yadav

これは、現在デバイスにログインしているアカウントがGoogle Developer Consoleに登録されていないためです。この問題を解決するには、1。Google Developer Consolにアクセスします。2. [アカウントの詳細]タブで、[テストアクセスのあるGmailアカウント]にメールアドレス(デバイス内)を入力し、上部の[保存]ボタンを押します。

それでおしまい。

0
Yasir Ali

私の場合、serviceIntent.setPackage( "com.Android.vending");に別の値を設定しました。 IabHelperから。この値のままにしておいてください

0
Alex