Payment Based Checkout (PBC)
If you like to receive the customers data from the payment method to feed into your order system.
Availability
Payment based checkout is available for the following payment methods:
Single payment flow
Some payment methods accept a fast checkout flow where the checkout data, like email, delivery address and name can be retrieved from the payment method. We send that data to your backend via the exchange call.
Start in Sandbox Mode
You can start implementing in the sandbox environment with Payment Option ID: 613, this is a standard testing option, where we will act like any payment method that is able to perform payment based checkout flow. You will receive sample data on your exchange.
The Exchange call with Unified Data
Step by step walkthrough of the data you can collect in the exchange notification.
Signed ExchangeWe send the checkoutData received from the suplyer (Payment method) via the exchange call based on the signed exchange format. If you use a legacy format, update first to Singed Exchange
Payload walltrough
{
"id": "XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX",
"serviceId": "SL-####-####",
"description": "TEST ORDER PAYMENT BASED",
"reference": "XXXXXXXXXXXX",
"manualTransferCode": "6000 0510 0240 ****",
"orderId": "************",
"uuid": "XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX",
"customerKey": "************",
"status": {
"code": 100,
"action": "PAID"
},
"receipt": null,
"integration": {
"test": false
},
"amount": {
"value": 10010,
"currency": "EUR"
},
"authorizedAmount": {
"value": 0,
"currency": "EUR"
},
"capturedAmount": {
"value": 10010,
"currency": "EUR"
},
"checkoutData": [
{
"customer": {
"firstName": "Indy",
"lastName": "Voice",
"phone": "+31612345678",
"email": "[email protected]",
"birthDate": "1983-05-30"
},
"invoiceAddress": {
"firstName": "Indy",
"lastName": "Voice",
"streetName": "Invoicestreet",
"streetNumber": 2,
"streetNumberExtension": "B",
"zipCode": "5211",
"city": "London",
"regionCode": "LND",
"countryCode": "UK"
},
"deliveryAddress": {
"firstName": "Dave",
"lastName": "Livery",
"streetName": "Deliverylane",
"streetNumber": 70,
"streetNumberExtension": "A",
"zipCode": "5678CD",
"city": "Amsterdam",
"regionCode": "NH",
"countryCode": "NL"
}
}
],
"payments": [
{
"id": "65e0f2e7-5114-8b59-2f80-051002408023",
"paymentMethod": {
"id": 613,
"optimize": []
},
"customerType": null,
"customerKey": "e60ba2229c8e459c0378e688bd16a06d",
"customerId": "NL59RABO0370119274",
"ipAddress": "2a09:bac2:4d81:1478::20a:7b",
"secureStatus": false,
"paymentVerificationMethod": 21,
"status": {
"code": 100,
"action": "PAID"
},
"currencyAmount": {
"value": 1367,
"currency": "EUR"
},
"amount": {
"value": 1367,
"currency": "EUR"
},
"authorizedAmount": {
"value": 0,
"currency": "EUR"
},
"capturedAmount": {
"value": 1367,
"currency": "EUR"
},
"supplierData": {
"contactDetails": {
"email": "[email protected]",
"lastName": "Voice",
"firstName": "Indy",
"phoneNumber": "+31612345678",
"dateOfBitrh": "30-05-1983",
"sandBoxUserId": "X3423434"
},
"invoiceAddress": {
"city": "London",
"street": "Invoicestreet",
"addition": "B",
"lastName": "Livery",
"firstName": "Dave",
"postalCode": "5211",
"companyName": null,
"countryName": "United Kingdom",
"houseNumber": "2"
},
"shippingAddress": {
"city": "Amsterdam",
"street": "Deliverylane",
"addition": "A",
"firstName": "Dave",
"lastName": "Livery",
"postalCode": "5678CD",
"companyName": null,
"countryName": "Netherlands",
"houseNumber": "70"
}
}
}
],
"createdAt": "2024-02-29T21:11:03+00:00",
"createdBy": "AT-0036-0055",
"modifiedAt": "2024-02-29T21:11:54+00:00",
"modifiedBy": null,
"expiresAt": "2024-03-28T21:11:03+00:00",
"completedAt": "2024-02-29T21:11:49+00:00",
"links": {
"abort": "https://achterelkebetaling.nl/v1/orders/XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX/abort",
"status": "https://achterelkebetaling.nl/v1/orders/XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX/status",
"redirect": "https://achterelkebetaling.nl/to/return/XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX"
}
}iDEAL Fast checkout/Snel bestellen Example
If you have completed a transaction in testmode, you can start sending in a specific payment option. Please be aware, if you have enabled testMode on a specific payment method, you are redirect to the sandbox environment of that payment method.
Order return URL
The exchange is faster then the payer can return to your 'thank you page'. But if you system is slow or there is an error we return the payer after the configured timeout (5sec).
In this case the Payment Status in your platform including the checkout data might not be updated. Therefore on the return page you need to perform the following steps:
- Check if the status is PENDING in your system
- If transaction is PENDING, return: 'We wait for your payment'. If DENIED or CANCELLED update your table.
- If status is PAID (update your system, and check why the exchange didn't work in the portal.
Exchange is the best wayIf the status in your system is NOT pending, you do not have to perform any calls to our platform, the exchange did a secure update into your system
Authorise and Capture flow
If there is a fast checkout solution with a two step flow, where you can get the customers data, fill the checkout and use the token to complete the payment.
iDeal fast confirmation modal
If you want to prompt the user for a conformation to iDEAL fast checkout, you can use our model asset.
Demo of a modal confirmation screen: https://demo.pay.nl/ideal-snel-bestellen
Download the assets from: https://support.pay.nl/hubfs/assets/ideal-snel-bestellen.zip
Updated 18 days ago