Accept Visa Checkout payments using our APIs, and build your own payment form to have full control over the look and feel of your checkout page.
Before you begin
These instructions explain how to add Visa Checkout to your existing API-only integration. The API-only integration works the same way for all payment methods. If you haven't done this integration yet, refer to our API-only integration guide.
Before starting your Visa Checkout integration:
- Make sure that you have set up your back end implementation.
- Add Visa Checkout in your test Customer Area.
Build your payment form for Visa Checkout
Include Visa Checkout in the list of available payment methods. You don't need to collect any information from the shopper in your payment form.
If you are using the /paymentMethods to show available payment methods to the shopper, specify the following:
- countryCode: Any country where Visa Checkout is available, for example, GB.
- amount.currency: Currency of selected country, for example, GBP.
The response contains paymentMethod.type
: visacheckout.
We provide logos for Visa Checkout which you can use on your payment form. For more information, refer to Downloading logos.
To integrate your website or app with the Visa Checkout SDK, follow the steps outlined in the Visa Checkout integration documentation.
Follow the Visa documentation to:
- Create a partner relationship with Adyen. You must create a partner relationship to process payments via the Visa Checkout SDK.
- Add the Visa Checkout button image.
- Add the Visa Checkout SDK.
- Initialise Visa Checkout using the
onVisaCheckoutReady V.init
function, using your API key. - Configure the
V.on
event handler for receiving apayment.success
response containing a Visa Checkout Call ID. - Implement anti-clickjacking security requirements.
- Follow the user interface and branding guidelines for displaying the Visa Checkout button and acceptance marks.
When a user selects a payment and/or a shipping address from Visa Checkout, your server will receive a Visa Checkout Call ID. You need this value to make a payment.
Make a payment
In your /payments request, specify:
-
paymentMethod.type
: visacheckout -
visacheckout.callId
: The Visa Checkout Call ID value. When your shopper selects a payment and/or a shipping address from Visa Checkout, you will receive a Visa Checkout Call ID.
curl https://checkout-test.adyen.com/v49/payments \
-H "x-API-key: YOUR_X-API-KEY" \
-H "content-type: application/json" \
-d '{
"amount": {
"currency": "EUR",
"value": 1000
},
"reference": "YOUR_ORDER_NUMBER",
"paymentMethod": {
"type": "visacheckout",
"visacheckout.callId":"2413905121171559101"
},
"merchantAccount": "YOUR_MERCHANT_ACCOUNT"
}'
# Set your X-API-KEY with the API key from the Customer Area.
adyen = Adyen::Client.new
adyen.api_key = "YOUR_X-API-KEY"
response = adyen.checkout.payments({
:amount => {
:currency => "EUR",
:value => 1000
},
:reference => "YOUR_ORDER_NUMBER",
:paymentMethod => {
:type => "visacheckout",
:visacheckout.callId => "2413905121171559101"
},
:merchantAccount => "YOUR_MERCHANT_ACCOUNT"
})
// Set your X-API-KEY with the API key from the Customer Area.
$client = new \Adyen\Client();
$client->setXApiKey("YOUR_X-API-KEY");
$service = new \Adyen\Service\Checkout($client);
$params = array(
"amount" => array(
"currency" => "EUR",
"value" => 1000
),
"reference" => "YOUR_ORDER_NUMBER",
"paymentMethod" => array(
"type" => "visacheckout",
"visacheckout.callId" => "2413905121171559101"
),
"merchantAccount" => "YOUR_MERCHANT_ACCOUNT"
);
$result = $service->payments($params);
#Set your X-API-KEY with the API key from the Customer Area.
adyen = Adyen.Adyen()
adyen.client.xapikey = 'YOUR_X-API-KEY'
result = adyen.checkout.payments({
'amount': {
'value': 1000,
'currency': 'EUR'
},
'reference': 'YOUR_ORDER_NUMBER',
'paymentMethod': {
'type': 'visacheckout',
'visacheckout.callId': '2413905121171559101'
},
'merchantAccount': 'YOUR_MERCHANT_ACCOUNT'
})
// Set your X-API-KEY with the API key from the Customer Area.
const {Client, Config, CheckoutAPI} = require('@adyen/api-library');
const config = new Config();
// Set your X-API-KEY with the API key from the Customer Area.
config.apiKey = '[API_KEY]';
config.merchantAccount = '[YOUR_MERCHANT_ACCOUNT]';
const client = new Client({ config });
client.setEnvironment("TEST");
const checkout = new CheckoutAPI(client);
checkout.payments({
amount: { currency: "EUR", value: 1000 },
paymentMethod: {
type: 'visacheckout',
visacheckout.callId: '2413905121171559101'
},
reference: "YOUR_ORDER_NUMBER",
merchantAccount: config.merchantAccount
}).then(res => res);
The /payments response contains:
-
pspReference
: Adyen's unique payment reference number. -
resultCode
: Authorised
{
"pspReference": "882573482151437A",
"resultCode": "Authorised",
"merchantReference": "YOUR_UNIQUE_REFERENCE"
}
Present the payment result
Use the resultCode from the /payments response to present the payment result to your shopper. You will also receive the outcome of the payment asynchronously in a notification webhook.
For Visa Checkout payments, you can receive the following resultCode
values:
resultCode | Description | Action to take |
---|---|---|
Authorised | The payment was successful. | Inform the shopper that the payment has been successful. If you are using manual capture, you also need to capture the payment. |
Cancelled | The shopper cancelled the payment. | Ask the shopper whether they want to continue with the order, or request that they select a different payment method. |
Error | There was an error when the payment was being processed. For more information, check the
refusalReason
field. |
Inform the shopper that there was an error processing their payment. |
Refused | The payment was refused. For more information, check the
refusalReason
field. |
Ask the shopper to try the payment again using a different payment method. |
resultCode
values are possible in case of the 3D Secure authentication flow. For more information, refer to Result codes.
Recurring payments
To make recurring Visa Checkout payments, you first need to create a shopper token and then make subsequent recurring transactions with the token.
Refer to Tokenization for more information and detailed instructions.
Test and go live
You can only board real credit cards on Visa Checkout. If you send a test payment to the Adyen test platform, you will receive the following message: Refused (This is not a testCard).