Les événements sont des actions importantes qui se produisent dans votre compte FedaPay, comme la création d’une transaction ou la mise à jour d’un client. Comprendre comment fonctionnent ces événements vous permet de mieux gérer vos transactions et d’offrir une meilleure expérience à vos clients.Chaque fois qu’un événement se produit, FedaPay le signale en temps réel via des notifications d’événements. Ces notifications peuvent être utilisées pour suivre et réagir à ce qui se passe dans votre compte, comme lorsqu’un paiement est approuvé ou un client est modifié.
Les transactions sur FedaPay suivent un cycle de vie, et chaque étape de ce cycle génère un événement particulier. Voici comment ça se passe :
Création de la transaction : Une fois que le client est créé, vous pouvez lui attribuer une transaction. Cela déclenche l’événement transaction.created.
Suivi des transactions : Une transaction peut évoluer de plusieurs façons :
transaction.approved : La transaction a été approuvée, ce qui signifie que le paiement a été validé.
customer.created : Lorsqu’un nouveau client est ajouté à votre compte, cela génère l’événement
transaction.declined: Le paiement a échoué ou a été refusé.
transaction.canceled : La transaction a été annulée avant sa finalisation.
transaction.transferred : Les fonds de la transaction ont été transférés au compte prévu (par exemple, vers un compte bancaire ou mobile money).
À chaque changement de statut, un nouvel événement est généré pour vous tenir informé. Par exemple, dès qu’une transaction est mise à jour, l’événement transaction.updated est déclenché.
Chaque événement contient des informations détaillées sur ce qui vient de se passer. Vous pouvez consulter tous ces événements dans la section Événements de votre tableau de bord FedaPay. Cela vous permet d’avoir un historique complet de toutes les actions importantes sur votre compte.
Suivre vos paiements : Vous êtes informé en temps réel de l’état de chaque transaction.
Administrer vos clients : Vous pouvez suivre les modifications apportées aux profils de vos clients.
Automatiser vos processus : Grâce à la notification des événements, vous pouvez automatiser certaines tâches sur votre site, comme envoyer un e-mail de confirmation après un paiement réussi.
Les Webhooks sont des notifications automatiques que FedaPay envoie à votre application ou site web lorsque des événements importants se produisent sur votre compte. Par exemple, vous pouvez recevoir un webhook lorsqu’une transaction est réussie ou contestée.Ces notifications sont particulièrement utiles car elles vous permettent de rester informé en temps réel, sans avoir à vérifier manuellement ce qui se passe sur votre compte FedaPay.
Chaque fois qu’un événement se produit (par exemple, un paiement accepté), FedaPay crée un objet événement (Event). Cet objet contient toutes les informations pertinentes sur l’événement, comme le type d’événement (paiement réussi) et les détails associés.Ensuite, FedaPay envoie cet objet à l’URL de votre choix (appelée point de terminaison) via une requête HTTP. C’est comme si FedaPay vous envoyait un message pour vous informer de ce qui s’est passé.
Lorsque vous définissez un point de terminaison webhook, FedaPay vous enverra les événements liés à ce point de terminaison lorsque ceux-ci seront déclenchés sur FedaPay.
FedaPay enverra une requête HTTP de type POST avec les données de l’événement.
FedaPay attend en retour une réponse avec un statut 2xx.
Toute réponse différente d’un statut 2xx est considérée comme un échec.
FedaPay exécute chaque envoi d’événement webhook dans des tâches concurrentes.
En cas d’échec de la tache d’exécution, FedaPay réessaiera au maximum 9 fois à des intervalles exponentiels.
Le temps d’attente pour réessayer ne dépasse pas 2 minutes.
Après 10 essais sans succès, le webhook est automatiquement désactivé pour éviter une surcharge de la queue.
Vous pouvez prévenir la désactivation en décochant l’option Désactiver le webhook lorsque l’application génère des erreurs dans votre tableau de bord.
il est préférable de bien faire le suivi de votre système et de prévenir les erreurs éventuelles. Suivez également nos recommandations pour une bonne implémentation de votre service
Les points de terminaison webhook peuvent parfois recevoir le même événement plusieurs fois. Vous pouvez éviter le traitement des événements en double en suivant les indications suivantes :
Enregistrez les identifiants des événements déjà traités pour ne pas les re-traiter.
Utilisez l’identifiant de l’objet dans object ainsi que name pour identifier les doublons.
Vérifier que les événements sont envoyés par FedaPay
1
Vérification des adresses IP
FedaPay envoie les webhooks depuis une liste définie d’adresses IP.
Faites uniquement confiance aux événements provenant de ces adresses.
2
Vérification des signatures des webhooks
Chaque webhook est signé par FedaPay via l’en-tête X-FEDAPAY-SIGNATURE.
Vous pouvez vérifier ces signatures en utilisant :
Les bibliothèques officielles de FedaPay.
Une vérification manuelle avec votre propre solution.
3
Comment vérifier les signatures des webhooks ?
Récupération du secret du point de terminaison
Accédez à Workbench → Onglet Webhooks.
Sélectionnez le point de terminaison et cliquez sur Click to reveal.
FedaPay génère une clé secrète unique pour chaque point de terminaison :
Différente entre le mode test et le mode live.
Unique pour chaque point de terminaison utilisé.
Vérification de la signature
Lorsqu’un Webhook est envoyé, FedaPay inclut une signature dans l’en-tête de la requête.
Cette signature est présente dans l’en-tête X-FEDAPAY-SIGNATURE.
Pour vérifier que le message est authentique :
1- Utilisez la clé secrète de votre Webhook (récupérable dans les paramètres du tableau de bord).
2- Utilisez cette clé pour vérifier la signature et vous assurer que le Webhook provient bien de FedaPay.
Outils pour vérifier les signatures
Pour s’assurer que les Webhooks reçus proviennent bien de FedaPay et n’ont pas été altérés, il est essentiel de vérifier leur signature.
FedaPay simplifie ce processus grâce à ses bibliothèques officielles.
Voici un exemple de code montrant comment vérifier la signature dans un projet Node.js ou PHP
Copy
const { Webhook } = require('fedapay')// You can find your endpoint's secret key in your webhook settingsconst endpointSecret = 'wh_sandbox...';// This example uses Express to receive webhooksconst app = require('express')();// Use body-parser to retrieve the raw body as a bufferconst bodyParser = require('body-parser');// Match the raw body to content type application/jsonapp.post('/webhook', bodyParser.raw({type: 'application/json'}), (request, response) => { const sig = request.headers['x-fedapay-signature']; let event; try { event = Webhook.constructEvent(request.body, sig, endpointSecret); } catch (err) { response.status(400).send(`Webhook Error: ${err.message}`); } // Handle the event switch (event.name) { case 'transaction.created': // Transaction créée break; case 'transaction.approved'': // Transaction approuvée break; case 'transaction.canceled'': // Transaction annulée break; default: console.log(`Unhandled event type ${event.type}`); } // Return a response to acknowledge receipt of the event response.json({received: true});});app.listen(4242, () => console.log('Running on port 4242'));
4
Prévenir les attaques par nouvelle tentative
Une attaque par nouvelle tentative consiste à retransmettre un webhook intercepté.
FedaPay inclut un horodatage (timestamp) dans l’en-tête X-FEDAPAY-SIGNATURE pour empêcher ces attaques.
L’horodatage est vérifié avec la signature :
Impossible de le modifier sans invalider la signature.
Si l’horodatage est trop ancien, votre application peut rejeter le webhook.
À chaque réessai d’envoi (si le premier a échoué), une nouvelle signature et un nouvel horodatage sont générés.
5
Retourner rapidement une réponse 2xx
Votre point de terminaison doit répondre rapidement avec un code 2xx avant d’exécuter des traitements lourds.
Exemples :
Répondre 200 immédiatement.
Effectuer ensuite les actions comme marquer une facture comme payée.