---
title: "Обработка ошибок в Unity SDK"
description: "Обработка ошибок в Unity SDK."
---

Каждая ошибка, возвращаемая SDK, имеет тип `AdaptyErrorCode`. Вот пример:
:::important
Если эти решения не помогли, перед обращением в поддержку ознакомьтесь с разделом [Другие проблемы](#other-issues) — это поможет нам разобраться в ситуации быстрее.
:::

```csharp showLineNumbers
Adapty.MakePurchase(product, (profile, error) => {
  if (error != null && error.Code == Adapty.ErrorCode.PaymentCancelled) {
      // payment cancelled
  }
});
```
## Системные коды StoreKit \{#system-storekit-codes\}
| Ошибка | Код | Решение |
|-----|----|-----------|
| [unknown](https://developer.apple.com/documentation/storekit/skerror/code/unknown)                                                         | 0    | Неизвестная или непредвиденная ошибка. <br/> Повторите попытку или обратитесь к разделу [Другие проблемы](#other-issues).                                                                                                                                                                                                                                                                                                                   |
| [clientInvalid](https://developer.apple.com/documentation/storekit/skerror/code/clientinvalid)                                             | 1    | Клиенту не разрешено выполнять запрошенное действие.                                                                                                                                                                                                                                                                                                                                                                           |
| [paymentCancelled](https://developer.apple.com/documentation/storekit/skerror/code/paymentcancelled)                                       | 2    | <p>Пользователь отменил платёж.</p><p>Никаких действий не требуется, однако с точки зрения бизнес-логики вы можете предложить скидку или напомнить о покупке позже.</p>                                                                                                                                                                                                                                             |
| [paymentInvalid](https://developer.apple.com/documentation/storekit/skerror/code/paymentinvalid)                                           | 3    | Один из параметров платежа не распознан App Store.                                                                                                                                                                                                                                                                                                                                                                                        |
| [paymentNotAllowed](https://developer.apple.com/documentation/storekit/skerror/code/paymentnotallowed)                                     | 4    | Пользователю не разрешено авторизовывать платежи.                                                                                                                                                                                                                                                                                                                                                                                       |
| [storeProductNotAvailable](https://developer.apple.com/documentation/storekit/skerror/code/storeproductnotavailable)                       | 5    | Запрошенный продукт недоступен в сторе. <br/> Попробуйте переустановить приложение.                                                                                                                                                                                                                                                                                                                                               |
| [cloudServicePermissionDenied](https://developer.apple.com/documentation/storekit/skerror/code/cloudservicepermissiondenied)               | 6    | Пользователь не предоставил доступ к данным облачного сервиса.                                                                                                                                                                                                                                                                                                                                                                        |
| [cloudServiceNetworkConnectionFailed](https://developer.apple.com/documentation/storekit/skerror/code/cloudservicenetworkconnectionfailed) | 7    | Устройству не удалось подключиться к сети.                                                                                                                                                                                                                                                                                                                                                                                         |
| [cloudServiceRevoked](https://developer.apple.com/documentation/storekit/skerror/code/cloudservicerevoked/)                                | 8    | Пользователь отозвал разрешение на использование этого облачного сервиса.                                                                                                                                                                                                                                                                                                                                                                           |
| [privacyAcknowledgementRequired](https://developer.apple.com/documentation/storekit/skerror/code/privacyacknowledgementrequired)           | 9    | Пользователь ещё не принял политику конфиденциальности Apple.                                                                                                                                                                                                                                                                                                                                                                                            |
| [unauthorizedRequestData](https://developer.apple.com/documentation/storekit/skerror/code/unauthorizedrequestdata)                         | 10   | Приложение пытается использовать свойство, для которого у него нет необходимого entitlement.                                                                                                                                                                                                                                                                                                                                                         |
| [invalidOfferIdentifier](https://developer.apple.com/documentation/storekit/skerror/code/invalidofferidentifier)                           | 11   | <p>[`identifier`](https://developer.apple.com/documentation/storekit/skpaymentdiscount/identifier) предложения недействителен. Например, предложение с таким идентификатором не настроено в App Store или было отозвано.</p><p>Убедитесь, что нужные предложения настроены в App Store Connect, и передайте корректный идентификатор предложения.</p>                                                                                           |
| [invalidSignature](https://developer.apple.com/documentation/storekit/skerror/code/invalidsignature)                                       | 12   | Подпись в платёжной скидке недействительна.                                                                                                                                                                                                                                                                                                                                                                                                    |
| [missingOfferParams](https://developer.apple.com/documentation/storekit/skerror/code/missingofferparams)                                   | 13   | В платёжной скидке отсутствуют обязательные параметры.                                                                                                                                                                                                                                                                                                                                                                                        |
| [invalidOfferPrice](https://developer.apple.com/documentation/storekit/skerror/code/invalidofferprice/)                                    | 14   | Цена, указанная в App Store Connect, больше не является действительной. Предложения всегда должны предусматривать скидку относительно стандартной цены.                                                                                                                                                                                                                                                                                                                                                    |
## Пользовательские коды Android \{#custom-android-codes\}
| Ошибка | Код | Решение |
|-----|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| adaptyNotInitialized | 20 | Необходимо правильно настроить Adapty SDK с помощью метода `Adapty.activate`. Узнайте, как это сделать [для Unity](sdk-installation-unity#activate-adapty-module-of-adapty-sdk). |
| productNotFound | 22 | Эта ошибка означает, что продукт, запрошенный для покупки, недоступен в сторе. |
| invalidJson | 23 | JSON пейвола невалиден. Исправьте его в дашборде Adapty. Подробнее о том, как это сделать, читайте в разделе [Кастомизация пейвола с помощью Remote Config](customize-paywall-with-remote-config). |
| currentSubscriptionToUpdateNotFoundInHistory | 24 | Исходная подписка, которую необходимо продлить, не найдена. |
| pendingPurchase | 25 | Эта ошибка означает, что покупка находится в статусе ожидания, а не завершена. Подробнее см. страницу [Обработка отложенных транзакций](https://developer.android.com/google/play/billing/integrate#pending) в документации Android Developer. |
| billingServiceTimeout | 97 | Эта ошибка означает, что запрос превысил максимальное время ожидания до ответа Google Play. Причиной может быть, например, задержка при выполнении действия, запрошенного вызовом Play Billing Library. |
| featureNotSupported | 98 | Запрошенная функция не поддерживается Play Store на данном устройстве. |
| billingServiceDisconnected | 99 | Эта критическая ошибка означает, что соединение клиентского приложения с сервисом Google Play Store через `BillingClient` было разорвано. |
| billingServiceUnavailable | 102 | Эта временная ошибка означает, что сервис Google Play Billing в данный момент недоступен. В большинстве случаев это связано с проблемой сетевого соединения между клиентским устройством и сервисами Google Play Billing. |
| billingUnavailable | 103 | <p>Эта ошибка означает, что в процессе покупки произошла ошибка биллинга на стороне пользователя. Возможные причины:</p><p></p><p>1\. Приложение Play Store на устройстве пользователя устарело.</p><p>2. Пользователь находится в неподдерживаемой стране.</p><p>3. Пользователь является корпоративным, и администратор предприятия запретил совершение покупок.</p><p>4. Google Play не может списать средства с платёжного метода пользователя. Например, срок действия кредитной карты истёк.</p><p>5. Пользователь не авторизован в приложении Play Store.</p> |
| developerError | 105 | Это критическая ошибка, указывающая на некорректное использование API. |
| billingError | 106 | Это критическая ошибка, указывающая на внутреннюю проблему в самом Google Play. |
| itemAlreadyOwned | 107 | Расходуемая покупка уже была приобретена. |
| itemNotOwned | 108 | Эта ошибка означает, что запрошенное действие с товаром не удалось выполнить, поскольку он не принадлежит пользователю. |
## Пользовательские коды StoreKit \{#custom-storekit-codes\}
| Ошибка | Код | Решение |
|-----|----|-----------|
| noProductIDsFound | 1000 | <p>Эта ошибка означает, что ни один из запрошенных на пейволе продуктов недоступен для покупки в App Store, даже если они там перечислены. Иногда вместе с ошибкой появляется предупреждение `InvalidProductIdentifiers`. Если предупреждение появляется без ошибки, его можно игнорировать.</p><p>Если вы столкнулись с этой ошибкой, следуйте инструкциям в разделе [Исправление ошибки Code-1000 `noProductIDsFound`](InvalidProductIdentifiers-unity).</p> |
| productRequestFailed | 1002 | <p>В данный момент не удаётся получить список доступных продуктов. Возможная причина:</p><p></p><p>- Кэш ещё не создан, и одновременно отсутствует подключение к интернету.</p> |
| cantMakePayments | 1003 | Встроенные покупки запрещены на этом устройстве. Смотрите [гайд](cantMakePayments-unity) по устранению неполадок. |
| noPurchasesToRestore | 1004 | Эта ошибка означает, что Google Play не нашёл покупку для восстановления. |
| cantReadReceipt | 1005 | <p>На устройстве отсутствует действующий чек. Это может возникать при тестировании в песочнице.</p><p>Никаких действий не требуется, но с точки зрения бизнес-логики вы можете предложить скидку пользователю или напомнить ему позже.</p> |
| productPurchaseFailed | 1006 | Покупка продукта не выполнена. |
| refreshReceiptFailed | 1010 | Эта ошибка означает, что чек не был получен. Применимо только к StoreKit 1. |
| receiveRestoredTransactionsFailed | 1011 | Восстановление покупок не выполнено. |
## Пользовательские сетевые коды \{#custom-network-codes\}
| Ошибка | Код | Решение |
|:---------------------|:-----|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| notActivated | 2002 | Adapty SDK не активирован. Необходимо правильно [настроить Adapty SDK](sdk-installation-unity#activate-adapty-module-of-adapty-sdk) с помощью метода `Adapty.activate`. |
| badRequest | 2003 | Некорректный запрос. <br/> Убедитесь, что вы выполнили все шаги, необходимые для [интеграции с App Store](app-store-connection-configuration). |
| serverError | 2004 | Ошибка сервера. <br/> Повторите попытку через некоторое время. Если проблема не устранена, обратитесь в службу поддержки Adapty. |
| networkFailed | 2005 | Ошибка указывает на проблемы с сетевым подключением на устройстве пользователя. <br/> Попробуйте отключить VPN или переключиться с мобильной сети на Wi-Fi или наоборот. |
| decodingFailed | 2006 | Ошибка указывает на сбой декодирования ответа. <br/> Проверьте код и убедитесь, что передаваемые параметры корректны. Например, эта ошибка может означать, что используется недействительный API-ключ. |
| encodingFailed | 2009 | Ошибка указывает на сбой кодирования запроса. |
| missingURL | 2010 | Запрошенный URL равен nil. |
| analyticsDisabled | 3000 | Обработка аналитических событий невозможна, так как вы [отключили её](analytics-integration#disabling-external-analytics-for-a-specific-customer). |
| wrongParam | 3001 | Ошибка указывает на некорректные параметры. <br/> Если вы используете Paywall Builder и не можете отобразить пейвол из-за этой ошибки, включите **Show on device** в Paywall Builder.<br/> Другая возможная причина — версия локального файла [резервного пейвола](fallback-paywalls) не совпадает с версией SDK. Скачайте новый файл в дашборде. |
| activateOnceError | 3005 | Метод `.activate` нельзя вызывать более одного раза. |
| profileWasChanged | 3006 | Профиль пользователя был изменён во время операции. <br/> Эта ошибка может возникнуть, если вы вызываете `identify`, а затем вызываете другой метод до завершения `identify`. Чтобы избежать этого, дождитесь успешного завершения `identify` перед вызовом других методов. |
| unsupportedData | 3007 | Ошибка указывает на то, что формат данных не поддерживается SDK. |
| persistingDataError | 3100 | Произошла ошибка при сохранении данных. |
| fetchTimeoutError | 3101 | Ошибка указывает на истечение времени ожидания операции получения данных. |
## Другие проблемы \{#other-issues\}

Если вы ещё не нашли решение, попробуйте следующее:
- **Обновите SDK до последней версии**: мы всегда рекомендуем использовать актуальные версии SDK — они стабильнее и содержат исправления известных проблем.
- **Обратитесь в службу поддержки или получите помощь от других разработчиков** на [форуме поддержки](https://adapty.featurebase.app/).
- **Напишите в поддержку на [support@adapty.io](mailto:support@adapty.io) или в чат**: если вы не готовы обновлять SDK или обновление не помогло, свяжитесь с нашей командой поддержки. Проблема решится быстрее, если вы [включите подробное логирование](sdk-installation-unity#logging) и поделитесь логами с командой. Также можно приложить соответствующие фрагменты кода.