Vérification OTP
Certains opérateurs Mobile Money exigent une confirmation USSD avant de valider une collecte. Découvrez comment gérer ce flux dans votre intégration.
Qu'est-ce que la vérification OTP ?
Confirmation manuelle par l'abonné
Certains opérateurs (Orange CI, Orange BF, Orange SN…) exigent que le payeur confirme la transaction de son côté avant que le débit ait lieu. Cela protège l'abonné contre toute initiation non autorisée.
Un code USSD à composer
L'abonné compose un code USSD sur son téléphone (ex : *144*4*4#). L'opérateur lui retourne un code OTP temporaire valable quelques minutes qu'il saisit dans votre application.
Processus étape par étape
- 1
Interroger GET /operators
Récupérez la liste des opérateurs. Chaque opérateur expose un champ otp_required (booléen) et ussd_code (le code USSD à composer).
- 2
Vérifier otp_required
Si l'opérateur choisi a otp_required: true, passez aux étapes suivantes. Sinon, appelez directement POST /collections sans otp_code.
- 3
Afficher le code USSD au client
Indiquez à l'utilisateur le code USSD à composer (champ ussd_code de l'opérateur). Exemple : « Composez *144*4*4# sur votre téléphone pour recevoir votre OTP Orange. »
- 4
L'utilisateur compose le USSD et reçoit un OTP
L'opérateur mobile envoie une session USSD à l'abonné. L'abonné reçoit un code temporaire valable quelques minutes.
- 5
Collecter l'OTP dans votre interface
Proposez un champ de saisie à l'utilisateur pour qu'il entre le code reçu.
- 6
Appeler POST /collections avec otp_code
Incluez le code saisi dans le champ otp_code de la requête. La transaction sera validée immédiatement.
Opérateurs nécessitant un OTP
Cette liste est chargée en temps réel depuis GET /operators et filtrée sur les opérateurs dont otp_required est true.
| Pays | Opérateur | Slug | Code USSD |
|---|---|---|---|
Intégration dans POST /collections
Exemple complet : vérification de l'opérateur puis initiation de la collecte avec le champ otp_code.
# 1. Vérifier si l'opérateur nécessite un OTP
curl -X GET "https://newapi.sebpay.bj/api/v1/operators?country=CI" \
-H "X-Public-Key: pk_live_your_key" \
-H "X-Secret-Key: sk_live_your_secret"
# → Si otp_required: true, afficher le ussd_code à l'utilisateur
# 2. Initier la collecte avec l'OTP saisi par l'utilisateur
curl -X POST https://newapi.sebpay.bj/api/v1/collections \
-H "X-Public-Key: pk_live_your_key" \
-H "X-Secret-Key: sk_live_your_secret" \
-H "Content-Type: application/json" \
-d '{
"amount": 5000,
"currency": "XOF",
"phone": "2250700000000",
"operator": "orange",
"country": "CI",
"external_reference": "ORDER-001",
"otp_code": "123456"
}'OTP obligatoire pour ces opérateurs
Si vous ne fournissez pas otp_code pour un opérateur qui l'exige, la transaction sera immédiatement rejetée par l'opérateur.
Vérification automatique via GET /operators
Ne codez pas en dur la liste des opérateurs OTP — elle peut évoluer. Interrogez toujours GET /operators au moment de la sélection d'opérateur et lisez dynamiquement otp_required et ussd_code.