Иногда люди сталкиваются с ошибкой инициализации биллинга, не до конца понимая, что это за ошибка и как её решить. Чтобы в этом разобраться для начала необходимо понять, что же такое биллинг.
Что такое биллинг?
Биллинг – (от английского «bill» — счёт) это специальная система, выставляющая различные счета клиентам. Данные счета выставляются за использование каких-либо услуг компании или же за покупку товаров. В наше время биллинг в компаниях является крайне сложным комплексом технологий и программ, которые помогают вести учёт всех предоставленных услуг, устанавливать определённые тарифы и, в конечном итоге, отправлять клиентам счета, учитывая все акции и скидки.
В сотовой связи биллинг работает в реальном времени. То есть со счёта клиента денежные средства списываются моментально. За это клиент сразу же получает необходимые ему услуги (например, Интернет-трафик, SMS и др.). Чтобы работать в таком режиме, система должна быть очень надёжной, а стабильность работы не должна прерываться ни на секунду.
Ошибки инициализации биллинга
При покупке различного рода услуг у операторов связи (телекоммуникации) и даже при покупке различного контента в Интернете может возникнуть ошибка биллинга. Такие ошибки при выставлении счёта не дают возможность приобрести необходимые человеку услуги или товары, однако есть несколько способов для исправления этой ошибки.
Совершить покупку в другое время
Ошибка биллинга может появиться по разным причинам. Если человек сделал много запросов на приобретение товара или услуг, которые были отклонены, то скорее всего возникнет данная ошибка. К тому же, банковская карта, с которой должна производиться оплата может быть помечена как «Подозрительный способ оплаты». Также необходимо внимательно посмотреть, какой регион указан при покупке. Если регион указан неверно, то скорее всего появится ошибка биллинга.
В таких случаях клиенту необходимо подождать 1-2 суток и попытаться совершить покупку снова. Чаще всего достаточно подождать 24 часа, после чего совершение покупки не составит проблем.
Проверить правильность платёжной информации
Возможно ошибка возникает из-за неправильной платёжной информации клиента. Ему необходимо тщательно проверить все данные, которые он указывал. Это может быть регион, способ оплаты, банковская карта и другие данные. Из-за неправильно указанных данных система не может выставить счёт, выдавая такие ошибки биллинга.
Очистка кэша и изменение личных данных
Накопленный кэш зачастую является проблемой некорректной работы. Чтобы исправить это, достаточно просто удалить весь кэш с устройства. Если неполадки не устранились, то можно попробовать удалить личные данные и ввести их заново. Для обновления информации в системе может потребоваться от 3 до 48 часов. После этого можно заново проводить платёжные операции.
- Добавить свои
Оставьте свой комментарий
10 ответов
Совершенство! Я потратил много времени, пытаясь выяснить, почему я получаю ошибку. Ошибка аутентификации. Необходимо войти в свою учетную запись google. И через много часов я узнал — я пытался получить доступ к неправильному идентификатору элемента с консоли. В элементе подписки на консоль разработчика был включен «премиум», и я попытался получить доступ к элементу «premium_version». Глупая ошибка, но ошибка в google абсолютно не информативна. Надеюсь, что это поможет
Alex Perevozchykov
15 янв. 2015, в 12:30
Поделиться
В моем случае произошло то, что правильный продукт был настроен на консоли, однако он не был активирован.

