FreeGate Docs

Traiter nextAction

Ce qu'il faut faire pour chaque type de nextAction après un payin.

Quand vous créez un payin (POST /v1/payins), la réponse contient un objet nextAction. Il vous dit quoi faire ensuite. Votre travail : lire nextAction.type et réagir.

{
  "transactionId": "txn_payin_...",
  "status": "PENDING",
  "nextAction": { "type": "NONE", "url": null }
}

Il existe cinq types. Voici le tableau de décision.

nextAction.typeCe que vous faites
NONERien. Attendez le webhook ou interrogez le statut.
REDIRECTEnvoyez le payeur vers nextAction.url.
OTP_REQUIREDDemandez l'OTP au payeur, puis appelez execute.
USSD_REQUIREDAffichez la consigne USSD. Puis attendez.
LOCAL_CONFIRMATIONDemandez au payeur de confirmer sur son téléphone. Puis attendez.

NONE

Il n'y a rien à faire. Le paiement suit son cours.

Attendez le webhook payment.payin.succeeded ou payment.payin.failed. Vous pouvez aussi lire le statut avec GET /v1/transactions/{transactionId}.

REDIRECT

Le payeur doit ouvrir une page pour finir le paiement. L'URL est dans nextAction.url.

  1. Redirigez le payeur vers nextAction.url.
  2. Le payeur termine le paiement sur cette page.
  3. Attendez le webhook ou lisez le statut.

nextAction.url est une page hébergée par FreeGate. Ce n'est jamais un lien direct vers l'opérateur.

OTP_REQUIRED

Le payeur reçoit un code par SMS (l'OTP). Vous devez récupérer ce code et l'envoyer à FreeGate.

Le code part dans le corps de la requête de POST /v1/payins/{transactionId}/execute. Le champ s'appelle otpCode.

curl -X POST "$BASE_URL/v1/payins/$TRANSACTION_ID/execute" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "otpCode": "123456"
  }'

La réponse renvoie un nouveau status et un nouveau nextAction. Répétez tant que nextAction.type n'est pas NONE et que le status n'est pas terminal (SUCCESS ou FAILED).

En sandbox, utilisez un numéro qui se termine par 005 avec l'OTP 123456 pour un succès, ou 006 pour un échec d'OTP.

USSD_REQUIRED

Le payeur confirme le paiement avec un code USSD sur son téléphone.

  1. Affichez la consigne (par exemple : « Composez le code reçu pour confirmer »).
  2. Le payeur confirme sur son téléphone.
  3. Attendez le webhook ou lisez le statut.

LOCAL_CONFIRMATION

Le payeur confirme dans l'application mobile de son opérateur.

  1. Affichez la consigne (par exemple : « Ouvrez votre application et confirmez »).
  2. Le payeur confirme.
  3. Attendez le webhook ou lisez le statut.

Le flux, en une image

POST /v1/payins  ──►  lire nextAction.type

   ┌─────────────┬───────┼───────────┬──────────────────┐
 NONE        REDIRECT  OTP_REQUIRED  USSD_REQUIRED   LOCAL_CONFIRMATION
   │             │          │            │                  │
 attendre    rediriger   execute      afficher           afficher
             vers url    (otpCode)    la consigne        la consigne
                            │            │                  │
                            └────────────┴──────────────────┘

                             attendre le webhook
                              ou lire le statut

Gérez tous les types que vos opérateurs peuvent renvoyer. Un opérateur peut utiliser OTP_REQUIRED, un autre REDIRECT : le type dépend de l'opérateur, pas du montant.

Sur cette page