Aller au contenu

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

PaysOpérateurIdentifiant
🇸🇳 SénégalWavesn_wave
🇸🇳 SénégalOrange Moneysn_orange
🇨🇮 Côte d’IvoireWaveci_wave
🇨🇮 Côte d’IvoireOrange Money (code OTP du client)ci_orange
🇨🇮 Côte d’IvoireMTN Mobile Moneyci_mtn
🇨🇮 Côte d’IvoireMoov Moneyci_moov
🇧🇫 Burkina FasoOrange Moneybf_orange
🇧🇫 Burkina FasoWavebf_wave
🇧🇫 Burkina FasoMoov Moneybf_moov
🇹🇬 TogoMoov Moneytg_moov
🇹🇬 TogoTogoceltg_togocell
🇧🇯 BéninMoov Moneybj_moov
🇧🇯 BéninMTN Mobile Moneybj_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.

Terminal
curl "$API_URL/v1/rails" -H "Authorization: Bearer $API_KEY"
200 · application/json (extrait)
{
  "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 :

Terminal
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

Terminal
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.