Comment intégrer Orange Money dans votre application en 2026
Orange Money est le portefeuille mobile le plus utilisé en Afrique Centrale et de l'Ouest. Avec plus de 30 millions d'utilisateurs actifs au Cameroun, au Sénégal et en Côte d'Ivoire, l'intégration d'Orange Money est devenue incontournable pour tout business digital.
Pourquoi intégrer Orange Money ?
Le marché du Mobile Money en chiffres
- 70% des transactions digitales en Afrique passent par le Mobile Money
- +40% de croissance annuelle du volume de transactions
- 85% des adultes au Cameroun possèdent un compte Mobile Money
- Orange Money représente 45% de parts de marché en zone CEMAC
Les avantages pour votre business
- Accessibilité - Touchez des millions de clients sans carte bancaire
- Confiance - Orange est une marque connue et respectée
- Instantanéité - Paiements confirmés en quelques secondes
- Faibles coûts - Commissions inférieures aux cartes bancaires
Les options d'intégration
Option 1 : Intégration directe avec Orange
Avantages :- Relation directe avec l'opérateur
- Processus long (3-6 mois de négociation)
- Documentation technique limitée
- Support développeur minimal
- Une intégration par pays
Option 2 : Utiliser un agrégateur comme Simiz
Avantages :- Intégration en quelques heures
- Une seule API pour Orange Money + MTN MoMo
- Documentation complète et SDKs
- Support technique réactif
- Multi-pays avec un seul contrat
- Commission légèrement plus élevée (compensée par le gain de temps)
Guide d'intégration avec Simiz
Étape 1 : Créer votre compte
- Rendez-vous sur simiz.io/register
- Remplissez le formulaire d'inscription
- Vérifiez votre email
- Complétez la vérification KYB (documents d'entreprise)
Étape 2 : Obtenir vos clés API
Une fois votre compte vérifié :
- Accédez à votre Dashboard
- Créez un nouveau projet
- Générez vos clés API (Sandbox puis Production)
Clés Sandbox pour les tests
SIMIZ_API_KEY=smz_test_pk_xxxxx
SIMIZ_SECRET_KEY=smz_test_sk_xxxxx
Clés Production (après validation)
SIMIZ_API_KEY=smz_live_pk_xxxxx
SIMIZ_SECRET_KEY=smz_live_sk_xxxxx
Étape 3 : Installer le SDK
Node.js / JavaScriptnpm install @simiz/sdk
PHP
composer require simiz/simiz-php
Python
pip install simiz
Étape 4 : Initier un paiement Orange Money
import { Simiz } from '@simiz/sdk';
// Initialisation
const simiz = new Simiz({
apiKey: process.env.SIMIZ_API_KEY,
secretKey: process.env.SIMIZ_SECRET_KEY,
sandbox: true // false en production
});
// Créer un paiement
async function createOrangeMoneyPayment() {
const payment = await simiz.payments.create({
amount: 5000, // Montant en FCFA
currency: 'XAF',
phone: '+237691234567', // Numéro Orange Money du client
provider: 'orange_money',
description: 'Achat sur MonSite.com',
reference: 'CMD-2026-001',
callbackUrl: 'https://monsite.com/webhook',
returnUrl: 'https://monsite.com/success',
metadata: {
orderId: '12345',
customerId: 'CUST-001'
}
});
console.log('Paiement créé:', payment.id);
console.log('Statut:', payment.status); // 'pending'
return payment;
}
Étape 5 : Gérer la confirmation
Après l'initiation, le client reçoit une notification USSD ou Push sur son téléphone. Il doit entrer son code PIN pour confirmer.
Configuration du webhook :// Express.js
app.post('/webhook', async (req, res) => {
// Vérifier la signature
const signature = req.headers['x-simiz-signature'];
const isValid = simiz.webhooks.verify(req.body, signature);
if (!isValid) {
return res.status(401).json({ error: 'Signature invalide' });
}
const event = req.body;
switch (event.type) {
case 'payment.success':
// Paiement confirmé - livrer le produit/service
await fulfillOrder(event.data.reference);
break;
case 'payment.failed':
// Paiement échoué - notifier le client
await notifyPaymentFailed(event.data);
break;
case 'payment.expired':
// Timeout - proposer de réessayer
await handleExpiredPayment(event.data);
break;
}
res.json({ received: true });
});
Codes d'erreur courants
| Code | Description | Solution |
|---|
insufficient_balance | Solde Orange Money insuffisant | Informer le client de recharger |
|---|---|---|
invalid_phone | Numéro non Orange Money | Vérifier le préfixe (69x, 65x) |
transaction_limit | Plafond journalier atteint | Reporter au lendemain |
service_unavailable | Orange Money temporairement indisponible | Réessayer plus tard |
pin_error | Code PIN incorrect (3 tentatives max) | Contact support Orange |
Bonnes pratiques
1. Validation du numéro
Vérifiez que le numéro est bien un numéro Orange Money avant d'initier le paiement :
function isOrangeMoneyNumber(phone) {
// Préfixes Orange au Cameroun
const orangePrefixes = ['237691', '237692', '237693', '237694', '237695', '237696', '237697', '237698', '237699', '237651', '237652', '237653', '237654', '237655', '237656', '237657', '237658', '237659'];
const cleanPhone = phone.replace(/[^0-9]/g, '');
return orangePrefixes.some(prefix => cleanPhone.startsWith(prefix));
}
2. Gestion des timeouts
Les paiements Orange Money expirent après 15 minutes. Implémentez un système de relance :
// Vérification périodique du statut
async function checkPaymentStatus(paymentId, maxAttempts = 10) {
for (let i = 0; i < maxAttempts; i++) {
const payment = await simiz.payments.retrieve(paymentId);
if (payment.status === 'success') {
return { success: true, payment };
}
if (['failed', 'expired', 'cancelled'].includes(payment.status)) {
return { success: false, payment };
}
// Attendre 30 secondes avant la prochaine vérification
await new Promise(resolve => setTimeout(resolve, 30000));
}
return { success: false, timeout: true };
}
3. Idempotence
Évitez les doubles paiements avec une clé d'idempotence :
const payment = await simiz.payments.create({
amount: 5000,
// ... autres paramètres
}, {
idempotencyKey: order-${orderId}-attempt-${attemptNumber}
});
Tests en Sandbox
Le mode Sandbox permet de tester sans frais réels :
Numéros de test :| Numéro | Comportement |
|---|
| +237690000001 | Paiement réussi |
|---|---|
| +237690000002 | Solde insuffisant |
| +237690000003 | Timeout |
| +237690000004 | Refusé par l'utilisateur |
Passage en production
Checklist avant le lancement :
- [ ] Tests Sandbox complets
- [ ] Webhooks configurés et testés
- [ ] Gestion des erreurs implémentée
- [ ] Emails de confirmation configurés
- [ ] Logs de transactions activés
- [ ] Clés Production générées
- [ ] Variable
sandbox: false
Conclusion
L'intégration d'Orange Money avec Simiz prend quelques heures au lieu de plusieurs mois. Notre API unifiée vous permet d'accepter Orange Money et MTN MoMo avec le même code.
Prêt à commencer ? Créez votre compte gratuit et recevez vos premiers paiements Orange Money aujourd'hui.Besoin d'aide ? Notre équipe technique est disponible à developer@simiz.io