💳Allo Docteur Payment API

API REST sécurisée pour les paiements mobile money

v1.0.0Production Ready

🔐Authentification

Toutes les requêtes nécessitent une API Key valide fournie dans le header :

bash
X-API-Key: votre-clé-api-secrète

Alternative : 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/payment
POST

/initiate

Initier un paiement

Initie un nouveau paiement mobile money (Airtel Money ou Moov Money).

Headers requis

bash
X-API-Key: votre-clé-api
Content-Type: application/json

Body JSON

json
{
  "amount": 5000,
  "phone": "0771234567",
  "provider": "airtel",
  "transactionId": "OPT_123"  // Optionnel
}

Paramètres

ParamètreTypeRequisDescription
amountnumberMontant en FCFA (minimum: 100)
phonestringNuméro de téléphone (9+ chiffres)
providerstring"airtel" ou "moov"
transactionIdstringID transaction externe (optionnel)

Validation des numéros

Airtel : Doit commencer par 077, 074, ou 076
Moov : Doit commencer par 066, 065, 060 ou 062

Ré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

/status

Vérifier le statut

Vérifie le statut d'une transaction initiée.

Headers requis

bash
X-API-Key: votre-clé-api

Query Parameters

ParamètreTypeRequisDescription
transactionIdstring⚠️*ID de transaction retourné par /initiate
referencestring⚠️*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 /status pour 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 code pour 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érifier
SUCCESS → Paiement confirmé, traiter la commande
FAILED → Paiement échoué, informer l'utilisateur