Dans cette section, vous trouverez tout ce qu’il faut pour gérer les différents points d’entrée que votre application recevra pendant et après un paiement Axepta BNP Paribas Online.
Vous apprendrez :
Table des matières
Lors de l’initialisation du paiement, vous devez fournir un objet urls :
urls{
"return":"https://myProcessingServer.net/myApi/success.php?transId=95330876-67ae-4949-a11c-b9a29257831b",
"cancel":"https://myProcessingServer.net/myApi/cancel.php?transId=95330876-67ae-4949-a11c-b9a29257831b",
"webhook":"https://myBackOfficeServer.net/webhook.php"
} |
|
Une de ces deux url (return ou cancel) sera appelée à la fin du traitement de la transaction, afin de:
À l’appel de l’une de ces URLs, Axepta BNP Paribas Online ajoute automatiquement le paramètre : PayId=<paymentId généré par Axepta> - cf Préconisation d'intégration
Ajoutez un identifiant propre à votre système ans vos URLs afin de relier le retour à votre commande. Exemple d'url appelé lors de la validation du paiement par le client.
https://myProcessingServer.net/myApi/success.php?transId=95330876-67ae-4949-a11c-b9a29257831b&PayId=b6eae9b16e3343fa90da39d4ee7bf4ad |
À l’appel de l’une de ces URLs :
Champs importants dans la réponse API
Lorsque la transaction aboutie avec succès, le code réponse peut être "00000000" ou "0", suivant l'étape de la transaction, ou suivant le moyen de paiement utilisé.
|
Exemples de réponses résumées
{
"amount":{
"value":126,
"currency":"EUR",
"capturedValue":0,
"refundedValue":0
},
"payId":"91a6299a704147bf934aabd79fd1dc5d",
"merchantId":"MY_MERCHANT_ID",
"transId":"Trans361039",
"xId":"b55e68b7e4644a90836ae31effe1fc60",
"refNr":"refNb77254",
"status":"AUTHORIZED",
"responseCode":"00000000",
"responseDescription":"Transaction successful",
"paymentMethods":{
"type":"CARD"
}
} |
{
"amount":{
"value":1200,
"currency":"EUR",
"capturedValue":0,
"refundedValue":0
},
"payId":"09526745fa704e9c8584dbe893c31f99",
"merchantId":"MY_MERCHANT_ID",
"transId":"1230861007",
"xId":"2781d7d379e5449e9717c901ba6f9ff7",
"refNr":"Q1ovVxioaZ6n",
"status":"CAPTURE_REQUEST",
"responseCode":"0",
"responseDescription":"REQUEST",
"paymentMethods":{
"type":"CARD"
}
} |
A la fin du traitement de la transaction, Axepta BNP Paribas Online notifie le site marchand du résultat final de la transaction.
La notification Webhook est le seul moyen fiable d’être informé de la complétion d’une transaction. Il est impératif pour le site marchant de traiter les requêtes reçues sur l'Url Webhook.
Elle est réalisée par un appel http REST sur l'url webhook fournis lors de l'initialisation du paiement.
Elle est envoyée même si le client :
À chaque fin de traitement de paiement asynchrone.
Si l'adresse appelée n'est pas accessible, la notification est répétée jusqu'à 8 fois
| Essai | Délais | Temps après 1ère notification |
|---|---|---|
0 | instantané | 0 |
1 | 00:01 h | 00:01 h |
2 | 00:08 h | 00:09 h |
3 | 00:27 h | 00:36 h |
4 | 01:04 h | 01:40 h |
5 | 02:05 h | 03:45 h |
6 | 03:36 h | 07:21 h |
7 | 05:43 h | 13:04 h |
8 | 08:32 h | 21:36 h |
Important : ne déclenchez jamais la finalisation de commande uniquement à partir du Return URL. Utilisez toujours le webhook comme source d’information fiable. |
Champs fournis
Exemple
{
"merchantId": "YOUR_MERCHANT_ID",
"payId": "91a6299a704147bf934aabd79fd1dc5d",
"transId": "Trans361039",
"xid": "b55e68b7e4644a90836ae31effe1fc60",
"refNr": "refNb77254",
"status": "AUTHORIZED",
"responseCode": "00000000",
"responseDescription": "Transaction successful",
"amount": {
"value": 126,
"currency": "EUR"
},
"paymentMethods": {
"type": "CARD"
},
"creationDate": "2025-10-30T11:27:57Z",
"channel": "ECOM"
}
|
Afin de garantir l'authenticité des données du webhook, elle sont signées avec un HMAC-SHA256.
La signature est portée par 3 header http dans le message webhook.
| X-Paygate-Signature-Version | Version du format de la signature (actuellement, v1) |
| X-Paygate-Timestamp | Unix epoch timestamp (secondes depuis 1970-01-01T00:00:00Z, UTC) |
| X-Paygate-Signature | Signature dans le format |
signed_payload = timestamp + "." + raw_json_body
signature = HMAC_SHA256(secret, signed_payload)
secret – HMAC keysignature générée est encodé 'hex' et le header est valorisé comme suit:X-Paygate-Signature: v1=<hex-hmac>Pour vérifier l'authenticité des données du message webhook:
Extraire les données portées par les headers HTTP:
X-Paygate-TimestampX-Paygate-SignatureCalculer le HMAC avec les données extraites
signed_payload = timestamp + "." + raw_body
expected_signature = HMAC_SHA256(secret, signed_payload)
|