Documentation API
Intégrez les paiements Dialo dans votre application avec notre API RESTful moderne
Obtenir vos identifiants API
Créez un compte développeur pour générer vos jetons d'accès
🚀 Prêt à commencer ?
Pour utiliser l'API Dialo, vous devez d'abord créer un compte développeur et obtenir vos identifiants d'authentification.
📋 Étapes pour obtenir votre token :
- Créez votre compte sur le portail développeur
- Validez votre email et complétez votre profil
- Générez vos identifiants (client_id et client_secret) dans la section API
- Utilisez l'endpoint d'authentification pour obtenir votre token Bearer
Processus simple et gratuit - Compte activé en quelques minutes
💡 Informations importantes
- Vos identifiants sont confidentiels - ne les partagez jamais
- Le token a une durée de validité de 1 heure
- Testez d'abord en environnement sandbox
- Consultez notre guide de sécurité pour les meilleures pratiques
Authentification
Obtenez un jeton d'accès pour autoriser vos requêtes API
Générez un jeton Bearer pour autoriser les requêtes API. Ce jeton est valable 1 heure et doit être inclus dans l'en-tête Authorization de chaque requête.
Paramètres
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| client_id | string | Oui | ID client de votre application |
| client_secret | string | Oui | Secret client de votre application |
| grant_type | string | Oui | Valeur fixe client_credentials |
Exemple de requête
curl -X POST "https://auth.market-dialo.com/auth/realms/m360/protocol/openid-connect/token" \\
-H "Content-Type: application/x-www-form-urlencoded" \\
-d "client_id=VOTRE_CLIENT_ID" \\
-d "client_secret=VOTRE_CLIENT_SECRET" \\
-d "grant_type=client_credentials"
Exemple de réponse
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJhZ...",
"expires_in": 3600,
"token_type": "Bearer",
"scope": "profile email"
}
Initier un paiement
Crée une transaction et retourne une URL de paiement hébergée
Crée une transaction et retourne une URL de paiement hébergée où le client peut finaliser le règlement.
Paramètres
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| amount | integer | Oui | Montant en unité la plus petite (ex: centimes) |
| currency | string | Oui | Code monnaie (XOF, USD…) |
| callbackUrl | string | Oui | URL de notification de paiement |
| reference | string | Non | Référence unique de votre transaction |
Exemple de requête
curl -X POST "https://api.market-dialo.com/pay/v1/init-payment" \\
-H "Authorization: Bearer VOTRE_JETON" \\
-H "Content-Type: application/json" \\
-d '{
"amount": 1000,
"currency": "XOF",
"callbackUrl": "https://votre-site.com/webhook",
"reference": "ORDER-12345"
}'
Exemple de réponse
{
"transactionId": "txn_5f7e8d9a0b1c2d3e",
"paymentUrl": "https://pay.market-dialo.com/checkout/txn_5f7e8d9a0b1c2d3e",
"reference": "ORDER-12345",
"amount": 1000,
"currency": "XOF",
"status": "PENDING"
}
Paiements directs
Effectuer un paiement direct via carte bancaire ou mobile money
Effectue un paiement direct sans redirection. Supporte les cartes bancaires et les paiements mobiles (Wave, Orange Money, etc.).
Paramètres de requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| type | string | Oui | Type de paiement: card, wave, orange, mtn |
Paramètres du corps
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| transactionReference | string | Oui | Référence de la transaction initiale |
| card | object | Conditionnel | Informations de carte (pour type=card) |
| mobile | object | Conditionnel | Informations mobiles (pour type=wave/orange/mtn) |
Exemple de requête - Carte bancaire
curl -X POST "https://api.market-dialo.com/pay/v1/direct-pay?type=card" \\
-H "Authorization: Bearer VOTRE_JETON" \\
-H "Content-Type: application/json" \\
-H "X-Correlation-Id: 65c34e5c-e31b-48c4-aebc-cbfd65505918" \\
-d '{
"transactionReference": "cb84c253-66d0-4619-91c8-2e3e056432b6",
"card": {
"cardNumber": "5531 8866 5214 2950",
"expiry": "06/26",
"cvv": "123",
"cardHolderName": "test"
}
}'
Exemple de requête - Mobile Money (Wave)
curl -X POST "https://api.market-dialo.com/pay/v1/direct-pay?type=wave" \\
-H "Authorization: Bearer VOTRE_JETON" \\
-H "Content-Type: application/json" \\
-H "X-Correlation-Id: 65c34e5c-e31b-48c4-aebc-cbfd65505918" \\
-d '{
"transactionReference": "cb84c253-66d0-4619-91c8-2e3e056432b6",
"mobile": {
"countryCode": "225",
"proxy": "wave",
"phoneNumber": "0707144799"
}
}'
Exemple de réponse
{
"transactionReference": "7de13c1a-9aaf-464a-939c-927b6bfb140c",
"pspTransactionId": "chg_FEIGfNVr1J",
"status": "succeeded",
"amount": 100.0,
"currency": "XOF",
"message": "Hosted Link"
}
Statut de transaction
Récupère les détails complets d'une transaction
Récupère les détails complets d'une transaction, y compris son statut, montant, devise et informations du processeur de paiement.
Exemple de requête
curl -X GET "https://api.market-dialo.com/pay/v1/transactions/5fa7fc82-e049-4b3d-adad-8c934ddfcc66" \\
-H "Authorization: Bearer VOTRE_JETON" \\
-H "X-Correlation-Id: 65c34e5c-e31b-48c4-aebc-cbfd65505918"
Exemple de réponse
{
"id": "2692f2f2-3f60-438e-9b17-cffec1b6d82a",
"transactionReference": "5fa7fc82-e049-4b3d-adad-8c934ddfcc66",
"pspTransactionId": "cee25042-3147-4a7f-a8f2-e981673abd6e",
"status": "canceled",
"targetId": "a8115f49-4be9-443b-ac0a-ef5ecd83f08f",
"targetType": "order",
"amount": 5000,
"currency": "XOF",
"gateway": "card",
"payType": "DEBIT",
"createdAt": "2025-07-09T22:37:01.465383"
}
Statuts possibles
| Statut | Description |
|---|---|
| created | Transaction créée |
| pending | En attente de traitement |
| succeeded | Paiement réussi |
| failed | Paiement échoué |
| canceled | Transaction annulée |
Codes de réponse HTTP
Référence des codes de statut HTTP utilisés par l'API
| Code | Description |
|---|---|
| 200 OK | Requête traitée avec succès |
| 201 Created | Ressource créée avec succès |
| 400 Bad Request | Requête mal formée ou paramètres invalides |
| 401 Unauthorized | Jeton d'authentification manquant ou invalide |
| 403 Forbidden | Accès refusé |
| 404 Not Found | Ressource non trouvée |
| 429 Too Many Requests | Limite de requêtes dépassée |
| 500 Internal Server Error | Erreur interne du serveur |