Passer au contenu principal
{
  "transId": "<string>",
  "serviceName": "<string>",
  "amount": 123,
  "revenue": 123,
  "payerName": "<string>",
  "email": "jsmith@example.com",
  "redirectUrl": "<string>",
  "externalId": "<string>",
  "userId": "<string>",
  "webhook": "<string>",
  "reason": "<string>",
  "financialTransId": "<string>",
  "dateInitiated": "2023-12-25",
  "dateConfirmed": "2023-12-25"
}

Documentation Index

Fetch the complete documentation index at: https://docs.fapshi.com/llms.txt

Use this file to discover all available pages before exploring further.

Un webhook est un point de terminaison API mis à disposition des applications externes, qui peut être appelé pour notifier votre application lorsqu’un événement important se produit. Cela permet à votre application de réagir immédiatement à ces événements. Vous pouvez définir une URL de webhook par service dans votre tableau de bord Fapshi. Lorsqu’un webhook est défini, une requête POST sera envoyée à cette URL chaque fois que le statut d’un paiement change en :
  • SUCCESSFUL — lorsqu’un paiement est effectué avec succès
  • FAILED — lorsqu’une tentative de paiement échoue (généralement sur les réseaux MTN Mobile Money ou Orange Money)
  • EXPIRED — lorsqu’un lien de paiement expire après 24 heures sans paiement réussi
Le corps de la requête webhook est identique au corps de la réponse retournée par la requête de statut de paiement.

Comment fonctionnent les webhooks

Schéma de séquence webhook
  1. Paiement initié : Votre application externe initie un paiement en appelant l’un des endpoints de paiement Fapshi (par ex. initiate-pay ou direct-pay).
  2. Paiement traité : Le serveur Fapshi traite la transaction. Cela inclut le flux de paiement, la communication avec les opérateurs et la mise à jour du statut de la transaction.
  3. Webhook envoyé : Lorsque le statut du paiement passe à SUCCESSFUL, FAILED ou EXPIRED, le serveur Fapshi envoie automatiquement une requête POST à votre URL de webhook avec les détails de la transaction mis à jour.
  4. Webhook reçu : Votre application reçoit la notification webhook et peut la traiter (par ex. mettre à jour votre base de données, envoyer des notifications, déclencher d’autres flux).
Votre serveur doit répondre rapidement aux requêtes webhook pour éviter les erreurs de timeout, idéalement avec un code de statut 200. Fapshi n’envoie qu’une seule requête webhook par événement, même si votre serveur ne répond pas.

Sécurité des webhooks

Vous pouvez authentifier l’origine d’une requête webhook en définissant un secret webhook sur le tableau de bord Fapshi. Lorsqu’un secret est configuré, chaque requête webhook inclut un en-tête appelé x-wh-secret dont la valeur est le secret défini sur le tableau de bord. Comparer la valeur de cet en-tête au secret que vous avez configuré permet de vérifier si la requête provient de Fapshi. Par mesure de sécurité, le tableau de bord ne permet pas de consulter ni de savoir si un secret webhook a déjà été défini pour un service.

Format de la requête webhook

Réponse

200 - application/json

Accusé de réception du webhook

transId
string

Identifiant de la transaction du paiement.

status
enum<string>

Statut de la transaction

Options disponibles:
CREATED,
PENDING,
SUCCESSFUL,
FAILED,
EXPIRED
medium
enum<string>

Méthode de paiement

Options disponibles:
mobile money,
orange money
serviceName
string

Nom du service utilisé

transType
enum<string>

Type de transaction

Options disponibles:
Collection,
Payout
amount
integer

Montant de la transaction

revenue
integer

Montant reçu après déduction des frais Fapshi

payerName
string

Nom du client

email
string<email>

Email du client

redirectUrl
string<uri>

URL de redirection après le paiement

externalId
string

Identifiant de la transaction sur votre application

userId
string

Identifiant du client sur votre application

webhook
string<uri>

Le webhook que vous avez défini pour votre service

reason
string

Apparaît généralement lorsqu'un retrait via fapshi échoue.

financialTransId
string

Identifiant de la transaction avec l'opérateur de paiement

dateInitiated
string<date>

Date à laquelle le paiement a été initié

dateConfirmed
string<date>

Date à laquelle le paiement a été effectué