Moyens de paiement et pays
Les 13 moyens de paiement mobile money, leurs identifiants, leur activation par projet et le code OTP Orange Money Côte d’Ivoire.
Un moyen de paiement est un opérateur mobile money dans un pays. Son
identifiant se passe dans rail à la création d’un paiement, d’un numéro de
retrait ou d’un devis. Tous les moyens de paiement encaissent en XOF.
Table des moyens de paiement
| Pays | Opérateur | Identifiant |
|---|---|---|
| 🇸🇳 Sénégal | Wave | sn_wave |
| 🇸🇳 Sénégal | Orange Money | sn_orange |
| 🇨🇮 Côte d’Ivoire | Wave | ci_wave |
| 🇨🇮 Côte d’Ivoire | Orange Money (code OTP du client) | ci_orange |
| 🇨🇮 Côte d’Ivoire | MTN Mobile Money | ci_mtn |
| 🇨🇮 Côte d’Ivoire | Moov Money | ci_moov |
| 🇧🇫 Burkina Faso | Orange Money | bf_orange |
| 🇧🇫 Burkina Faso | Wave | bf_wave |
| 🇧🇫 Burkina Faso | Moov Money | bf_moov |
| 🇹🇬 Togo | Moov Money | tg_moov |
| 🇹🇬 Togo | Togocel | tg_togocell |
| 🇧🇯 Bénin | Moov Money | bj_moov |
| 🇧🇯 Bénin | MTN Mobile Money | bj_mtn |
Lire la liste : GET /v1/rails
Route publique. Avec une clé, la réponse indique aussi les moyens de paiement activés sur le projet.
curl "$API_URL/v1/rails" -H "Authorization: Bearer $API_KEY"{
"currency": "XOF",
"data": [
{
"rail": "sn_wave",
"country": "SN",
"country_label": "Sénégal",
"operator": "wave",
"operator_label": "Wave",
"label": "Wave",
"otp_required": false,
"min_amount": "100",
"platform_state": "open",
"enabled_for_project": true,
"fees": {
"collection_bps": 200,
"withdrawal_bps": 200,
"refund_bps": 200,
"example_10000": { "amount": "10000", "collection_fee": "200", "withdrawal_fee": "200", "refund_fee": "200" }
}
}
]
}Les taux réels figurent dans fees : voir Frais.
Activer un moyen de paiement sur un projet
Un projet encaisse sur un moyen de paiement quand enabled_for_project vaut
true et platform_state vaut open. Un nouveau projet a sn_wave et
sn_orange activés. Un administrateur active ou désactive les autres :
curl -X PUT "$API_URL/v1/rails/ci_wave/enabled" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"enabled": true}'Chaque changement est journalisé. Un paiement sur un moyen de paiement non
activé renvoie 503 CHANNEL_UNAVAILABLE.
Règles communes
- Devise : XOF uniquement.
- Montant : chaîne de chiffres en XOF entiers, au moins
min_amount. customer_phone: numéro mobile du pays du moyen de paiement, au format local ou E.164.- Chaque moyen de paiement a son propre solde. Voir Soldes.
Étape client : next_action
Selon l’opérateur, le client valide le paiement par une redirection, un code
QR ou une instruction sur son téléphone. La réponse de création indique
l’étape dans next_action. Le traitement de chaque type est décrit dans
Paiements, section « Action client ».
Code OTP Orange Money Côte d’Ivoire
Sur ci_orange, le client autorise le paiement par un code à usage unique
(OTP) généré depuis son compte Orange Money. Le code accompagne la création du
paiement.
Le client génère son code
Le client compose #144*82# sur son téléphone Orange Côte d’Ivoire et suit
les instructions : Orange Money affiche un code à usage unique.
La page de commande recueille le numéro et le code
Deux champs : numéro mobile du client et code OTP (4 à 8 chiffres). Afficher
la marche à suivre (#144*82#) à côté du champ, avec la consigne : « Saisir
le code immédiatement après réception. »
Le serveur crée le paiement avec customer_otp
curl -X POST "$API_URL/v1/payments" \
-H "Authorization: Bearer $API_KEY" \
-H "Idempotency-Key: commande-2077" \
-H "Content-Type: application/json" \
-d '{
"amount": "2500",
"currency": "XOF",
"rail": "ci_orange",
"merchant_reference": "commande-2077",
"return_url": "https://boutique.example/paiement/retour",
"customer_phone": "+2250701020304",
"customer_otp": "123456"
}'Code à usage unique
Côté serveur, transmettez customer_otp pour ce paiement uniquement. Ne
stockez pas le code et ne l’écrivez pas dans vos journaux. 221 Pay ne le
conserve pas non plus.