Обработка ошибок в Flutter SDK

Каждая ошибка, возвращаемая SDK, имеет тип AdaptyErrorCode. Пример:

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

    try {
      final result = await adapty.makePurchase(product: product);
    } on AdaptyError catch (adaptyError) {
      if (adaptyError.code == AdaptyErrorCode.paymentCancelled) {
        // Cancelled
      }
    } catch (e) {
    }

Системные коды StoreKit

ОшибкаКодРешение
unknown0Неизвестная или непредвиденная ошибка.
Попробуйте повторить запрос или обратитесь к разделу Другие проблемы.
clientInvalid1Клиент не имеет права выполнять это действие.
paymentCancelled2

Пользователь отменил запрос на оплату.

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

paymentInvalid3Один из параметров платежа не был распознан App Store.
paymentNotAllowed4Пользователь не имеет права подтверждать платежи.
storeProductNotAvailable5Запрошенный продукт недоступен в сторе.
Попробуйте переустановить приложение.
cloudServicePermissionDenied6Пользователь не разрешил доступ к информации об облачном сервисе.
cloudServiceNetworkConnectionFailed7Устройству не удалось подключиться к сети.
cloudServiceRevoked8Пользователь отозвал разрешение на использование этого облачного сервиса.
privacyAcknowledgementRequired9Пользователь ещё не принял политику конфиденциальности Apple.
unauthorizedRequestData10Приложение пытается использовать свойство, для которого у него нет необходимого entitlement.
invalidOfferIdentifier11

Идентификатор предложения недействителен. Например, предложение с таким идентификатором не создано в App Store или было отозвано.

Убедитесь, что нужные предложения настроены в App Store Connect, и передайте корректный идентификатор предложения.

invalidSignature12Подпись в скидке на платёж недействительна.
missingOfferParams13В скидке на платёж отсутствуют обязательные параметры.
invalidOfferPrice14Цена, указанная в App Store Connect, больше не является действительной. Предложения всегда должны предусматривать скидку от обычной цены.

Пользовательские коды Android

ОшибкаКодРешение
adaptyNotInitialized20Необходимо правильно настроить Adapty SDK с помощью метода Adapty.activate. Узнайте, как это сделать для Flutter.
productNotFound22Эта ошибка означает, что запрошенный для покупки продукт недоступен в сторе.
invalidJson23JSON пейвола недействителен. Исправьте его в дашборде Adapty. Подробнее о том, как это сделать, читайте в разделе Настройка пейвола с помощью Remote Config.
currentSubscriptionToUpdateNotFoundInHistory24Исходная подписка, которую необходимо продлить, не найдена.
pendingPurchase25Эта ошибка означает, что покупка находится в состоянии ожидания, а не завершена. Подробнее читайте на странице Обработка отложенных транзакций в документации Android Developer.
billingServiceTimeout97Эта ошибка означает, что запрос достиг максимального таймаута до того, как Google Play смог ответить. Причиной может быть, например, задержка при выполнении действия, запрошенного вызовом Play Billing Library.
featureNotSupported98Запрошенная функция не поддерживается Play Store на данном устройстве.
billingServiceDisconnected99Эта критическая ошибка означает, что соединение клиентского приложения с сервисом Google Play Store через BillingClient было разорвано.
billingServiceUnavailable102Эта временная ошибка означает, что сервис Google Play Billing в данный момент недоступен. В большинстве случаев это связано с проблемой сетевого подключения между клиентским устройством и сервисами Google Play Billing.
billingUnavailable103

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

1. Приложение Play Store на устройстве пользователя устарело.

2. Пользователь находится в неподдерживаемой стране.

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

4. Google Play не может списать средства с платёжного метода пользователя. Например, срок действия кредитной карты истёк.

5. Пользователь не авторизован в приложении Play Store.

developerError105Это критическая ошибка, указывающая на некорректное использование API.
billingError106Это критическая ошибка, указывающая на внутреннюю проблему самого Google Play.
itemAlreadyOwned107Расходуемая покупка уже была приобретена.
itemNotOwned108Эта ошибка означает, что запрошенное действие над элементом не удалось выполнить, поскольку он не принадлежит пользователю.

Пользовательские коды StoreKit

ОшибкаКодРешение
noProductIDsFound1000