nobre
10 июль 2015, в 21:56
Поделиться
Если кто-нибудь получит вышеупомянутое всплывающее окно, вы можете повторно проверить следующие шаги, потому что, к сожалению, это всплывающее окно google недостаточно информативно для подсказки.
- Убедитесь, что вы правильно используете идентификатор продукта (он должен быть таким же, как и на консоли разработчика).
- Перед тестированием убедитесь, что вы активировали продукт на консоли разработчика. Это может занять некоторое время, поэтому подождите, пока он будет готов.
- Убедитесь, что версия вашего приложения опубликована в Beta, Alpha или Production
- Не забудьте добавить тестовые письма в список тестировщиков (Настройки → Список тестировщиков → Создать список). Тестирование электронной почты должно отличаться от учетной записи издателя.
- Если в этом ничего не работает, попробуйте удалить учетную запись google на своем телефоне и добавить обратно и очистить данные в Play Маркете.
Надеюсь, что это поможет:)
Sachini Samarasinghe
30 дек. 2016, в 06:28
Поделиться
В моем случае мой base64EncodedPublicKey был неправильным, а также мой продукт inapp был неактивным. Убедитесь, что идентификатор продукта ur inapp такой же, как в консоли.
Fazal
12 март 2016, в 21:41
Поделиться
Я боролся с этой ошибкой часами. Мои идентификаторы продукта были правильными, приложение было опубликовано в Alpha, я активировал список тестеров Alpha, присоединившись к ссылке выбора, но ничего не работало.
В конце концов я обнаружил, что вы не можете использовать ту же учетную запись Gmail, которая используется для консоли разработчика. Вот и все, добавил еще одну учетную запись gmail в качестве тестера и использовал ее для загрузки приложения и больше ошибок аутентификации.
Кроме того, только заметка, вносящая изменения в приложение и построение отладочной версии, вызвала повторную ошибку. Могут использоваться только подписанные APK.
Stevo
02 нояб. 2016, в 22:49
Поделиться
Решено. Это была ошибка только Id продукта. Идентификатор продукта из Play-store и в приложении SKU_NAME должен быть таким же для биллинга приложений.
Это не упоминается правильно в проекте примера iab, который является productId
i.e SKU_GAS = «газ» и SKU_PREMIUM = «premium» в проекте
затем
«газ» и «премиум» должен быть доступен в play-store как productId.
Lokesh Tiwari
02 нояб. 2015, в 11:02
Поделиться
Если вы используете образцы Google (например, тривиальный диск), это может произойти из-за старого файла .aidl. Получите последнюю версию, чтобы протестировать ваше приложение.
VSB
21 авг. 2016, в 17:32
Поделиться
Убедитесь, что вы создаете и подписываете приложение с тем же хранилищем ключей, что вы подписали APK, который был загружен на бета-канал Google Play.
Я допустил ошибку при подписании с разными Keystores и не заметил этого.
nightfixed
18 март 2016, в 18:27
Поделиться
Убедитесь, что вы вошли в Play Store с тестовой учетной записью. Перезагрузите телефон. Он должен работать, по крайней мере, в моем случае необходим перезапуск.
erdomester
27 дек. 2015, в 19:21
Поделиться
Я столкнулся с одной и той же проблемой, используя правильный идентификатор продукта для каждого элемента «Купить приложение». Мое приложение было готово к публикации в Google Play (с APK в альфа-тестировании), но оно не было отправлено. Решение заключалось в том, чтобы отправить приложение для просмотра командой разработчиков Google Play Developer.
Надеюсь, это поможет вам!
Javier S.
11 окт. 2015, в 00:17
Поделиться
Ещё вопросы
- 0Mysql нарушение ограничения внешнего ключа, когда фабрика строит / создает новый
- 0Не может включать стандартные файлы библиотеки C ++, используя GCC-G ++
- 0C ++ Использовать объект из файла main.cpp
- 0кодировка символов php pear
- 1Python: добавление столбца к существующей таблице в PrettyTable
- 1<TableLayout> <TableRow> <LinearLayout> ненавидит меня. Сила близко на бегу. Android
- 0Обнаружение утечки памяти между серверами
- 1Невозможно привести .SelectedItems из выпуска DataGrid
- 1как обрабатывать фрагменты экрана Android?
- 0Проблема бесконечной прокрутки
- 1MSBuild.exe не использует профиль публикации (pubxml)
- 0Случайный порядок вопросов викторины
- 0Как мне разместить мою регистрационную форму в таблицах?
- 0Использование угловой директивы для рисования диаграммы Google без ручной загрузки
- 1Python — конвертирует AAF в XML и читает метаданные для используемого аудио
- 1Как я могу изменить свой вид в горизонтальной ориентации, а затем вернуться к портрету?
- 1Util Class в Java
- 1перемещение поля в новый столбец, если оно содержит значение в определенном столбце
- 0PHP сессия часть 2
- 1Нахождение ширины и высоты обзора для ограничения границы перемещения изображения с помощью жеста
- 0Сохранение гугл чарта через php
- 0Как я могу воспроизвести несколько аудиоклипов с angularjs? Могу ли я выбрать файл из моего HTML?
- 0Исправление многострочной загрузки с помощью smoothdivscroll
- 1Распознавание рукописного ввода для разных языков с использованием InkManager, C # XAML
- 1родительский каталог файла недоступен для записи
- 0Использование двух полей формы выбора, но появляется только один
- 0Обновление данных MySQL на основе или равно имени столбца
- 1Установите размер текста в ListView
- 0Сокет AF_INET, когда в системе доступны только адреса IPv6?
- 0Добавить URL iframe src с вводом формы
- 0Как отфильтровать несколько столбцов с предложением IN, используя AND
- 0Элемент ошибки фокуса в IE8
- 1Сделайте так, чтобы текст появлялся сразу, но постепенно исчезал, используя современные CSS-переходы
- 1Почему универсальные методы + interface + shadowing не могут работать вместе?
- 1Как написать методы пересечения и объединения для множеств в Java
- 0Как проверить, существуют ли данные в базе данных независимо от имени столбца? [Дубликат]
- 0Тестирование помощников с кармой
- 0Удалить куки, если есть другой куки
- 0Ошибка Angularjs
- 1Лучший шаблон для контроля возврата метода
- 0Стиль 1 <td> в таблице с 2 <td> с
- 0UTF8 с file_get_contents ()
- 1DependencyProperty вызывает сбой Visual Studio во время разработки
- 1Как изменить местоположение, в котором свойства зависимостей появляются в окне свойств дизайнера WPF?
- 0Как я могу изменить этот код, чтобы он работал с IE 11?
- 0php получает информацию о фейсбуке, используя имя пользователя и пароль
- 1AspectJ Ошибка загрузки времени в AWS SWF с использованием Java?
- 0Allegro al_load_ttf_font не может найти файл
- 1Текст ошибки не отображается для результата функции
- 1Сброс переменной позже в коде замедляет работу более раннего блока кода. Почему?
I am experiencing the same thing on 10.0.44.
What happens
We have a StoreActivity that creates a new BillingProcessor via constructor e.g.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_store);
// ...
bp = new BillingProcessor(this, LICENSE_KEY, MERCHANT_ID, new BillingProcessor.IBillingHandler() {//...}
I stepped through the code and onBillingInitialized is triggered shorty after this constructor executes and the following code starts to run:
public void handleBpResult() {
if (bp.isInitialized()) {
showView(mContent);
// set up price text
SkuDetails adFree = bp.getPurchaseListingDetails(Constants.SKU_PREMIUM);
As soon as bp.getPurchaseListingDetails(Constants.SKU_PREMIUM); is called the onBillingError callback is triggered and the infinite loop begins.
I checked and int errorCode for the callback is 6 and Throwable error is null. Case 6 in the switch for us is just a break which then starts the same handleBpResult function as above eventually running into bp.getPurchaseListingDetails(Constants.SKU_PREMIUM); and thus the cycle continues eventually crashing the app.
If I remove all billing processor related code from onBillingError then at least the infinite cycle is fixed but the errorCode 6 error will just appear later e.g. when the use attempts to purchase a store item.
Safety improvement
From a quick scan of the source getPurchaseListingDetails ends up calling getSkuDetails which interacts directly with the google inappbillingservice service. Thus calling anything that interacts with android billing like getPurchaseListingDetails inside the onBillingError could risk an infinite loop.
For our case the workaround is to use isPurchased which is a cache hit instead of interacting with the service and risking the loop. This is likely more efficient as well.
How to reproduce error code 6
Not sure. I have a device stuck in this state for any InAppBillingService related apps.
Blu Advance 5
Android 5.1
From settings>accounts I have a google account listed with sync off and when I click into the account for more details it says «Sync is currently experiencing problems. It will be back shortly»
Suggestions for improvement?
If possible getPurchaseListingDetails and getSubscriptionListingDetails could maybe be cache hits as well? From their function names it is not immediately obvious that they access billing service and they don’t appear to be used internally to build the cache.
From a quick glance, there doesn’t appear to be any public way to access purchase details from the cache even though the cache stores a map of ProductId->PurchaseInfo
I am experiencing the same thing on 10.0.44.
What happens
We have a StoreActivity that creates a new BillingProcessor via constructor e.g.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_store);
// ...
bp = new BillingProcessor(this, LICENSE_KEY, MERCHANT_ID, new BillingProcessor.IBillingHandler() {//...}
I stepped through the code and onBillingInitialized is triggered shorty after this constructor executes and the following code starts to run:
public void handleBpResult() {
if (bp.isInitialized()) {
showView(mContent);
// set up price text
SkuDetails adFree = bp.getPurchaseListingDetails(Constants.SKU_PREMIUM);
As soon as bp.getPurchaseListingDetails(Constants.SKU_PREMIUM); is called the onBillingError callback is triggered and the infinite loop begins.
I checked and int errorCode for the callback is 6 and Throwable error is null. Case 6 in the switch for us is just a break which then starts the same handleBpResult function as above eventually running into bp.getPurchaseListingDetails(Constants.SKU_PREMIUM); and thus the cycle continues eventually crashing the app.
If I remove all billing processor related code from onBillingError then at least the infinite cycle is fixed but the errorCode 6 error will just appear later e.g. when the use attempts to purchase a store item.
Safety improvement
From a quick scan of the source getPurchaseListingDetails ends up calling getSkuDetails which interacts directly with the google inappbillingservice service. Thus calling anything that interacts with android billing like getPurchaseListingDetails inside the onBillingError could risk an infinite loop.
For our case the workaround is to use isPurchased which is a cache hit instead of interacting with the service and risking the loop. This is likely more efficient as well.
How to reproduce error code 6
Not sure. I have a device stuck in this state for any InAppBillingService related apps.
Blu Advance 5
Android 5.1
From settings>accounts I have a google account listed with sync off and when I click into the account for more details it says «Sync is currently experiencing problems. It will be back shortly»
Suggestions for improvement?
If possible getPurchaseListingDetails and getSubscriptionListingDetails could maybe be cache hits as well? From their function names it is not immediately obvious that they access billing service and they don’t appear to be used internally to build the cache.
From a quick glance, there doesn’t appear to be any public way to access purchase details from the cache even though the cache stores a map of ProductId->PurchaseInfo