Erreurs
Lire une réponse
- Regardez le statut HTTP.
2xx: requête acceptée.4xx: problème dans votre requête.5xx: problème côté MoyaPay ou chez l'opérateur. - Dans une réponse
200, testez toujours le champsuccess. - Lisez ensuite le détail de l'erreur : champ
description(erreurs métier) oumessage(erreurs de validation et d'authentification).
Les réponses d'erreur existent sous quatre formes, selon l'étape où la requête est refusée.
1. Erreur métier
Refus décidé après la validation du corps (compte, moyen de paiement, doublon, échec opérateur...). Le statut HTTP est repris dans code. Le motif précis est dans description ; message est un texte générique.
{
"status": "error",
"description": "Marchand not have provider",
"success": false,
"code": 400,
"message": "Invalid request parameters"
}
2. Erreur de validation du corps
Champ manquant ou invalide. Le motif est dans err.message.
{
"err": {
"status": "error",
"message": "You must add telephone to your body",
"code": 400
}
}
Pour quelques champs (business_code, country_code, merchant_transaction_id) et pour /login, la même erreur est renvoyée sans l'enveloppe err :
{
"status": "error",
"message": "You must add business_code to your body",
"code": 400
}
3. Erreur d'authentification
Jeton absent, invalide ou expiré (HTTP 401). Le texte exact de message varie selon la route ; seuls le statut HTTP et success: false sont stables.
{
"success": false,
"message": "No Bearer Token Provided",
"code": 401
}
{
"success": false,
"message": "Token Signature could not be verified.",
"code": 401,
"error": "jwt expired"
}
4. Solde insuffisant (payout)
Un payout refusé faute de solde suffisant renvoie un 400 : le champ status vaut FAILED, message précise la raison et la réponse rappelle votre merchant_transaction_id. Aucune transaction n'est créée : vous pouvez réessayer avec le même identifiant après avoir rechargé votre solde.
Erreurs courantes
| HTTP | Où lire le motif | Motif | Que faire |
|---|---|---|---|
400 | err.message | You must add <champ> to your body | Ajouter le champ manquant |
400 | err.message | PAYMENT_METHOD_NOT_EXIST | Utiliser un code de Moyens de paiement |
400 | err.message | Amount must be ... | Respecter les Limites |
400 | err.message | Amount must be a number | Envoyer amount en nombre, pas en chaîne |
400 | err.message | Invalid payment_method add OTP field | Ajouter otp_code (obligatoire pour OM_CI) |
400 | err.message | CURRENCY_NOT_EXIST | Utiliser une devise du tableau Devises par pays |
400 | description | Currency not valid for this country, expected XOF | currency ne correspond pas au pays de la transaction : envoyer la devise indiquée, voir Devises par pays |
400 | description | Phone number not valid | Corriger le numéro, voir Limites |
400 | description | Marchand not have provider | Moyen de paiement non activé sur votre compte : contacter MoyaPay |
400 | description | Business not exist for this merchant contact administrator | business_code inconnu ou n'appartenant pas à votre compte |
400 | description | The merchant does not have any operator configured. | Aucun moyen de paiement activé : contacter MoyaPay |
400 | description | An identical transaction is already in progress. Please wait. | Attendre la fin de la transaction identique |
400 | description | Transaction ID ... allready existe | merchant_transaction_id déjà utilisé : en choisir un nouveau |
400 | message | Solde insuffisant (payout) | Recharger le solde |
401 | message | Jeton absent, invalide ou expiré | Se reconnecter via /login |
401 | message | Marchand not found for this user | refercence_cl inconnu. Le champ code du corps peut valoir 404 alors que le statut HTTP est 401 |
401 | message | You are not authorized to perform this action for this marchand ... | refercence_cl ne correspond pas à votre compte |
401 | description | Marchand disabled | Compte désactivé : contacter MoyaPay |
500 | description | Impossible to make the transaction | Échec chez l'opérateur. Vérifier le statut avant de renvoyer |
500 | description | Impossible to get transaction | Sur /check-status : transaction introuvable |
Ne basez pas votre logique sur le texte exact des messages : ils peuvent être reformulés. Appuyez-vous sur le statut HTTP, sur success et sur les statuts de transaction (SUCCESS, FAILED...).