Documentation API

Intégrez IZIflow Africa à votre application en quelques minutes. Notre API REST moderne vous permet d'accepter tous les moyens de paiement africains avec une seule intégration.

Introduction

L'API IZIflow Africa vous permet d'accepter des paiements de vos clients à travers toute l'Afrique. Nous supportons les paiements Mobile Money (Orange Money, MTN Money, Moov Money, Wave, etc.), les cartes bancaires, et les portefeuilles électroniques.

💡
URL de base de l'API
Production: https://api.IZIflow/v1
Sandbox: https://sandbox.api.IZIflow/v1

Démarrage rapide

Voici un exemple simple pour créer un paiement:

curl -X POST https://api.IZIflow/v1/payments \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "amount": 5000, "currency": "XOF", "method": "orange_money", "phone": "+221701234567", "description": "Achat en ligne" }'

Authentification

Toutes les requêtes API doivent être authentifiées avec votre clé API. Vous pouvez obtenir votre clé API depuis votre tableau de bord après inscription.

⚠️
Sécurité de la clé API
Ne partagez jamais votre clé API et ne l'incluez pas dans du code côté client. Conservez-la de manière sécurisée côté serveur.

Incluez votre clé API dans l'en-tête Authorization de chaque requête:

Authorization: Bearer YOUR_API_KEY

Moyens de paiement supportés

IZIflow Africa supporte une large gamme de moyens de paiement à travers l'Afrique. Voici les principaux services disponibles:

Orange Money
orange_money
MTN Money
mtn_money
Moov Money
moov_money
Wave
wave
Free Money
free_money
Airtel Money
airtel_money
Carte Visa/Mastercard
card
PayPal
paypal

Paiement par carte de crédit (Canada)

Acceptez les paiements par carte Visa, Mastercard et Amex au Canada via Moneris.

POST
/v1/payments/card

Paramètres

Paramètre Type Requis Description
amount number Oui Montant en dollars (ex: 100.50)
currency string Oui CAD (Dollar canadien)
credit_card string Oui Numéro de carte (13-19 chiffres)
expiry_month string Oui Mois d'expiration (MM)
expiry_year string Oui Année d'expiration (YY)
cvd string Recommandé Code CVV (3-4 chiffres)
customer_email string Non Email du client
description string Non Description de la transaction

Exemple de requête (PHP)

$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://api.iziflow.com/v1/payments/card'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Authorization: Bearer YOUR_API_KEY', 'Content-Type: application/json', ]); $data = [ 'amount' => 100.50, 'currency' => 'CAD', 'credit_card' => '4242424242424242', 'expiry_month' => '12', 'expiry_year' => '25', 'cvd' => '123', 'customer_email' => '[email protected]', 'description' => 'Achat produit', ]; curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); $response = curl_exec($ch); $result = json_decode($response, true); curl_close($ch); if ($result['success']) { echo "✅ Paiement approuvé : " . $result['data']['authorization']; } else { echo "❌ Paiement refusé"; }

Exemple de requête (cURL)

curl -X POST https://api.iziflow.com/v1/payments/card \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "amount": 100.50, "currency": "CAD", "credit_card": "4242424242424242", "expiry_month": "12", "expiry_year": "25", "cvd": "123", "customer_email": "[email protected]", "description": "Achat produit" }'

Réponse de succès (200)

{ "success": true, "message": "Transaction completed successfully", "data": { "payment_id": "pay_a1b2c3d4e5f6", "transaction": { "number": "123456789", "amount": "100.50", "currency": "CAD" }, "authorization": "AUTH123", "card_type": "Visa", "status": "completed", "created_at": "2024-03-22T10:30:00Z" } }
💡
Cartes de test
En environnement sandbox, utilisez :
• Visa : 4242424242424242
• Mastercard : 5454545454545454
• Amex : 378282246310005
Expiration : N'importe quelle date future (ex: 12/25)
CVD : N'importe quel 3-4 chiffres (ex: 123)
🔒
Sécurité PCI-DSS
Pour respecter les normes PCI-DSS :
• Ne jamais logger les numéros de carte complets
• Toujours utiliser HTTPS
• Valider CVD et AVS quand possible
• Stocker uniquement les 4 derniers chiffres

