API B2B Mobile Money

Intégrez les services Mobile Money dans vos applications. Initiez des transactions, gérez les partenaires et suivez les quotas avec une interface sécurisée et complète.

Documentation Swagger

Base URL: http://localhost:3020/api/b2b/v1

Fonctionnalités Principales

Initiation de Transactions

Initiez des transactions Mobile Money (dépôts, retraits, crédits d'unités, paiements) via une API REST sécurisée.

Gestion des Partenaires

Créez et gérez vos partenaires avec un système complet de CRUD, quotas journaliers et mensuels.

Système de Quotas

Contrôlez les limites journalières et mensuelles par partenaire pour une gestion optimale des transactions.

Callbacks Automatiques

Recevez des notifications automatiques avec système de retry pour garantir la livraison des statuts de transaction.

Logging Complet

Traçabilité complète de toutes les requêtes API et callbacks avec historique détaillé pour le debugging.

Rate Limiting

Protection contre les abus avec limitation du nombre de requêtes par minute pour garantir la stabilité.

Services Disponibles

Dépôts

Dépôts sur comptes Mobile Money

CI_DEPOSIT_OM
CI_DEPOSIT_MTN
CI_DEPOSIT_MOOV
CI_DEPOSIT_WAVE

Retraits

Retraits depuis comptes Mobile Money

CI_WITHDRAWAL_OM
CI_WITHDRAWAL_MTN
CI_WITHDRAWAL_MOOV
CI_WITHDRAWAL_WAVE

Crédit d'Unités

Recharge de crédit téléphonique

CI_UNIT_CREDIT_OM
CI_UNIT_CREDIT_MTN
CI_UNIT_CREDIT_MOOV

Paiements

Paiements via QR Code

CI_PM_OM
CI_PM_WAVE

Flux de Transaction

1

Initiation

Le partenaire appelle l'endpoint /initiationTransaction avec les credentials et les détails de la transaction.

2

Authentification

Vérification des credentials via PartnerAuthGuard et validation des quotas journaliers/mensuels.

3

Création

Création de la transaction avec statut PENDING et génération d'un tokenTX unique pour le suivi.

4

Traitement

Traitement en arrière-plan avec mise à jour du statut (COMPLETED/FAILED) selon le résultat.

5

Callback

Envoi automatique du callback au partenaire avec retry en cas d'échec et mise à jour des quotas.

Sécurité & Authentification

Authentification

Authentification par credentials (loginApi/mdpApi) avec hashage bcrypt pour sécuriser les accès.

Rate Limiting

Limitation à 100 requêtes par minute pour protéger contre les abus et garantir la stabilité du système.

Validation

Validation complète des entrées avec class-validator et transformation automatique des données.

Helmet

Headers de sécurité configurés avec Helmet pour protéger contre les vulnérabilités courantes.

CORS

Configuration CORS flexible pour autoriser les requêtes depuis vos domaines autorisés.

Logging

Traçabilité complète de toutes les requêtes API et callbacks pour audit et debugging.

Pourquoi Nous Choisir ?

100%

Sécurisé

Authentification et validation complètes

<2s

Rapide

Traitement en temps réel

4

Opérateurs

OM, MTN, Moov, Wave

24/7

Disponible

API accessible à tout moment

Démarrage Rapide

1. Créer un Partenaire

Créez un partenaire via l'endpoint POST /partners avec les credentials et les quotas.

2. Authentification

Utilisez les credentials (loginApi/mdpApi) dans le corps de la requête pour authentifier vos transactions.

3. Initier une Transaction

Appelez POST /initiationTransaction avec les détails de la transaction et recevez un tokenTX unique.

4. Recevoir le Callback

Recevez automatiquement le statut de la transaction via callback sur votre URL configurée.

Référence API

POST

Initier une transaction

/api/b2b/v1/initiationTransaction

Initie une nouvelle transaction Mobile Money avec authentification du partenaire.

Requête (Body)

{
  "loginApi": "string",
  "mdpApi": "string",
  "transaction": {
    "montant": "number",
    "codeService": "string",
    "numeroBeneficiaire": "string",
    "idPartenaire": "string"
  }
}

Réponse

{
  "success": true,
  "tokenTX": "string",
  "message": "string",
  "data": {
    "transactionId": "string",
    "status": "pending"
  }
}
POST

Créer un partenaire

/api/b2b/v1/partners

Crée un nouveau partenaire avec ses identifiants et ses quotas.

Requête (Body)

{
  "name": "string",
  "email": "string",
  "phone": "string",
  "loginApi": "string",
  "mdpApi": "string",
  "callbackUrl": "string",
  "allowedServices": ["string"],
  "dailyLimit": "number",
  "monthlyLimit": "number",
  "maxTransactionAmount": "number",
  "status": "active | inactive"
}

Réponse

{
  "success": true,
  "message": "string",
  "data": {
    "id": "string",
    "name": "string",
    "email": "string",
    "phone": "string",
    "loginApi": "string",
    "status": "active",
    "createdAt": "date"
  }
}
GET

Obtenir tous les partenaires

/api/b2b/v1/partners

Récupère la liste complète de tous les partenaires enregistrés.

Requête

Aucun paramètre requis

Réponse

{
  "success": true,
  "data": [
    {
      "id": "string",
      "name": "string",
      "email": "string",
      "status": "active",
      "dailyLimit": "number",
      "monthlyLimit": "number"
    }
  ],
  "total": "number"
}
GET

Obtenir un partenaire

/api/b2b/v1/partners/:id

Récupère les détails complets d'un partenaire spécifique.

Paramètres

URL Parameter:

id: string (Partner ID)

Réponse

{
  "success": true,
  "data": {
    "id": "string",
    "name": "string",
    "email": "string",
    "phone": "string",
    "loginApi": "string",
    "callbackUrl": "string",
    "allowedServices": ["string"],
    "dailyLimit": "number",
    "monthlyLimit": "number",
    "currentDailyUsage": "number",
    "currentMonthlyUsage": "number",
    "status": "active"
  }
}
PATCH

Mettre à jour un partenaire

/api/b2b/v1/partners/:id

Met à jour les informations d'un partenaire existant.

Requête (Body)

{
  "name": "string",
  "email": "string",
  "phone": "string",
  "callbackUrl": "string",
  "dailyLimit": "number",
  "monthlyLimit": "number",
  "maxTransactionAmount": "number",
  "status": "active | inactive"
}
// Tous les champs sont optionnels

Réponse

{
  "success": true,
  "message": "Partner updated successfully",
  "data": {
    "id": "string",
    "name": "string",
    "email": "string",
    "status": "active",
    "updatedAt": "date"
  }
}
DELETE

Supprimer un partenaire

/api/b2b/v1/partners/:id

Supprime définitivement un partenaire du système.

Paramètres

URL Parameter:

id: string (Partner ID)

Réponse

{
  "success": true,
  "message": "Partner deleted successfully"
}

Exemples d'Intégration

Endpoints

POST Initier une transaction
/initiationTransaction
POST Créer un partenaire
/partners
GET Liste partenaires
/partners
GET Détail partenaire
/partners/:id
PATCH Modifier partenaire
/partners/:id
DELETE Supprimer
/partners/:id

Questions Fréquentes

Comment créer un partenaire ?

Utilisez l'endpoint POST /partners avec les informations du partenaire (nom, email, téléphone, credentials, quotas, etc.).

Comment fonctionne l'authentification ?

L'authentification se fait via les credentials loginApi et mdpApi fournis dans le corps de la requête pour l'endpoint d'initiation de transaction.

Qu'est-ce qu'un tokenTX ?

Le tokenTX est un identifiant unique retourné lors de l'initiation d'une transaction. Il permet de suivre le statut de la transaction et sera inclus dans le callback.

Comment fonctionnent les callbacks ?

Une fois la transaction traitée, un callback est automatiquement envoyé à l'URL configurée dans le profil du partenaire. En cas d'échec, le système effectue jusqu'à 4 tentatives avec délai exponentiel.

Quels sont les codes service disponibles ?

Les codes service incluent les dépôts (CI_DEPOSIT_*), retraits (CI_WITHDRAWAL_*), crédits d'unités (CI_UNIT_CREDIT_*) et paiements (CI_PM_*) pour Orange Money, MTN, Moov et Wave.

Comment gérer les quotas ?

Les quotas journaliers et mensuels sont configurés lors de la création du partenaire. Le système vérifie automatiquement ces limites avant chaque transaction et les met à jour après traitement.