Эта ошибка означает, что ни один из продуктов, запрошенных на пейволе, недоступен для покупки в App Store, хотя они там и перечислены. Иногда ошибка сопровождается предупреждением InvalidProductIdentifiers. Если предупреждение появляется без ошибки — игнорируйте его.

Если вы столкнулись с этой ошибкой, следуйте инструкциям в разделе Исправление ошибки Code-1000 noProductIDsFound.

noProductsFound1001Эта ошибка означает, что продукт, запрошенный для покупки, недоступен в сторе.
productRequestFailed1002Не удалось получить список доступных продуктов.
cantMakePayments1003Встроенные покупки запрещены на этом устройстве. См. гайд по устранению неполадок.
noPurchasesToRestore1004Эта ошибка означает, что App Store не нашёл покупку для восстановления.
cantReadReceipt1005

На устройстве нет действительного чека. Это может быть проблемой при тестировании в песочнице.

В песочнице действительный файл чека появляется только после реальной покупки — убедитесь, что совершили её перед обращением к нему. При тестировании в песочнице также убедитесь, что вошли на устройстве с действительным аккаунтом Apple Sandbox.

productPurchaseFailed1006Покупка продукта не удалась. Ошибка StoreKit, не связанная с Adapty. Попробуйте использовать новый профиль песочницы. Если это не поможет, обратитесь в поддержку Apple.
missingOfferSigningParams1007

Эта ошибка указывает на проблемы с интеграцией Adapty или с офферами.

Подробнее о настройке см. в разделах Настройка интеграции с App Store и Офферы.

refreshReceiptFailed1010Эта ошибка означает, что чек не был получен. Применимо только к StoreKit 1.
receiveRestoredTransactionsFailed1011Не удалось восстановить покупки.

Пользовательские сетевые коды

ОшибкаКодРешение
notActivated2002Adapty SDK не активирован. Необходимо правильно настроить Adapty SDK с помощью метода Adapty.activate.
badRequest2003Некорректный запрос.
Убедитесь, что вы выполнили все шаги, необходимые для интеграции с App Store.
serverError2004Ошибка сервера.
Повторите попытку через некоторое время. Если проблема не устранена, обратитесь в службу поддержки Adapty.
networkFailed2005Ошибка указывает на проблемы с сетевым подключением на устройстве пользователя.
Попробуйте отключить VPN или переключиться с мобильной сети на Wi-Fi или наоборот.
decodingFailed2006Ошибка указывает на сбой декодирования ответа.
Проверьте свой код и убедитесь, что передаваемые параметры корректны. Например, эта ошибка может означать, что вы используете неверный API-ключ.
encodingFailed2009Ошибка указывает на сбой кодирования запроса.
analyticsDisabled3000Обработка аналитических событий невозможна, так как вы отключили её.
wrongParam3001Ошибка указывает на то, что один или несколько параметров заданы неверно.
Если вы используете Paywall Builder и не можете отобразить пейвол из-за этой ошибки, включите Show on device в Paywall Builder.
Ещё одна возможная причина — версия локального файла резервного пейвола не совпадает с версией SDK. Загрузите новый файл в дашборде.
activateOnceError3005Метод .activate нельзя вызывать более одного раза.
profileWasChanged3006Профиль пользователя был изменён в ходе операции.
Эта ошибка может возникнуть, если вы вызываете identify, а затем вызываете другой метод до завершения identify. Чтобы избежать этого, дождитесь успешного выполнения identify перед вызовом других методов.
unsupportedData3007Ошибка указывает на то, что формат данных не поддерживается SDK.
persistingDataError3100Произошла ошибка при сохранении данных.
fetchTimeoutError3101Ошибка указывает на превышение времени ожидания операции получения данных.

Другие проблемы

Если вы ещё не нашли решение, попробуйте следующее:

  • Обновление SDK до последней версии: мы всегда рекомендуем обновляться до последних версий SDK, так как они более стабильны и содержат исправления известных проблем.
  • Обратитесь в службу поддержки или получите помощь от других разработчиков на форуме поддержки.
  • Обратитесь в службу поддержки по адресу [email protected] или через чат: если вы не готовы обновить SDK или это не помогло, свяжитесь с нашей командой поддержки. Обратите внимание, что проблема будет решена быстрее, если вы включите подробное логирование и поделитесь логами с командой. Вы также можете приложить соответствующие фрагменты кода.