In dit gedeelte vind je alles wat je nodig hebt om de verschillende instappunten te beheren die je applicatie ontvangt tijdens en na een Axepta BNP Paribas Online-betaling.
Je leert:
- Welke URL's je moet doorgeven bij het aanmaken van een betaling,
- De volgorde waarin ze worden aangeroepen,
- Hoe je de geretourneerde informatie moet interpreteren,
- Hoe je de daadwerkelijke status van een transactie kunt verifiëren,
- Hoe je de webhook beheert.
Inhoudstafel
Bij het initialiseren van de betaling moet u een URLs-object opgeven.
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"
} |
|
Een van deze twee URL's (return of cancel) wordt aangeroepen aan het einde van de transactieverwerking om:
Axepta BNP Paribas Online voegt automatisch de volgende parameter toe: zie Integratieaanbevelingen
Belangrijk: Voeg uw eigen identifier (bijv. transId) toe aan de URL's om de retouroproep te koppelen aan uw interne bestelling. Voorbeeld van een URL die wordt geactiveerd na betalingsbevestiging door de klant:
https://myProcessingServer.net/myApi/success.php?transId=95330876-67ae-4949-a11c-b9a29257831b&PayId=b6eae9b16e3343fa90da39d4ee7bf4ad |
Belangrijke velden in de API-respons:
| Veld | Beschrijving |
|---|---|
| Amount | value, capturedValue, refundedValue |
| Identifiers | payId, transId, xId, refNr |
| Status | AUTHORIZED, CAPTURE_REQUEST, OK, FAILED, etc. |
| Resultaat | responseCode = "00000000" of "0" duidt op succes. |
responseDescription = tekstuele beschrijving. |
Let op: Een geslaagde transactie kan zowel "00000000" als "0" retourneren, afhankelijk van de betaalfase of -methode. Controleer altijd beide waarden om succes te bevestigen. |
Voorbeelden van samengevatte responsen:
{
"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"
}
} |
Aan het einde van de transactieverwerking meldt Axepta BNP Paribas Online het definitieve transactieresultaat aan de website van de handelaar. De webhook-melding is de enige betrouwbare manier om op de hoogte te worden gebracht van de voltooiing van een transactie. Verplicht voor handelaren: verwerk webhook-oproepen in uw systeem.
Na elke asynchrone verwerking van een betaling. Als het eindpunt niet beschikbaar is, wordt de melding tot 8 keer opnieuw verzonden:
| Poging | Vertraging (uur:min) | Totaal (uur:min) |
|---|---|---|
0 | Instantaneous | 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 |
Finaliseer een bestelling nooit alleen op basis van de Return-URL. |
Meegestuurde velden:
Voorbeeld
{
"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"
}
|
Om de authenticiteit van webhookgegevens te garanderen, worden payloads ondertekend met HMAC-SHA256.
De handtekening wordt meegestuurd in drie HTTP-headers:
X-Paygate-Signature-Version | Versie van het handtekeningformaat (momentaneel v1). |
X-Paygate-Timestamp | Unix-tijdstempel (seconden sinds 1970-01-01T00:00:00Z, UTC). |
X-Paygate-Signature | Handtekening in het formaat v1=<hex-hmac>. |
signed_payload = timestamp + "." + raw_json_body
signature = HMAC_SHA256(secret, signed_payload)
secret – HMAC keyX-Paygate-Signature: v1=<hex-hmac>X-Paygate-TimestampX-Paygate-Signaturesigned_payload = timestamp + "." + raw_bodyexpected_signature = HMAC_SHA256(secret, signed_payload)Voorbeeld van authenticiteitsverificatie:
BNP_DEMO_MIDHeaders
{
"Accept-Encoding": "gzip",
"Content-Length": 381,
"Content-Type": "application/json",
"Expect": "100-continue",
"X-Forwarded-Host": "bin.webhookrelay.com",
"X-Forwarded-Proto": "https",
"X-Paygate-Signature": "v1=DF1F4AA6022460A9821832F9B89DF82D92D01B35C80DDDF596E97FF26E0ABB14",
"X-Paygate-Signature-Version": "v1",
"X-Paygate-Timestamp": "1779175402",
"X-Real-Ip": "213.155.65.68"
}
Body
{
"merchantId": "BNP_DEMO_MID",
"payId": "413cef3ff4fd4b08af2245d5a889dbaa",
"transId": "Trans293156",
"xid": "7919a1e81571466ca8f5737d5414f7a4",
"refNr": "refNb81210",
"status": "FAILED",
"responseCode": "22940040",
"responseDescription": "NO RESPONSE",
"amount": {
"value": 460,
"currency": "EUR"},
"paymentMethods": {
"type": "CARD"},
"creationDate": "2026-05-19T07:23:20Z",
"channel": "ECOM"
} |
Verificatie:
| Controlepunt | Header/waarde | Resultaat |
|---|---|---|
Is de handtekeningsversie v1? | X-Paygate-Signature-Version | CORRECT |
| Valideert het tijdstempel (±5 min)? | X-Paygate-Timestamp: 1779175402 | CORRECT |
| Komen de handtekeningen overeen? | X-Paygate-Signature | CORRECT |
Berekening:
1779175402.<volle JSON-body>6Gp_A!8f)3zZ9K]gb7S?2*tN(yH54[wB): df1f4aa6022460a9821832f9b89df82d92d01b35c80dddf596e97ff26e0abb14
|