In this section, you'll find everything you need to manage the various entry points your application will receive during and after an Axepta BNP Paribas Online payment.
You'll learn:
When initializing the payment, you must provide a URLs object:
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"
} |
|
One of these two URLs (return or cancel) will be called at the end of transaction processing to:
When either of these URLs is called, Axepta BNP Paribas Online automatically adds the parameter: PayId=<paymentId generated by Axepta> - see Integration recommendation
Add a unique identifier from your system to your URLs to link the response to your order. Example of URL called during customer payment validation:
https://myProcessingServer.net/myApi/success.php?transId=95330876-67ae-4949-a11c-b9a29257831b&PayId=b6eae9b16e3343fa90da39d4ee7bf4ad |
When one of these URLs is called:
Retrieve the PayId parameter.
Call the API to get the actual transaction status: GET /payments/getByPayId/{payId} - Retrieve payment details by Payment ID
Important Fields in the API Response
Example Response
{
"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"
}
} |
The Webhook notification is the only reliable way to be informed of transaction completion. It is essential for the merchant site to process requests received at the Webhook URL.
This notification is sent even if the customer:
At the end of each asynchronous payment processing.
Important: Never trigger order finalization based solely on the Return URL. Always use the webhook as the reliable source of information. |
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)
|