Gestion des Erreurs
L'API Collect utilise les codes HTTP standards. Les erreurs métier incluent un champ code pour un traitement programmatique.
Codes de statut HTTP
Succès (2xx)
- Name
200 OK- Description
Requête réussie (lecture, rejeu idempotent, confirmation OTP).
- Name
201 Created- Description
Collecte créée.
Erreur client (4xx)
- Name
400 Bad Request- Description
Paramètres invalides (opérateur, téléphone, montant, OTP, etc.).
- Name
401 Unauthorized- Description
Clé API manquante ou invalide.
- Name
403 Forbidden- Description
Accès refusé (compte, clé, marchand).
- Name
404 Not Found- Description
Référence ou ressource introuvable.
- Name
429 Too Many Requests- Description
Limite de débit dépassée.
Erreur serveur (5xx)
- Name
500 Internal Server Error- Description
Erreur interne (
collect_failed,collect_confirm_failed).
Format de réponse d'erreur (API Collect)
{
"error": "Numéro invalide pour BJ.",
"code": "invalid_phone"
}
- Name
error- Type
- string
- Description
Message lisible pour le support ou les logs.
- Name
code- Type
- string
- Description
Code machine pour votre logique applicative.
Les erreurs de validation DRF (champ manquant) peuvent renvoyer un objet par champ — traitez le corps JSON selon le statut HTTP.
Codes métier API Collect
- Name
invalid_operator- Description
Pays ou opérateur non supporté.
- Name
invalid_phone- Description
Numéro incompatible avec le pays.
- Name
amount_too_low- Description
Montant sous le minimum XOF (10 000 centimes).
- Name
invalid_otp- Description
Code OTP Coris invalide.
- Name
otp_not_required- Description
Confirmation OTP non attendue pour cette collecte.
- Name
missing_idempotency_key- Description
En-tĂŞte
Idempotency-Keyrequis mais absent.
- Name
not_found- Description
Référence marchand inconnue.
- Name
collect_failed- Description
Erreur interne lors de la collecte.
- Name
collect_confirm_failed- Description
Erreur interne lors de la confirmation OTP.
Exemple de gestion (JavaScript)
const res = await fetch('https://api.fluxxpay.com/api/v1/collect/mobile-money/', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
'Idempotency-Key': 'collect-ORDER-123',
},
body: JSON.stringify(payload),
})
if (!res.ok) {
const body = await res.json().catch(() => ({}))
switch (body.code) {
case 'invalid_operator':
case 'invalid_phone':
case 'amount_too_low':
// Afficher une erreur utilisateur
break
case 'collect_failed':
// Erreur serveur — retry limité ou support
break
default:
if (res.status === 401) {
// Clé API
}
}
throw new Error(body.error || res.statusText)
}
Bonnes pratiques
- Name
Idempotence- Description
Sur retry réseau, réutilisez la même
Idempotency-Keyet la mĂŞmereference.
- Name
Logs- Description
Enregistrez
code,referenceet statut HTTP — pas la clé API.
- Name
429- Description
Backoff exponentiel ; respectez
Retry-Aftersi présent.
- Name
Support- Description
Fournissez
reference,idtransaction et horodatage au support FluxxPay.