Gestion des Paiements

Vue d'ensemble

Cette section présente l'API de traitement des paiements, qui gère l'exécution effective des transactions financières. Elle constitue le cœur opérationnel du système de paiement, orchestrant les sessions de paiement et leur exécution sécurisée.

Fonctionnalités couvertes

Notre API de paiements offre un système complet d'exécution des transactions :

Préparation des sessions

  • Initialisation des sessions de paiement pour des ordres spécifiques
  • Configuration des méthodes de paiement (Orange Money, MTN Money, etc.)
  • Gestion des informations client (nom, email, adresse, téléphone)
  • Paramétrage des timeouts et configurations OTP

Exécution sécurisée

  • Traitement des paiements avec validation OTP
  • Support des modes réel et test pour les environnements de développement
  • Gestion des tentatives et limitation des échecs
  • Redirection automatique selon le statut de transaction

Gestion des sessions

  • Suivi en temps réel des sessions actives
  • Configuration des codes USSD manuels
  • Gestion des timeouts de session et OTP
  • Récupération d'état des sessions par slug d'ordre

Workflow de paiement

Le processus suit un workflow en deux étapes critiques :

  1. Préparation (POST /api/v1/payment/prepare) :

    • Validation de l'ordre et du montant
    • Initialisation de la session avec le fournisseur de paiement
    • Génération des paramètres OTP et timeouts
  2. Exécution (POST /api/v1/payment/execute/{real}) :

    • Validation du code OTP client
    • Traitement de la transaction auprès du fournisseur
    • Confirmation et redirection selon le résultat

Cette architecture garantit la sécurité et la traçabilité de chaque transaction tout en offrant une expérience utilisateur fluide.

| Action | Endpoint | |---|---| | POST | /api/v1/payment/prepare | | POST | /api/v1/payment/execute/{real}|

Préparation d'une session de paiement

Endpoint: POST /api/v1/payment/prepare

Prépare une session de paiement pour une commande spécifique.

Corps de la Requête

{
  "orderSlug": "commande-123",
  "paymentMethod": "ORANGE_MONEY",
  "phoneNumber": {
    "indicator": "+225",
    "telephone": "0701020304"
  },
  "amount": 5000,
  "paymentInformation": {
    "firstname": "Jean",
    "lastname": "Dupont",
    "email": "jean.dupont@example.com",
    "address": "Abidjan, Côte d'Ivoire",
    "metaData": "Client régulier"
  }
}

Réponse

{
  "message": "OK",
  "body": {
    "otpTimeout": 300,
    "otpManualGenerationRequired": false,
    "otpManualUSSDCode": "*123#",
    "sessionId": "session-xyz",
    "sessionTimeout": 600
  }
}

Exécution d'un paiement

Endpoint: POST /api/v1/payment/execute/{real}

Exécute un paiement avec le code OTP reçu par l'utilisateur.

Paramètre de chemin

  • real: booléen indiquant si le paiement est réel (true) ou en mode test (false).

Corps de la Requête

{
  "orderSlug": "commande-123",
  "otp": "123456"
}

Réponse

{
  "message": "OK",
  "body": {
    "transactionId": "txn-456",
    "successRedirectURL": "https://marchand.com/succes",
    "failureRedirectURL": "https://marchand.com/echec",
    "status": "SUCCESS",
    "remainingRetries": 0
  }
}

Récupération d'une session de paiement par slug

Endpoint: GET /api/v1/payment/session/by-slug/{orderSlug}

Récupère les informations d'une session de paiement en utilisant le slug de la commande.

Paramètre de chemin

  • orderSlug: identifiant unique de la commande
{
  "message": "OK",
  "body": {
    "otpTimeout": 300,
    "otpManualGenerationRequired": true,
    "otpManualUSSDCode": "*123#",
    "sessionId": "session-abc",
    "sessionTimeout": 600
  }
}

Réponse

{
  "message": "OK",
  "body": {
    "otpTimeout": 300,
    "otpManualGenerationRequired": true,
    "otpManualUSSDCode": "*123#",
    "sessionId": "session-abc",
    "sessionTimeout": 600
  }
}