🔐Authentification
Toutes les requêtes nécessitent une API Key valide fournie dans le header :
bash
X-API-Key: votre-clé-api-secrèteAlternative : Vous pouvez aussi utiliser le header Authorization :
bash
Authorization: Bearer votre-clé-api-secrète⚠️ Important : Ne partagez jamais votre API Key publiquement. Stockez-la de manière sécurisée dans vos variables d'environnement.
📍Base URL
bash
https://votre-domaine.vercel.app/api/v1/paymentPOST
Initier un paiement/initiate
Initie un nouveau paiement mobile money (Airtel Money ou Moov Money).
Headers requis
bash
X-API-Key: votre-clé-api
Content-Type: application/jsonBody JSON
json
{
"amount": 5000,
"phone": "0771234567",
"provider": "airtel",
"transactionId": "OPT_123" // Optionnel
}Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
amount | number | ✅ | Montant en FCFA (minimum: 100) |
phone | string | ✅ | Numéro de téléphone (9+ chiffres) |
provider | string | ✅ | "airtel" ou "moov" |
transactionId | string | ❌ | ID transaction externe (optionnel) |
Validation des numéros
Airtel : Doit commencer par
077, 074, ou 076Moov : Doit commencer par
066, 065, 060 ou 062Réponse succès (200)
json
{
"success": true,
"transactionId": "TXN_ABC123",
"reference": "REF_XYZ789",
"message": "Paiement initié avec succès. Vérifiez votre téléphone pour confirmer.",
"timestamp": 1234567890
}Réponses d'erreur
400
Validation Error
json
{
"success": false,
"error": "Paramètres de paiement invalides",
"code": "VALIDATION_ERROR",
"errors": ["Le numéro Airtel doit commencer par 077, 074, ou 076"]
}401
Unauthorized
json
{
"success": false,
"error": "API Key manquante ou invalide",
"code": "UNAUTHORIZED"
}500
Server Error
json
{
"success": false,
"error": "Erreur lors de l'initiation du paiement",
"code": "PAYMENT_ERROR"
}GET
Vérifier le statut/status
Vérifie le statut d'une transaction initiée.
Headers requis
bash
X-API-Key: votre-clé-apiQuery Parameters
| Paramètre | Type | Requis | Description |
|---|---|---|---|
transactionId | string | ⚠️* | ID de transaction retourné par /initiate |
reference | string | ⚠️* | Référence retournée par /initiate |
* Au moins un des deux paramètres est requis.
Réponse succès (200)
json
{
"success": true,
"transactionId": "TXN_ABC123",
"reference": "REF_XYZ789",
"status": "SUCCESS",
"amount": 5000,
"phone": "0771234567",
"provider": "airtel",
"message": "Transaction confirmée",
"timestamp": 1234567890,
"system": "mypvit"
}Statuts possibles
PENDINGTransaction initiée, en attente de confirmation du client
SUCCESSTransaction confirmée et réussie
FAILEDTransaction échouée ou annulée
💻Exemples de code
cURL
bash
curl -X POST https://votre-domaine.vercel.app/api/v1/payment/initiate \
-H "X-API-Key: votre-clé-api" \
-H "Content-Type: application/json" \
-d '{
"amount": 5000,
"phone": "0771234567",
"provider": "airtel"
}'JavaScript
javascript
const response = await fetch('https://votre-domaine.vercel.app/api/v1/payment/initiate', {
method: 'POST',
headers: {
'X-API-Key': 'votre-clé-api',
'Content-Type': 'application/json'
},
body: JSON.stringify({
amount: 5000,
phone: '0771234567',
provider: 'airtel'
})
})
const data = await response.json()
console.log(data)Python
python
import requests
response = requests.post(
'https://votre-domaine.vercel.app/api/v1/payment/initiate',
headers={
'X-API-Key': 'votre-clé-api',
'Content-Type': 'application/json'
},
json={
'amount': 5000,
'phone': '0771234567',
'provider': 'airtel'
}
)
print(response.json())⚠️Notes importantes
- Les transactions sont asynchrones : le paiement n'est pas instantané
- Utilisez
/statuspour vérifier le statut final - Les transactions sont conservées pendant 24 heures dans le système
- Le montant minimum est de 100 FCFA
- Les numéros de téléphone doivent correspondre au provider sélectionné
- En cas d'erreur, consultez le champ
codepour identifier le type d'erreur
🔄Flux de paiement
1
Initier le paiement
Appelez /initiate avec les paramètres requis
2
Récupérer les identifiants
Conservez transactionId et reference de la réponse
3
Vérifier le statut
Utilisez /status régulièrement pour vérifier si le paiement est confirmé
4
Gérer la réponse
PENDING → Continuer à vérifierSUCCESS → Paiement confirmé, traiter la commandeFAILED → Paiement échoué, informer l'utilisateur