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

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

:::tip
**Activez les logs verbeux avant de déboguer.** La plupart des `AdaptyError` encapsulent une erreur sous-jacente de StoreKit, Play Billing, réseau ou backend. Avec les logs verbeux activés (`await Adapty().setLogLevel(AdaptyLogLevel.verbose)` — voir [Logging](sdk-installation-flutter#logging)), cette erreur encapsulée s'affiche dans la console, ce qui révèle généralement la cause réelle.
:::

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

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

## Codes StoreKit système \{#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 demandé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 l'offre 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 transmettre 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 d'une remise sur 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 sur 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 correspondre à 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 procéder [pour Flutter]( sdk-installation-flutter#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 un paywall avec le Remote Config](customize-paywall-with-remote-config) pour savoir comment y remédier. |
| 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 et non finalisé. Consultez la page [Handling pending transactions](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'expiration maximal avant que Google Play puisse répondre. Cela peut être dû, par exemple, à un retard 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 temporaire 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 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 lors du processus d'achat. Voici quelques exemples de cas où cela peut se produire :</p><p></p><p>1\. L'application Play Store sur l'appareil de l'utilisateur n'est pas à jour.</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 n'est pas en mesure de débiter le mode 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 à 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é sin |

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

| Erreur                                                                                              | Code | Solution                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|-----------------------------------------------------------------------------------------------------|------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| noProductIDsFound                                                                                   | 1000 | <p>Cette erreur indique qu'aucun des produits 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 [Correctif pour l'erreur Code-1000 `noProductIDsFound`](InvalidProductIdentifiers-flutter).</p> |
| noProductsFound                                                                                     | 1001 | Cette erreur indique que le produit demandé à l'achat n'est pas disponible dans le store.                                                                                                                                                                                                                                                                                                                                                         |
| productRequestFailed                                                                                | 1002 | Impossible de récupérer les produits disponibles pour le moment.                                                                                                                                                                                                                                                                                                                                                                                   |
| cantMakePayments                                                                                    | 1003 | Les achats intégrés ne sont pas autorisés sur cet appareil. Consultez le [guide](cantMakePayments-flutter) de dépannage.                                                                                                                                                                                                                                                                                                                                                 |
| noPurchasesToRestore                                                                                | 1004 | Cette erreur indique que l'App Store n'a trouvé aucun achat à restaurer.                                                                                                                                                                                                                                                                                                                                                                       |
| [cantReadReceipt](https://developer.apple.com/documentation/storekit/skerror/code/paymentcancelled) | 1005 | <p>Aucun reçu valide n'est disponible sur l'appareil. Cela peut poser problème lors des tests en sandbox.</p><p>En sandbox, vous n'aurez pas de fichier de reçu valide tant que vous n'avez pas effectué un achat — assurez-vous d'en faire un avant d'y accéder. Lors des tests en sandbox, vérifiez également que vous êtes connecté sur l'appareil avec un compte sandbox Apple valide.</p>                                                                                               |
| productPurchaseFailed                                                                               | 1006 | L'achat du produit a échoué. Cette erreur encapsule une erreur StoreKit sous-jacente — lisez l'erreur encapsulée (ou activez les logs verbeux pour la voir dans la console) pour en 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 parvenez pas à identifier une raison précise, essayez un nouveau [profil sandbox](test-purchases-in-sandbox) ; si l'échec persiste, contactez le support Apple. |
| missingOfferSigningParams                                                                           | 1007 | <p>Cette erreur indique un problème d'intégration Adapty ou avec les offres.</p><p>Consultez [Configurer l'intégration App Store](app-store-connection-configuration) et [Offres](offers) pour savoir comment les configurer.</p>                                                                                                                                                                                                                      |
| refreshReceiptFailed                                                                                | 1010 | Cette erreur indique que le reçu n'a pas été reçu. Applicable à StoreKit 1 uniquement.                                                                                                                                                                                                                                                                                                                                                              |
| 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/> Cela survient le plus souvent lorsqu'un écran de démarrage ou un hook d'interface précoce appelle des méthodes Adapty avant que `Adapty().activate` ne retourne. Le symptôme est intermittent et peut ne pas se reproduire dans l'émulateur car le timing sur un vrai appareil est différent. Attendez (`await`) le Future `activate` avant de planifier tout autre appel SDK. Voir [Ordre des appels dans le SDK Flutter](flutter-sdk-call-order) pour la séquence complète.                                                                                                                                                                                                                                                                                                                    |
| badRequest     | 2003 | Requête incorrecte. <br/> Vérifiez que vous avez bien suivi 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 Wi-Fi, 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 envoyés 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é.                                                                                                                                                                                                                                                                                                                                                                                 |
| analyticsDisabled    | 3000 | Impossible de 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 d'Adapty et que vous ne pouvez pas afficher un paywall à cause de cette erreur, activez l'option **Show on device** dans le Paywall Builder.<br/> Une autre cause possible est que la version du fichier [paywall de secours](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 alors que `Adapty().identify` est encore en cours — l'appel en vol atterrit sur un profil sur le point d'être remplacé, et le SDK le rejette. Attendez toujours (`await`) `identify` avant tout appel lié à une action utilisateur. Voir [Ordre des appels dans le SDK Flutter](flutter-sdk-call-order).                                                                                                                                                                                          |
| unsupportedData      | 3007 | Cette erreur indique que le format des 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 expiré.                                                                                                                                                                                                                                                                                                                                                           |

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

Si vous n'avez pas encore trouvé de solution, voici quelques pistes supplémentaires :

- **Mettre à jour le SDK vers la dernière version** : nous recommandons toujours de passer à la dernière version du SDK, car elle est plus stable et inclut des correctifs pour les problèmes connus.
- **Contacter l'équipe de support ou obtenir de l'aide auprès d'autres développeurs** sur le [forum de support](https://adapty.featurebase.app/).
- **Contacter l'équipe de 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 que cela n'a pas résolu le problème, contactez notre équipe de support. Notez que votre problème sera résolu plus rapidement si vous [activez la journalisation verbose](sdk-installation-flutter#logging) et partagez les logs avec l'équipe. Vous pouvez également joindre des extraits de code pertinents.