> ## Documentation Index
> Fetch the complete documentation index at: https://sandbox.it-centrex.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Gestion des erreurs

> Exceptions typées du SDK Flutter GimPay et bonnes pratiques d'intégration.

## Exceptions typées

Toutes les méthodes de la façade `Gimpay` lèvent des exceptions typées dérivées de `GimPayApiException`.

| Exception | Cas |
| - | - |
| `ValidationException` | Donnée invalide, rejetée **avant** l'appel réseau (`statusCode` `null`) ou par le serveur (`422`) |
| `UnauthorizedException` | token/credentials invalides (`401`) ou échec du `tokenProvider` |
| `NotFoundException`, `BadRequestException`, `ForbiddenException` | Erreurs `4xx` correspondantes |
| `ConflictException` | `409` — notamment sur `executeOperation` quand le `requestId` fourni a déjà été traité. Ne rejouez pas l'opération avec un nouveau `requestId` sans vérifier le statut de la tentative d'origine |
| `ServerException` | Erreurs `5xx` (le SDK a déjà retenté automatiquement) |
| `NetworkException`, `RequestTimeoutException` | Connectivité / délai dépassé |
| `GimpayNotInitializedException` | Méthode appelée avant l'initialisation du SDK |

```dart theme={null}
try {
  await Gimpay.getBalance(reference);
} on ValidationException catch (e) {
  log(e.message);
} on GimPayApiException catch (e) {
  log('${e.statusCode} ${e.message}', details: e.details);
}
```

> [!NOTE]
>
> Les énumérations renvoyées par l'API (`statutOperation`, `statutMmp`...) valent `null` si le serveur renvoie une valeur inconnue de votre version du SDK. Prévoyez toujours le cas `null`.

## Bonnes pratiques

**1. Sécurité**

Utilisez le mode `tokenProvider` en production ; appelez `Gimpay.logout()` à la déconnexion de l'utilisateur ; ne journalisez jamais PAN, CVV ou tokens côté application ; n'activez `enableLogs` qu'en debug.

**2. Dates**

Le SDK prend des `DateTime` et formate lui-même au format attendu par l'API (`yyyy-MM-dd`).

**3. MSISDN**

Le SDK expose `msisdn` partout et gère lui-même la conversion vers le nom de champ attendu par l'API.

**4. Montants**

Les montants sont des `double`, strictement positifs. Validés côté SDK avant l'appel réseau.

**5. Retries**

Timeouts, erreurs réseau et `5xx` sont retentés automatiquement (2 tentatives). N'ajoutez pas votre propre logique de retry par-dessus.

## Étapes suivantes

> **[Démarrage rapide](https://sandbox.it-centrex.com/sdks/quickstart.md)**
>
> Revoir le parcours d'intégration type.

> **[Couverture des APIs](https://sandbox.it-centrex.com/sdks/api-coverage.md)**
>
> La liste complète des endpoints disponibles.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.