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

    Collecter l'OTP dans votre interface

    Proposez un champ de saisie à l'utilisateur pour qu'il entre le code reçu.

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

PaysOpérateurSlugCode 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.