Gestion des webhooks

Description

Les webhooks vous permettent d'être notifié en temps réel d'un événement, tel qu'un changement de statut de paiement.

Ils se configurent dans vos applications de votre espace Virement Maitrisé et prennent en compte quatre paramètres :

urlL'URL où les webhooks seront écoutés
content-typeSoit application/x-www-form-urlencoded (par défaut), soit application/json
offsetLe délai (en minutes) entre la publication du webhook et son appel après un événement.
eventLa liste des événements pour lesquels le webhook doit être appelé.

Un webhook est une requête POST application/x-www-form-urlencoded ou application/json, signée à l'aide de la clé publique privée de votre application. Par défaut, le webhook est envoyé avec le 'Content-Type' application/x-www-form-urlencoded.Vous pouvez toutefois spécifier application/jsonen créant un en-tête personnalisé de type Content-Type (veillez à ajouter le C et le T majuscules).

A webhook is an application/x-www-form-urlencoded or application/json POSTrequest which is signed using your application privately-kept public key (private asymmetric keys).

🚧 Important

Vérifiez la signature à l'aide de votre clé privée, puis traitez la commande uniquement en fonction du résultat du paiement.

Le contenu de la chaîne de signature (signatureString) correspond aux en-têtes listés dans le composant « en-têtes » de la signature. Assurez-vous de les prendre en compte et de respecter l'ordre indiqué dans le champ. Ces informations sont susceptibles d'être modifiées.

Exemple :

POST /webhook HTTP/1.1
Host: mywebsite.com
Signature: keyId="2dfdcf57-5b2f-4309-846f-913d0b2802cf",algorithm="rsa-sha256",headers="date digest x-request-id",signature="h0V0SUbjRhLEP/MiYo0Mgs1N17EuCEmKyQrDjxysc7iSiFXTjvY6qVEoaiRkzB8ZI0J39gGwOtTXN9CJPVRbhEHhi9Z9rQvM33FkygXvvx8BwM76fSTQ2/BSZWx04CjbPv/XUVusnkKVr3W6p+Vn073hAuJn1nKCvDOyl+QnDtstkzT+UacVzDA9L9nyPbbaPQHJobaZuG8TjhnI+Y0PZxneke6OU6fcdPT0uwkEamDOOExcMryHIX1iH5iiPMvLoVA8acqvvMSDYar0rlEQ2J1M4dcowWT8FxLo6C8uqvJIaBYm7Ze0RNJOwY0UBImCVDIuQLJuBjPwjQT5GjTQlg==
Digest: SHA-256=wOtTXN9CJPVRbhEHhi9Z9rQvM33FkygXvvx8BwM76fS
Date: Mon, 08 Jun 2020 23:11:23 GMT
X-Request-ID: 88c414df-6895-48db-8ef3-1fd1ce4272c6
Content-Type: application/x-www-form-urlencoded
session_id=b2bca2bcd3b64a32a7da0766df59a7d2&status=payment_created&customer_id=1ef74051a77673de120820fb370dc382&provider=bnpafr&state=mystate&event=payment_session.status.payment_created

🚧 Important

Le webhook effectuera 20 tentatives avec un incrément de temps exponentiel si votre serveur ne répond pas avec un code HTTP compris entre 2XX et 2XX.

🚧 Important

Les webhooks ont un délai d'expiration de 20 secondes. Si votre serveur ne répond pas en moins de 20 secondes, nous expirons et réessayons ultérieurement.

💡 Les sessions de paiement de type IncomingTransfer ne contiennent pas nécessairement de référence à une commande. Il est donc conseillé de filtrer ces sessions de paiement lors de votre intégration en renvoyant un code d'état HTTP dédié, tel que 202.

Attributs

Les attributs suivants sont inclus dans les webhooks application/x-www-form-urlencoded. Ils ne sont envoyés que s'ils contiennent une valeur.

attributévénement (event)description
session_idtousL'identifiant unique de la session de paiement
customer_idtousL'identifiant client unique qui a effectué le paiement
providertousLa banque utilisée pour effectuer le paiement
statetousL'état envoyé lors de la demande de redirection
eventtousL'événement qui vient d'être déclenché
statuspayment_session.statusLe statut de la session de paiement
refund_statuspayment_session.refund_statusLe statut du remboursement du paiement initial
refunded_session_idpayment_session.refund_statusL'identifiant unique de la session de paiement initiale en cours de remboursement
transfer_statepayment_session.status, payment_session.transfer_states, payment_session.received_amountTransfer_state de la session de paiement
transfer_reasonpayment_session.status, payment_session.transfer_states, payment_session.received_amountDétails du transfer_state de la session de paiement
typepayment_session.status, payment_session.received_amountType du paiement :PayByBank,RequestToPay,Refund,ManualTransfer,IncomingTransfer
amountpayment_session.status, payment_session.received_amountMontant de la session de paiement
received_amountpayment_session.status, payment_session.received_amountMontant total reçu lors de cette session de paiement
transaction_amountpayment_session.status, payment_session.received_amountMontant de la dernière transaction liée à la session de paiement
virtual_beneficiary_idtousID du bénéficiaire virtuel uniquement si le paiement a été reçu sur un bénéficiaire virtuel

💡 L'ordre des attributs ne changera pas. D'autres attributs peuvent être ajoutés à la fin.