Documentation technique complète

Pour des exemples avancés et la documentation interactive Swagger, consultez notre documentation Moneris →

Créer un paiement

Pour initier une transaction, envoyez une requête POST au endpoint /payments avec les détails du paiement.

POST
/v1/payments

Paramètres

Paramètre Type Requis Description
amount number Oui Montant en centimes (ex: 5000 = 50.00)
currency string Oui Code devise ISO (XOF, XAF, USD, EUR, etc.)
method string Oui Moyen de paiement (voir liste ci-dessus)
phone string Conditionnel Numéro de téléphone (requis pour Mobile Money)
description string Non Description de la transaction
metadata object Non Données personnalisées (max 16 clés)
callback_url string Non URL de redirection après paiement

Exemple de requête

{ "amount": 5000, "currency": "XOF", "method": "orange_money", "phone": "+221701234567", "description": "Achat produit #12345", "metadata": { "order_id": "ORD-12345", "customer_id": "CUST-789" }, "callback_url": "https://monsite.com/success" }

Réponse de succès (200)

{ "status": "success", "data": { "payment_id": "pay_a1b2c3d4e5f6", "amount": 5000, "currency": "XOF", "status": "pending", "method": "orange_money", "created_at": "2024-02-15T10:30:00Z", "payment_url": "https://pay.IZIflow/p/a1b2c3d4" } }

Vérifier un paiement

Vous pouvez vérifier le statut d'un paiement à tout moment en utilisant son ID.

GET
/v1/payments/{payment_id}

Exemple de réponse

{ "status": "success", "data": { "payment_id": "pay_a1b2c3d4e5f6", "amount": 5000, "currency": "XOF", "status": "completed", "method": "orange_money", "phone": "+221701234567", "created_at": "2024-02-15T10:30:00Z", "completed_at": "2024-02-15T10:31:23Z", "metadata": { "order_id": "ORD-12345" } } }

Statuts possibles

Statut Description
pending Paiement en attente de confirmation
processing Paiement en cours de traitement
completed Paiement complété avec succès
failed Paiement échoué
cancelled Paiement annulé

Webhooks

Les webhooks vous permettent de recevoir des notifications en temps réel lorsqu'un événement se produit sur votre compte IZIflow Africa.

🔔
Configuration des webhooks
Configurez vos URL de webhook depuis votre tableau de bord dans Paramètres → Webhooks.

Événements disponibles

  • payment.created - Un nouveau paiement a été créé
  • payment.completed - Un paiement a été complété
  • payment.failed - Un paiement a échoué
  • payment.cancelled - Un paiement a été annulé
  • refund.created - Un remboursement a été créé

Structure du webhook

{ "event": "payment.completed", "timestamp": "2024-02-15T10:31:23Z", "data": { "payment_id": "pay_a1b2c3d4e5f6", "amount": 5000, "currency": "XOF", "status": "completed" } }
🔒
Vérification de la signature
Vérifiez toujours la signature du webhook en utilisant votre clé secrète pour vous assurer que la requête provient bien de IZIflow Africa.

Gestion des erreurs

L'API utilise des codes HTTP standards pour indiquer le succès ou l'échec d'une requête.

Codes de réponse HTTP

Code Signification Description
200 OK La requête a réussi
400 Bad Request Paramètres invalides ou manquants
401 Unauthorized Clé API invalide ou manquante
404 Not Found Ressource non trouvée
429 Too Many Requests Limite de taux atteinte
500 Internal Server Error Erreur serveur

Format des erreurs

{ "status": "error", "error": { "code": "invalid_request", "message": "Le paramètre 'amount' est requis", "param": "amount" } }

SDKs & Librairies

Nous proposons des SDKs officiels pour faciliter l'intégration dans vos applications.

PHP SDK
composer require IZIflow/php-sdk
Laravel Package
composer require IZIflow/laravel
Node.js SDK
npm install @IZIflow/node
Python SDK
pip install IZIflow

Exemple avec Laravel

use IZIflow\Laravel\Facades\IZIflow; $payment = IZIflow::createPayment([ 'amount' => 5000, 'currency' => 'XOF', 'method' => 'orange_money', 'phone' => '+221701234567', ]); if ($payment->success) { return redirect($payment->payment_url); }