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 Store, не работал для меня.

14 ответов


Ну, мы не можем помочь вам, не имея много информации.Поэтому вместо этого я попытаюсь сделать контрольный список для вас, если вы что-то пропустили:

1)вы тестируете на эмуляторе?Услуги биллинга должны быть протестированы на устройствах, но если вы действительно нужно протестировать эмулятор, убедитесь, что в эмуляторе установлен и настроен google play.Это очень важно!

2) вы установили правильное разрешение в манифесте? (com.андроид.продажа.Выставление счетов)

3)Если вы не все еще тестируя приложение, вы получили лицензию на тестовое приложение из playstore, импортировали lvl в 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.");
}
}

также может быть полезной дополнительная информация, например, если вы тестируете эмулятор или устройство, устройство имя, версия Андроида etc..


эта ошибка указывает, что вы подключаетесь к службе выставления счетов в приложении на вашем устройстве, но эта служба не поддерживает IAB версии 3. Возможно, версия Google Play вашего устройства поддерживает только версию 2 IAB. Какая версия Google Play работает на вашем устройстве?

является ли ваша версия Google Play в противном случае функциональной (например, вы можете открыть Google Play store)? Иногда, если дата на вашем устройстве выключена, или есть какая-то другая проблема, Google Play сама может пойти на юг.

наконец, что в вашем выходе logcat? Было бы легче оказать помощь, если бы вы предоставили более подробную информацию.


Я получил эту ошибку, когда я установил приложение, прежде чем я зарегистрировал все и установил Google Play store. Как только я установил учетную запись Google Play Store, ошибка исчезла.


документация для версии 2.0 биллинга была на самом деле более полезной, чем 3.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


Я нашел проблему, чтобы исправить, попробуйте root с ur LuckyPatcher, откройте config переключатели - > отключить биллинг.

enter image description here


Wipe помог мне. Странная ошибка.


У меня была именно эта ошибка, когда я удалил все учетные записи Google с телефона (таким образом, стереть исправления, потому что после очистки вы, вероятно, создали учетную запись после перезагрузки телефона).

после добавления учетной записи я не видел эту ошибку.

связанный с этим вопрос каковы возможности получить этот код ошибки 3 в iNAPP purchase?.


была та же проблема.

мое устройство было укоренено и ПЗУ с более старой версией Google Market, которая не обновлялась самостоятельно. Вы можете проверить свою версию Market / Play, посмотрев на нее в AppManager.

Я на самом деле решил использовать другое устройство, но я думаю, что в противном случае мне придется найти способ обновить версию Market/Play.


Я получил эту ошибку от очистки кэша Google Play. Вы должны снова открыть приложение Google Play и принять условия, прежде чем оно снова будет работать для IAB.


Это потому, что учетная запись, которая в настоящее время зарегистрирована в устройстве, не зарегистрирована в консоли разработчика Google. Чтобы решить эту проблему, 1. Перейдите в консоль разработчика Google 2. На вкладке Сведения об учетной записи введите адрес электронной почты (который находится в устройстве) в "учетные записи Gmail с тестовым доступом" и нажмите кнопку Сохранить вверху.

вот и все.


в моем случае я установил другое значение для serviceIntent.setPackage("com по.андроид.вендинг"); от IabHelper. Убедитесь, что вы оставили его с этим значением


У меня была та же ошибка, а потом заметила, что мой телефон был в режиме самолета! Как только связь была восстановлена, я был готов идти.


IabHelper.java

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

это ошибка, если невозможно правильно указать действие и имя пакета в IInAppBillingService.aidl.


придумали решение.

попробуйте следующие 3 шага:

  1. очистите кэш приложения GooglePlay и приложения Google Play services.
  2. Удалить IInAppBillingService.файл aidl.
  3. скопируйте вышеуказанный файл снова из папки sdk и вставьте его в папку aidl в моем приложении.

эта проблема обычно возникает, когда мы копируем файл aidl из одного проекта в другой проект.