Ошибка при покупке android

Содержание
  1. Как исправить проблему с покупкой в приложении из Google Pay
  2. Самостоятельное решение проблемы
  3. Проверьте сетевое подключение
  4. Принудительный перезапуск приложения или игры
  5. Убедитесь, что оплата была осуществлена
  6. Перезагрузите устройство
  7. Обновление приложения из Play Маркет
  8. Убедитесь, что вы установили правильную дату и время
  9. Свяжитесь с разработчиком приложения
  10. Запрос на возврат средств
  11. Android in-app purchases, часть 4: коды ошибок от Billing Library и как не облажаться с тестированием
  12. Коды ошибок
  13. Самая популярная ошибка
  14. Заключение
  15. Про Adapty
  16. Пользователи жалуются на проблемы с покупками в ваших приложениях? Попробуйте сервис внутриигровых покупок HUAWEI
  17. Что мы понимаем под проблемами с покупками в приложениях?
  18. К чему обычно приводят сбои при покупках?
  19. Интеграция сервиса HUAWEI IAP решит проблемы с покупками в ваших приложениях
  20. HUAWEI IAP: процесс покупки
  21. Стандартный процесс приобретения товаров:
  22. Как HUAWEI IAP осуществляет повторную доставку продукта

Как исправить проблему с покупкой в приложении из Google Pay

В некоторых приложениях из Google Pay вы можете приобретать дополнительный контент или услуги. Мы называем это «покупка в приложении». Например, это может быть меч, который наносит больше урона в игре, ключ разблокировки дополнительных возможностей в бесплатном приложении или виртуальная валюта, которую можно использовать для покупок.

Если продукт, купленный в приложении, не был доставлен, не работает или не удается его скачать, вы можете:

  • самостоятельно решить проблему
  • связаться с разработчиком приложения и попросить его о помощи
  • отправить запрос на возврат средств

Самостоятельное решение проблемы

Если выполнение описанных ниже действий не решит проблему, свяжитесь с разработчиком, чтобы получить помощь.

Проверьте сетевое подключение

Убедитесь, что у вас есть активное подключение Wi-Fi или к сети сотовой связи. Проще всего это сделать с помощью функции поиска в интернете. Выполните любой поиск в браузере. Если вы увидите ответ поисковой системы, скорее всего, проблема не связана с подключением к интернету.

Если поиск не работает, вы можете иметь проблемы с подключением к интернету. Попробуйте решить проблемы с подключением.

Принудительный перезапуск приложения или игры

