processing: flux de prompt USSD ou STKredirect: flux de finalisation hébergé par le providerbankTransfer: le client doit faire un virement vers les détails de compte renvoyéspre-otp: code client requis avant la requete
1) Flux processing, prompt USSD ou STK
Le client reçoit une demande d’autorisation sur son appareil mobile et confirme avec son PIN.Ce qui se passe
- Vous initiez le direct charge.
- Le provider envoie un STK push ou un prompt USSD au client.
- Le client autorise sur son appareil.
- La transaction reste en attente jusqu’à la réponse finale du provider.
Comment le détecter
data.action vaut processing.
Traitement côté marchand
- Affichez un état en attente au client.
- Ne livrez pas sur la reponse initiale.
- Attendez le webhook ou vérifiez par référence.
2) Flux redirect
Le provider renvoie un lien ; le client doit terminer le paiement sur la page ou l’application du provider.Ce qui se passe
- Vous initiez le direct charge.
- L’API répond avec une URL de redirection.
- Le client finalise le paiement sur le canal du provider.
- Le client peut ensuite revenir vers votre application ou votre site.
Comment le détecter
data.action vaut redirect et l’URL se trouve généralement dans data.data.link.
Traitement côté marchand
- Redirigez l’utilisateur vers
data.data.link. - Au retour, vérifiez toujours le statut final côté serveur.
- Ne marquez jamais le paiement comme réussi uniquement sur la redirection.
3) Flux bank transfer
Payfonte renvoie les détails d’un compte bancaire ; le client doit effectuer un virement bancaire pour finaliser le paiement.Ce qui se passe
- Vous initiez le direct charge avec un provider bank transfer.
- L’API répond avec les détails du compte pour le paiement client.
- Vous affichez les détails du compte au client.
- Le client envoie le virement depuis son application bancaire ou son canal bancaire.
- La transaction reste en attente jusqu’à la confirmation du provider.
Comment le détecter
data.action vaut bankTransfer. Les détails de compte sont renvoyés dans data.data.
Traitement côté marchand
- Affichez clairement les détails de compte renvoyés au client.
- Incluez le nom de la banque, le numero de compte, le nom du compte, le montant, la reference et l’expiration quand ils sont presents.
- Gardez le paiement en attente jusqu’à confirmation du statut final par webhook ou vérification.
- Ne livrez pas uniquement sur la base d’une preuve de virement.
4) Flux pre-OTP
Certains providers demandent au client de générer un code provider ou OTP avant l’envoi de la requête de débit.Ce qui se passe
- Le client génère un code via l’USSD du provider.
- Le client partage ce code avec le marchand.
- Le marchand envoie
customerInput.customerCode. - Le provider traite le debit.
Codes USSD fréquents
- Orange Ivory Coast :
#144*82# - Orange Senegal :
#144#391# - Orange Burkina Faso :
*144*4*6*Amount*PIN# - Orange Mali :
#144#37#
Exemple de requête
Traitement côté marchand
- Collectez explicitement l’OTP ou le code client.
- Validez son format avant l’appel API.
- Continuez ensuite avec le flux normal de finalisation via webhook ou vérification.
Résumé de décision des flux
| Action | Etape suivante pour le client | Etape suivante pour le marchand |
|---|---|---|
processing | Approuver sur l’appareil, USSD ou STK | Attendre le webhook ou la vérification |
redirect | Finaliser le paiement sur la page provider | Rediriger puis attendre le webhook ou la vérification |
bankTransfer | Virer le montant vers les détails de compte renvoyés | Afficher les détails de compte puis attendre le webhook ou la vérification |
Mode de requête pre-otp | Générer et partager le code d’abord | Envoyer le code dans customerInput.customerCode |
Règles importantes
Voir Spécification des montants.Documentation associée
API Direct Charge
Utilisation des endpoints et définition des champs de requête.
Exemples de payloads
Modèles de payloads spécifiques aux providers.
Webhooks
Confirmez le resultat final de la transaction de maniere asynchrone.