---
title: "Gérer les erreurs dans le SDK Unity"
description: "Gérer les erreurs dans le SDK Unity."
---

Chaque erreur retournée par le SDK est de type `AdaptyErrorCode`. Voici un exemple :

:::tip
**Activez les logs verbeux avant de déboguer.** La plupart des `AdaptyError`s encapsulent une erreur sous-jacente de StoreKit, Play Billing, réseau ou backend. Avec les logs verbeux activés (`Adapty.SetLogLevel(AdaptyLogLevel.Verbose, ...)` — voir [Journalisation](sdk-installation-unity#logging)), cette erreur encapsulée est affichée dans la console, ce qui vous indique généralement la cause réelle.
:::

:::important
Si ces solutions ne résolvent pas votre problème, consultez la section [Autres problèmes](#other-issues) pour connaître les étapes à suivre avant de contacter le support, afin de nous aider à vous assister plus efficacement.
:::

```csharp showLineNumbers
Adapty.MakePurchase(product, (profile, error) => {
  if (error != null && error.Code == Adapty.ErrorCode.PaymentCancelled) {
      // payment cancelled
  }
});
```

## Codes système StoreKit \{#system-storekit-codes\}

| Erreur | Code | Solution |
|-----|----|-----------|
| [unknown](https://developer.apple.com/documentation/storekit/skerror/code/unknown)                                                         | 0    | Code d'erreur indiquant qu'une erreur inconnue ou inattendue s'est produite. <br/> Réessayez ou consultez la section [Autres problèmes](#other-issues).                                                                                                                                                                                                                                                                                                                   |
| [clientInvalid](https://developer.apple.com/documentation/storekit/skerror/code/clientinvalid)                                             | 1    | Ce code d'erreur indique que le client n'est pas autorisé à effectuer l'action tentée.                                                                                                                                                                                                                                                                                                                                                                           |
| [paymentCancelled](https://developer.apple.com/documentation/storekit/skerror/code/paymentcancelled)                                       | 2    | <p>Ce code d'erreur indique que l'utilisateur a annulé une demande de paiement.</p><p>Aucune action n'est requise, mais d'un point de vue logique métier, vous pouvez proposer une remise à votre utilisateur ou lui rappeler ultérieurement.</p>                                                                                                                                                                                                                                             |
| [paymentInvalid](https://developer.apple.com/documentation/storekit/skerror/code/paymentinvalid)                                           | 3    | Cette erreur indique que l'un des paramètres de paiement n'a pas été reconnu par l'App Store.                                                                                                                                                                                                                                                                                                                                                                        |
| [paymentNotAllowed](https://developer.apple.com/documentation/storekit/skerror/code/paymentnotallowed)                                     | 4    | Ce code d'erreur indique que l'utilisateur n'est pas autorisé à valider des paiements.                                                                                                                                                                                                                                                                                                                                                                       |
| [storeProductNotAvailable](https://developer.apple.com/documentation/storekit/skerror/code/storeproductnotavailable)                       | 5    | Ce code d'erreur indique que le produit demandé n'est pas disponible dans le store. <br/>  Essayez de réinstaller l'application.                                                                                                                                                                                                                                                                                                                               |
| [cloudServicePermissionDenied](https://developer.apple.com/documentation/storekit/skerror/code/cloudservicepermissiondenied)               | 6    | Ce code d'erreur indique que l'utilisateur n'a pas autorisé l'accès aux informations du service cloud.                                                                                                                                                                                                                                                                                                                                                        |
| [cloudServiceNetworkConnectionFailed](https://developer.apple.com/documentation/storekit/skerror/code/cloudservicenetworkconnectionfailed) | 7    | Ce code d'erreur indique que l'appareil n'a pas pu se connecter au réseau.                                                                                                                                                                                                                                                                                                                                                                                         |
| [cloudServiceRevoked](https://developer.apple.com/documentation/storekit/skerror/code/cloudservicerevoked/)                                | 8    | Ce code d'erreur indique que l'utilisateur a révoqué l'autorisation d'utiliser ce service cloud.                                                                                                                                                                                                                                                                                                                                                                           |
| [privacyAcknowledgementRequired](https://developer.apple.com/documentation/storekit/skerror/code/privacyacknowledgementrequired)           | 9    | Ce code d'erreur indique que l'utilisateur n'a pas encore accepté la politique de confidentialité d'Apple.                                                                                                                                                                                                                                                                                                                                                            |
| [unauthorizedRequestData](https://developer.apple.com/documentation/storekit/skerror/code/unauthorizedrequestdata)                         | 10   | Ce code d'erreur indique que l'application tente d'utiliser une propriété pour laquelle elle ne dispose pas des droits requis.                                                                                                                                                                                                                                                                                                                                         |
| [invalidOfferIdentifier](https://developer.apple.com/documentation/storekit/skerror/code/invalidofferidentifier)                           | 11   | <p>L'[`identifiant`](https://developer.apple.com/documentation/storekit/skpaymentdiscount/identifier) de l'offre n'est pas valide. Par exemple, vous n'avez pas configuré d'offre avec cet identifiant dans l'App Store, ou vous avez révoqué l'offre.</p><p>Assurez-vous de configurer les offres souhaitées dans AppStore Connect et de passer un identifiant d'offre valide.</p>                                                                                           |
| [invalidSignature](https://developer.apple.com/documentation/storekit/skerror/code/invalidsignature)                                       | 12   | Ce code d'erreur indique que la signature dans une remise de paiement n'est pas valide.                                                                                                                                                                                                                                                                                                                                                                                    |
| [missingOfferParams](https://developer.apple.com/documentation/storekit/skerror/code/missingofferparams)                                   | 13   | Ce code d'erreur indique que des paramètres sont manquants dans une remise de paiement.                                                                                                                                                                                                                                                                                                                                                                        |
| [invalidOfferPrice](https://developer.apple.com/documentation/storekit/skerror/code/invalidofferprice/)                                    | 14   | Ce code d'erreur indique que le prix que vous avez spécifié dans App Store Connect n'est plus valide. Les offres doivent toujours représenter un prix réduit.                                                                                                                                                                                                                                                                                                                    |

## Codes Android personnalisés \{#custom-android-codes\}

| Erreur | Code | Solution                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|-----|----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| adaptyNotInitialized | 20 | Vous devez configurer correctement le SDK Adapty via la méthode `Adapty.activate`. Découvrez comment le faire [pour Unity](sdk-installation-unity#activate-adapty-module-of-adapty-sdk).                                                                                                                                                                                                                                                                                                                                                                                                            |
| productNotFound | 22 | Cette erreur indique que le produit demandé pour l'achat n'est pas disponible dans le store.                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| invalidJson | 23 | Le JSON du paywall n'est pas valide. Corrigez-le dans l'Adapty Dashboard. Consultez la rubrique [Personnaliser le paywall avec Remote Config](customize-paywall-with-remote-config) pour savoir comment le corriger.                                                                                                                                                                                                                                                                                                                                                                    |
| currentSubscriptionToUpdateNotFoundInHistory | 24 | L'abonnement d'origine qui doit être renouvelé est introuvable.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| pendingPurchase | 25 | Cette erreur indique que l'état de l'achat est en attente plutôt que finalisé. Consultez la page [Gestion des transactions en attente](https://developer.android.com/google/play/billing/integrate#pending) dans la documentation Android Developer pour plus de détails.                                                                                                                                                                                                                                                                                                                |
| billingServiceTimeout | 97 | Cette erreur indique que la requête a atteint le délai d'attente maximum avant que Google Play puisse répondre. Cela peut être causé, par exemple, par un délai dans l'exécution de l'action demandée par l'appel à la bibliothèque Play Billing.                                                                                                                                                                                                                                                                                                                                   |
| featureNotSupported | 98 | La fonctionnalité demandée n'est pas prise en charge par le Play Store sur l'appareil actuel.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| billingServiceDisconnected | 99 | Cette erreur fatale indique que la connexion de l'application cliente au service Google Play Store via le `BillingClient` a été interrompue.                                                                                                                                                                                                                                                                                                                                                                                                                           |
| billingServiceUnavailable | 102 | Cette erreur transitoire indique que le service Google Play Billing est actuellement indisponible. Dans la plupart des cas, cela signifie qu'il y a un problème de connexion réseau quelque part entre l'appareil client et les services Google Play Billing.                                                                                                                                                                                                                                                                                                                                      |
| billingUnavailable | 103 | <p>Cette erreur indique qu'une erreur de facturation utilisateur s'est produite pendant le processus d'achat. Exemples de situations où cela peut se produire :</p><p></p><p>1\. L'application Play Store sur l'appareil de l'utilisateur est obsolète.</p><p>2. L'utilisateur se trouve dans un pays non pris en charge.</p><p>3. L'utilisateur est un utilisateur entreprise et son administrateur a désactivé les achats pour les utilisateurs.</p><p>4. Google Play ne peut pas débiter le moyen de paiement de l'utilisateur. Par exemple, la carte de crédit de l'utilisateur a peut-être expiré.</p><p>5. L'utilisateur n'est pas connecté à l'application Play Store.</p> |
| developerError | 105 | Il s'agit d'une erreur fatale indiquant que vous utilisez une API de manière incorrecte.                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| billingError | 106 | Il s'agit d'une erreur fatale indiquant un problème interne avec Google Play lui-même.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| itemAlreadyOwned | 107 | Le produit consommable a déjà été acheté.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| itemNotOwned | 108 | Cette erreur indique que l'action demandée sur l'article a échoué car                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |

## Codes StoreKit personnalisés \{#custom-storekit-codes\}

| Erreur | Code | Solution |
|-----|----|-----------|
| noProductIDsFound | 1000 | <p>Cette erreur indique qu'aucun des produits que vous avez demandés sur le paywall n'est disponible à l'achat dans l'App Store, même s'ils y sont répertoriés. Cette erreur peut parfois s'accompagner d'un avertissement `InvalidProductIdentifiers`. Si l'avertissement apparaît sans erreur, ignorez-le.</p><p>Si vous rencontrez cette erreur, suivez les étapes de la section [Correction de l'erreur Code-1000 `noProductIDsFound`](InvalidProductIdentifiers-unity).</p> |
| productRequestFailed | 1002 | <p>Impossible de récupérer les produits disponibles pour le moment. Raison possible :</p><p></p><p>- Aucun cache n'a encore été créé et il n'y a pas de connexion Internet en même temps.</p> |
| cantMakePayments | 1003 | Les achats intégrés ne sont pas autorisés sur cet appareil. Consultez le [guide](cantMakePayments-unity) de dépannage. |
| noPurchasesToRestore | 1004 | Cette erreur indique que Google Play n'a pas trouvé d'achat à restaurer. |
| cantReadReceipt | 1005 | <p>Aucun reçu valide n'est disponible sur l'appareil. Cela peut poser problème lors des tests en sandbox.</p><p>Aucune action n'est requise, mais d'un point de vue logique métier, vous pouvez proposer une remise à votre utilisateur ou lui rappeler ultérieurement.</p> |
| productPurchaseFailed | 1006 | L'achat du produit a échoué. Cela encapsule une erreur StoreKit sous-jacente — lisez l'erreur encapsulée (ou activez les logs verbeux pour la voir dans la console) pour connaître la raison réelle. L'erreur encapsulée correspond généralement à l'un des codes StoreKit 0–14 du tableau ci-dessus — le plus souvent `paymentCancelled`, `paymentInvalid`, `paymentNotAllowed` ou `invalidOfferPrice`. Si vous ne pouvez pas identifier une raison précise, essayez un nouveau [profil sandbox](test-purchases-in-sandbox) ; si cela échoue encore, contactez le support Apple. |
| refreshReceiptFailed | 1010 | Cette erreur indique que le reçu n'a pas été reçu. Applicable uniquement à StoreKit 1. |
| receiveRestoredTransactionsFailed | 1011 | La restauration des achats a échoué. |

## Codes réseau personnalisés \{#custom-network-codes\}

| Erreur                | Code | Solution                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---------------------|:-----|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| notActivated   | 2002 | Le SDK Adapty n'est pas activé. <br/> Cas le plus fréquent : un écran de démarrage ou un hook de script précoce appelle des méthodes Adapty avant que `Adapty.Activate` soit terminé. Le symptôme est intermittent et peut ne pas se reproduire dans l'éditeur car les timings sur appareil réel sont différents. Attendez le callback de complétion d'`Activate` avant de planifier tout autre appel SDK. Voir [Ordre des appels dans le SDK Unity](unity-sdk-call-order) pour la séquence complète. |
| badRequest     | 2003 | Requête incorrecte. <br/> Assurez-vous d'avoir effectué toutes les étapes requises pour [l'intégration avec l'App Store](app-store-connection-configuration).                                                                                                                                                                                                                                                                           |
| serverError    | 2004 | Erreur serveur. <br/> Réessayez après quelques instants. Si le problème persiste, contactez l'équipe support Adapty.                                                                                                                                                                                                                                                                                                                      |
| networkFailed  | 2005 | Cette erreur indique des problèmes de connexion réseau sur l'appareil de l'utilisateur. <br/> Essayez de désactiver le VPN ou de passer du réseau cellulaire au WiFi, ou inversement.                                                                                                                                                                                                                                                   |
| decodingFailed | 2006 | Cette erreur indique que le décodage de la réponse a échoué. <br/> Vérifiez votre code et assurez-vous que les paramètres que vous envoyez sont valides. Par exemple, cette erreur peut indiquer que vous utilisez une clé API invalide.                                                                                                                                                                                                                       |
| encodingFailed | 2009 | Cette erreur indique que l'encodage de la requête a échoué.                                                                                                                                                                                                                                                                                                                                                                                 |
| missingURL     | 2010 | L'URL demandée est nil.                                                                                                                                                                                                                                                                                                                                                                                                          |
| analyticsDisabled    | 3000 | Nous ne pouvons pas traiter les événements d'analytics, car vous avez [désactivé cette option](analytics-integration#disabling-external-analytics-for-a-specific-customer).                                                                                                                                                                                                                                                                         |
| wrongParam           | 3001 | Cette erreur indique que certains de vos paramètres sont incorrects. <br/> Si vous utilisez le Paywall Builder Adapty et ne pouvez pas afficher un paywall à cause de cette erreur, activez **Show on device** dans le Paywall Builder.<br/> Une autre raison possible est que la version du fichier [fallback](fallback-paywalls) local ne correspond pas à la version du SDK. Téléchargez un nouveau fichier depuis le tableau de bord. |
| activateOnceError    | 3005 | Il n'est pas possible d'appeler la méthode `.activate` plus d'une fois.                                                                                                                                                                                                                                                                                                                                                                      |
| profileWasChanged    | 3006 | Le profil utilisateur a été modifié pendant l'opération. <br/> Cela se produit lorsqu'une méthode est appelée pendant qu'`Adapty.Identify` est encore en cours — l'appel en vol arrive sur un profil qui est sur le point d'être remplacé, et le SDK le rejette. Attendez le callback de complétion d'`Identify` avant tout appel d'action utilisateur. Voir [Ordre des appels dans le SDK Unity](unity-sdk-call-order). |
| unsupportedData      | 3007 | Cette erreur indique que le format de données n'est pas pris en charge par le SDK.                                                                                                                                                                                                                                                                                                                                                             |
| persistingDataError  | 3100 | Une erreur s'est produite lors de l'enregistrement des données.                                                                                                                                                                                                                                                                                                                                                                                 |
| fetchTimeoutError    | 3101 | Cette erreur indique que l'opération de récupération a dépassé le délai d'attente.                                                                                                                                                                                                                                                                                                                                                           |

## Autres problèmes \{#other-issues\}

Si vous n'avez pas encore trouvé de solution, voici les prochaines étapes :

- **Mettre à jour le SDK vers la dernière version** : nous recommandons toujours de mettre à jour vers les dernières versions du SDK, car elles sont plus stables et incluent des correctifs pour les problèmes connus.
- **Contacter l'équipe support ou obtenir de l'aide auprès d'autres développeurs** sur le [forum de support](https://adapty.featurebase.app/).
- **Contacter l'équipe support via [support@adapty.io](mailto:support@adapty.io) ou via le chat** : si vous n'êtes pas prêt à mettre à jour le SDK ou si cela n'a pas résolu le problème, contactez notre équipe support. Notez que votre problème sera résolu plus rapidement si vous [activez la journalisation verbeux](sdk-installation-unity#logging) et partagez les logs avec l'équipe. Vous pouvez également joindre des extraits de code pertinents.