Если вы не получите продукта, приобретенного в приложении или игре, закройте их и запустите снова.

  1. Откройте на устройстве главное приложение Настройки.
  2. Нажмите Приложения или Управление приложениями (название может отличаться в зависимости от устройства).
  3. Нажмите на приложение, которое применялось для совершения покупки.
  4. Нажмите Остановить .
  • Снова запустите приложение, которое использовалась для покупки.
  • Убедитесь, что продукт был доставлен.
  • Убедитесь, что оплата была осуществлена

    Если Ваш платеж не был должным образом обработан, вы не получите продукта, приобретенного в приложении. Проверьте статус платежа в Магазин приложений Play или на веб-сайте Google Play:

    В приложении «Play Маркет»:

    1. На телефоне или планшете Android откройте приложение Play Маркет.
    2. Выберите МенюУчетная запись.
    3. Нажмите Журнал покупок, чтобы проверить свои заказы.
    1. На компьютере откройте страницу учетной записи Google Play
    2. Прокрутите вниз до раздела «История покупок».
    3. Посмотрите на эту покупку в приложении.

    Перезагрузите устройство

    Иногда перезагрузка устройства может помочь в решении проблемы с покупкой в приложении.

    Чтобы перезагрузить устройство:

    1. На мобильном устройстве нажмите и удерживайте кнопку питания.
    2. Нажмите Выключить или Перезагрузить (на некоторых устройствах текст может быть другой).
    3. При необходимости снова нажмите и удерживайте кнопку питания, чтобы включить устройство.
    4. Дождитесь запуска устройства.
    5. Снова откройте приложение или игру и убедитесь, что покупка была доставлена.

    Обновление приложения из Play Маркет

    Покупки в приложениях работают лучше всего, когда вы используете последнюю версию Магазина Google Play.

    Чтобы обновить эту программу:

    1. На телефоне или планшете Android откройте приложение Google Play.
    2. Нажмите МенюНастройкиВерсия сборки или Версия Play Маркет.
      • Эти варианты находятся, как правило, в нижней части списка параметров.
    3. Приложение предложит обновиться или сообщит, что установлена актуальная версия.

    Убедитесь, что вы установили правильную дату и время

    Если вы недавно изменили дату и время на устройстве, убедитесь, что они правильные:

    1. На телефоне или планшете Android откройте приложение Настройки.
    2. Нажмите Дата и время.
  • Найдите функции «Автоматическая настройка» и «Часовой пояс сети» и проверьте, включены ли они. Затем выполните соответствующие действия ниже.
  • Если функции «Автоматическая настройка» и «Часовой пояс сети» отключены:

    1. Включите обе опции.
    2. Подождите несколько минут и проверьте, устранена ли проблема.
    3. Если нет, то перезагрузите устройство и проверьте ещё раз.
    Читайте также:  Mtk 6737m android scatter

    Если функции «Автоматическая настройка» и «Часовой пояс сети» включены:

    • Если обе опции включены, то, вероятно, проблема не связана с датой и временем. Проверьте подключение к интернету и перезапустите устройство или попробуйте другие решения.

    Свяжитесь с разработчиком приложения

    Если у вас возникли проблемы с покупкой в приложении, и вы хотите оставить отзыв или получить помощь, вы можете связаться с разработчиком приложения.

    Свяжитесь с разработчиком приложения, если вы хотите:

    • получить помощь в решении проблемы с приложением или игрой;
    • узнать больше об использовании приложения;
    • добавить покупку в приложении к своей учетной записи;
    • спросить о покупке в приложении, которая не была доставлена;
    • получить помощь в решении проблемы со входом в приложении.

    Запрос на возврат средств

    В зависимости от покупки и проблемы вы можете получить возмещение потраченных средств. Больше информации вы найдете в статье, о возврате продуктов и средств в Google Play.

    Источник

    Android in-app purchases, часть 4: коды ошибок от Billing Library и как не облажаться с тестированием

    Привет, я Влад, core разработчик Adapty SDK для Android. Продолжаю серию статей про то, как внедрять внутренние покупки в приложение Google Play. Остальные посты можно найти по ссылкам:

    Android in-app purchases, часть 4: коды ошибок от Billing Library и как не облажаться с тестированием. — Вы тут.

    Сегодня мы поговорим о кодах ошибок, которые мы можем получить от Billing Library в методе getResponseCode().

    Пример того, как мы передавали ошибки в свои колбэки, можно посмотреть в этой статье. С одной ошибкой мы уже знакомы по предыдущим статьям — это USER_CANCELED, когда пользователь закрывает диалог покупки, ничего не купив. Давайте познакомимся с остальными.

    Коды ошибок

    Начнем с самых простых ошибок – с говорящим названием ERROR (responseCode 6) и чуть более говорящим названием DEVELOPER_ERROR (responseCode 5). Для первого случая гугл пишет в документации «Fatal error during the API action», для второго – «Invalid arguments provided to the API». Например, я смог получить DEVELOPER_ERROR, когда для запроса querySkuDetailsAsync() в билдер в setType() передал пустую строку.

    Но не всё так просто. Я пошел дальше и в методе launchBillingFlow() использовал измененный SkuDetails (вытащил json из SkuDetails реального продукта, поменял в нем productId и передал в конструктор новому SkuDetails). По сути это invalid argument, и я ожидал получить DEVELOPER_ERROR, но… получил ERROR.

    Отдельного упоминания заслуживает текст, который показывается в диалоге в этом кейсе — сравните английский и русский вариант:

    Это, конечно, был искусственный пример. Гораздо ближе к реальности кейс, когда гугл отклонил оплату. Если при тестировании покупок с тестовой карты, о чем мы расскажем в конце статьи, в диалоге покупки выбрать «test card, always declined», вернется также ошибка ERROR, но уже с адекватным текстом.

    В третьей статье, где описывалась смена подписки, мы для одного из proration mode увеличили цену годовой подписки почти в 3 раза, но не сказали, какая там должна была быть ошибка, если бы мы этого не сделали. Исправляемся.

    Так как там, получается, указан неправильный proration mode, по логике мы должны получить всё ту же DEVELOPER_ERROR. Но нет, мы получаем SERVICE_UNAVAILABLE (responseCode 2). Ее же мы получаем и если указать любое левое число в качестве proration mode (это int, а не enum, нас никто не остановит), и если указать неправильный purchaseToken. Смотрим в документацию про SERVICE_UNAVAILABLE – «Network connection is down». Так, стоп…

    При этом еще мы видим интересный диалог.

    Что еще любопытно – в кейсе с ERROR при закрытии диалога НЕ через кнопку «ОК» (то есть, теми способами, которые интерпретируются как возврат назад) в onPurchasesUpdated() пришло, собственно, ERROR, а в случае с SERVICE_UNAVAILABLE в аналогичном кейсе приходит USER_CANCELED (но если нажать «ОК» в диалоге, то мы, как и ожидали, получим SERVICE_UNAVAILABLE).

    Ну и в случае с отсутствием интернета SERVICE_UNAVAILABLE тоже приходит, тут не соврали.

    Вот остальные коды ошибок с небольшими комментариями, так сказать, honorable mentions.

    BILLING_UNAVAILABLE (responseCode 3). Гугл поясняет, что «Billing API version is not supported for the type requested». Я смог воспроизвести эту ошибку, разлогинившись из Google-аккаунта, а также на Хуавее без Google Play Services. Возможно, она также воспроизведется на старых телефонах, где не обновляли Google Play.

    Читайте также:  Мой лучший друг андроид

    SERVICE_DISCONNECTED (responseCode -1). Приложение иногда дисконнектится от сервиса Google Play. Это может произойти, если Play Store вдруг решит обновиться. Поэтому лучше перестраховаться и коннектиться перед каждым вызовом методов Billing Library, как в предыдущих статьях. А еще мы с гуглом советуем добавить какую-нибудь retry policy, если эта ошибка всё же придет в ответе.

    SERVICE_TIMEOUT (responseCode -3). Название говорит само за себя — мы слишком долго ждали ответ от Google Play.

    FEATURE NOT SUPPORTED (responseCode -2). В классе BillingClient есть пять констант FeatureType. Их доступность на данном устройстве можно проверять с помощью метода billingClient.isFeatureSupported(BillingClient.FeatureType.НужнаяФича). У меня на телефоне (Xiaomi Mi A2 Lite) FEATURE_NOT_SUPPORTED вернулось только для SUBSCRIPTIONS_ON_VR. При этом для IN_APP_ITEMS_ON_VR, как и для всех остальных фич, вернулось OK.

    ITEM_NOT_OWNED (responseCode 8). Возникает при попытке законсьюмить покупку, которой у нас нет. Например, повторно после успешного консьюма.

    ITEM_ALREADY_OWNED (responseCode 7). А тут наоборот – при попытке купить продукт, который у нас уже есть. В таком кейсе просто нужно обновить UI и сделать кнопку покупки некликабельной.

    Самая популярная ошибка

    Последняя и, наверное, самая популярная ошибка в начале пути внедрения in-app purchases — это ITEM_UNAVAILABLE (responseCode 4). Она говорит о том, что продукт недоступен для покупки, но не говорит, почему. А причины могут быть самые разные: от тестирования на неправильном аккаунте или неправильной сборке до покупки неактивированного продукта.

    Вот чек-лист, что нужно сделать, чтобы избежать ее при тестировании:

    Отправить в ваш test track сборку с Billing Library. Это обязательное условие — при этом вы можете тестировать и на дебажных сборках с таким же applicationId, но важно, чтобы хотя бы один раз сборка с Billing Library была загружена в Play Console.

    Добавить в этот test track гугл-аккаунты тестировщиков, что особенно актуально для internal testing или закрытой альфы/беты. Там же будет ссылка в разделе How testers join your test, по которой тестировщики должны будут принять приглашение.

    Покупать можно только активированный продукт. После создания продукта в Play Console есть кнопка activate, более детально процесс создания продукта мы описывали в первой статье.

    Удостовериться, что тестирование на устройстве проходит с гугл-аккаунта, который является тестировщиком. Очевидный пункт, но бывает всякое, и это тоже нужно проверить, если вы получили такую ошибку.

    applicationId сборки, с которой тестируется покупка, должно полностью совпадать с applicationId из Play Console. Это особенно важно для тех, у кого добавляется суффикс в дебажных сборках.

    Добавить email-адреса тестировщиков в раздел Setup → License Testing в левом меню аккаунта (не приложения), чтобы они покупали продукты бесплатно с тестовой карты, а не с реальной. Еще один плюс, что подписки в данном случае будут иметь тестовую длительность. Не связано с этой ошибкой, но тоже полезное знание.

    Заключение

    Ошибки способны сильно усложнить работу, поэтому всегда важно понимать, как они могут возникнуть. Учитывая, сколько шагов нужно пройти, чтобы получить доступ к продуктам, проще всего словить ITEM_UNAVAILABLE. Поэтому я надеюсь, что мой чек-лист вам поможет.

    Про Adapty

    Для более простой работы с ошибками советую попробовать Adapty SDK для внедрения внутренних покупок в приложения. Кроме технической части, Adapty даёт много преимуществ:

    Встроенная аналитика позволяет быстро понять основные метрики приложения.

    Когортный анализ отвечает на вопрос, как быстро сходится экономика.

    А/Б тесты увеличивают выручку приложения.

    Интеграции с внешними системами позволяют отправлять транзакции в сервисы атрибуции и продуктовой аналитики.

    Промо-кампании уменьшают отток аудитории.

    Open source SDK позволяет интегрировать подписки в приложение за несколько часов.

    Серверная валидация и API для работы с другими платформами.

    Познакомьтесь подробнее с этими возможностями, чтобы быстрее внедрить подписки в своё приложение и улучшить конверсии.

    Источник

    Пользователи жалуются на проблемы с покупками в ваших приложениях? Попробуйте сервис внутриигровых покупок HUAWEI

    Что мы понимаем под проблемами с покупками в приложениях?

    Проблемы с покупками – это когда пользователь не получает приобретенный товар из-за ошибки (например, ошибки соединения) при синхронизации данных между приложением и сервером для покупок в приложении.

    Читайте также:  Андроид что такое elm agent

    Проблемы с покупками наносят ущерб как пользователям, так и разработчикам. В результате приложение получает низкий рейтинг и негативные отзывы в магазине, а разработчик теряет пользователей, включая потенциальных новых пользователей, ведь они даже не попробуют установить ваше приложение. Такой исход, конечно же, крайне нежелателен.

    К чему обычно приводят сбои при покупках?

    Пользователи жалуются, что они оплатили, но не получили покупки и требуют вернуть деньги. В таком случае, ваше приложение потеряет доверие пользователей.

    Интеграция сервиса HUAWEI IAP решит проблемы с покупками в ваших приложениях

    Использование сервиса HUAWEI IAP гарантирует пользователю получение оплаченной покупки.

    Приложение использует API сервиса HUAWEI IAP для получения информации о заказе от сервера HUAWEI IAP. Сервер вернет информацию о заказах, которые были оплачены, но не получены через приложение, а затем произойдет повторная доставка продуктов на основании результата запроса. После чего, сервер обновит статус совершения покупки.

    Для интеграции сервиса воспользуйтесь следующими инструкциями:

    HUAWEI IAP: процесс покупки

    В случае с оплаченными товарами, приложение вызовет соответствующий API для использования продукта. Если вызов API не удался, доставка продукта не состоится. В случае приобретения нерасходуемых покупок и подписок проблем с доставкой не возникнет.

    Стандартный процесс приобретения товаров:

    Пользователь создает запрос на покупку в вашем приложении, а ваше приложение затем направляет этот запрос в HMS Core (APK).

    Запрос доставки. Проверка подписи в данных о покупке перед доставкой запрошенного продукта.

    Доставка покупки и отправка токена на сервер вашего приложения. Этот токен используется для получения статуса доставки покупки. Таким образом, вы сможете понять, необходима ли повторная доставка, если при покупке произошла ошибка.

    После того, как продукт успешно доставлен пользователю, вызовите метод API consumeOwnedPurchase для использования продукта и отправки уведомления на сервер Huawei IAP для обновления статуса доставки. Токен purchaseToken передается в запросе вызова API и, после того, как покупка использована пользователем, сервер Huawei IAP изменяет статус продукта на «доступно для покупки». После этого продукт можно купить заново.

    Кроме метода API consumeOwnedPurchase, предоставленного IAP клиентом, ваше приложение также может воспользоваться API от IAP сервера для использования продукта. Чтобы узнать об этом более подробно, смотрите раздел Подтверждение покупки для сервиса заказов.

    Как HUAWEI IAP осуществляет повторную доставку продукта

    HUAWEI IAP поможет вам повторно доставить расходуемую покупку при сбоях доставки, которые возникли из-запроблем с синхронизацией данных (ошибки соединения, завершение процесса и др.) между вашим приложением и сервером IAP. На рисунке показан процесс доставки.

    Ваше приложение требует активации повторной доставки в следующих случаях:

    Код результата -1 (OrderStatusCode. ORDER_STATE_FAILED) вернулся в ответ на запрос о покупке.

    Код результата 60051 (OrderStatusCode. ORDER_PRODUCT_OWNED) вернулся в ответ на запрос о покупке.

    Функция повторной доставки реализуется следующим образом:

    Шаг 1. Используйте obtainOwnedPurchases для получения информации о покупке для оплаченных, но не доставленных товаров. Укажите priceType равный 0 в OwnedPurchasesReq.

    Если вызов API прошел успешно, HUAWEI IAP вернет объект OwnedPurchasesResult, содержащий данные о покупке и подписи по всем приобретенным, но не доставленным продуктам. Используйте публичный ключ в AppGallery Connect для проверки подписи. Подробную информацию о способе проверки можно найти в разделе «Проверка подписи при возвращении результата».

    Данные о каждой покупке представляют собой строку символов в формате JSON, которая содержит параметры, указанные в InAppPurchaseData. Вам нужно распарсить поле purchaseState из строки символов InAppPurchaseData. Если purchaseState покупки равен 0 — то покупка успешно состоялась и доставка будет выполнена.

    Шаг 2. Вызовите метод API consumeOwnedPurchase для использования доставленного продукта.

    Шаг 3. Подтвердите доставку для всех запрошенных продуктов через метод API obtainOwnedPurchases. Если продукт уже доставлен, вызовите метод API consumeOwnedPurchase для использования продукта и дайте инструкцию серверу Huawei IAP для обновления статуса доставки. После использования продукта, сервер Huawei IAP изменяет статус продукта на «доступно для покупки», позволяя купить его снова.

    Для получения более подробной информации перейдите по ссылкам:

    Адреса репозиториев с открытым исходным кодом с образцами интеграции HMS: GitHub и Gitee

    Подпишитесь на нас, чтобы получать информацию о новейших технологиях HMS.

    Источник

    Оцените статью