Install and configure Adyen

Edit on GitHub

This topic describes how to install and configure the Adyen module to integrate Adyen into your project.

Integration overview

The spryker-eco/adyen module provides integration of Spryker e-commerce system with Adyen technology partner. It requires the SprykerEco.AdyenApi spryker-eco/adyen-api module that provides the REST Client for making API calls to the Adyen Payment Provider.

The SprykerEco.Adyen module includes integration with:

  • Checkout process - payment forms with all necessary fields that are required to make payment request, save order information and so on.
  • OMS (Order Management System) - state machines, all necessary commands for making modification requests and conditions for changing orders status accordingly.

The SprykerEco.Adyen module provides the following payment methods:

Installation

To install the Adyen module, run the command:

composer require spryker-eco/adyen

General Configuration

You can find all necessary configurations in vendor/spryker-eco/adyen/config/config.dist.php. The table below describes all general configuration keys and their values.

CONFIGURATION KEY TYPE DESCRIPTION
AdyenConstants::MERCHANT_ACCOUNT string Name of merchant account.
AdyenConstants::REQUEST_CHANNEL string Name of channel communication with Adyen. It has to be “Web”.
AdyenConstants::SDK_CHECKOUT_SECURED_FIELDS_URL string JS SDK URL to encrypt Credit Card secure fields.
AdyenConstants::SDK_CHECKOUT_SHOPPER_JS_URL string URL to Adyen Checkout shopper SDK JS file.
AdyenConstants::SDK_CHECKOUT_SHOPPER_CSS_URL string URL to Adyen Checkout shopper SDK CSS file.
AdyenConstants::SDK_CHECKOUT_SHOPPER_JS_INTEGRITY_HASH string Subresource Integrity (SRI) hash for Checkout shopper SDK JS file.
AdyenConstants::SDK_CHECKOUT_SHOPPER_CSS_INTEGRITY_HASH string Subresource Integrity (SRI) hash for Checkout shopper SDK CSS file.
AdyenConstants::SDK_ENVIRONMENT string Adyen Environment name for SDK.
AdyenConstants::SDK_CHECKOUT_ORIGIN_KEY string Origin key of JS SDK that is generated based on the project base URL.
AdyenConstants::SOFORT_RETURN_URL string URL to return customer after payment on Sofort: http://mysprykershop.com/adyen/callback/redirect-sofort.
AdyenConstants::CREDIT_CARD_3D_RETURN_URL string URL to return customer after passing 3D secure: http://mysprykershop.com/adyen/callback/redirect-credit-card-3.
AdyenConstants::IDEAL_RETURN_URL string URL to return customer after payment on iDeal: http://mysprykershop.com/adyen/callback/redirect-ideal.
AdyenConstants::PAY_PAL_RETURN_URL string URL to return customer after payment on PayPal: http://mysprykershop.com/adyen/callback/redirect-paypal.
AdyenConstants::ALI_PAY_RETURN_URL string URL to return customer after payment on AliPay: http://mysprykershop.com/adyen/callback/redirect-alipay.
AdyenConstants::WE_CHAT_PAY_RETURN_URL string URL to return customer after payment on WeChatPay: http://mysprykershop.com/adyen/callback/redirect-wechatpay.
AdyenConstants::CREDIT_CARD_3D_SECURE_ENABLED bool Checks if 3D secure is enabled for Credit Card payments.
AdyenConstants::MULTIPLE_PARTIAL_CAPTURE_ENABLED bool Checks if multiple capture is enabled. False by default.
AdyenConstants::SOCIAL_SECURITY_NUMBER_COUNTRIES_MANDATORY array List of countries with mandatory SSN.
AdyenConstants::IDEAL_ISSUERS_LIST array List of iDeal issuers.
AdyenApiConstants::API_KEY string API key, provided by Adyen.
AdyenApiConstants::GET_PAYMENT_METHODS_ACTION_URL string URL for the API call to get available payment methods.
AdyenApiConstants::MAKE_PAYMENT_ACTION_URL string URL for the API call to make payment.
AdyenApiConstants::PAYMENTS_DETAILS_ACTION_URL string URL for the API call to retrieve payment details .
AdyenApiConstants::AUTHORIZE_ACTION_URL string URL for the authorization API call.
AdyenApiConstants::AUTHORIZE_3D_ACTION_URL string URL for the 3D authorization API call.
AdyenApiConstants::CAPTURE_ACTION_URL string URL for the capture API call.
AdyenApiConstants::CANCEL_ACTION_URL string URL for the cancel API call.
AdyenApiConstants::REFUND_ACTION_URL string URL for the refund API call.
AdyenApiConstants::CANCEL_OR_REFUND_ACTION_URL string URL for the API call to cancel payment. When it’s not possible to know if the payment is already captured, it is used for the refund API call.
AdyenApiConstants::TECHNICAL_CANCEL_ACTION_URL string URL for the technical cancellation API call.
AdyenApiConstants::ADJUST_AUTHORIZATION_ACTION_URL string URL for the API call to adjust the authorized amount.

Specific configuration

Also, you have to add payment methods to the State Machine (OMS), Domain Whitelist and Session Frontend configuration:

  $config[KernelConstants::DOMAIN_WHITELIST] = array_merge($trustedHosts, [
     ...
     'adyen.com', // trusted Adyen domain
     'test.adyen.com', // trusted Adyen domain for tests
 ]);
 ...
 $config[OmsConstants::PROCESS_LOCATION] = [
 ...
 APPLICATION_ROOT_DIR . '/vendor/spryker-eco/adyen/config/Zed/Oms',
 ];
 $config[OmsConstants::ACTIVE_PROCESSES] = [
 ...
 'AdyenCreditCard01',
 'AdyenSofort01',
 'AdyenDirectDebit01',
 'AdyenKlarnaInvoice01',
 'AdyenPrepayment01',
 'AdyenIdeal01',
 'AdyenPayPal01',
 'AdyenAliPay01',
 'AdyenWeChatPay01',
 ];
 $config[SalesConstants::PAYMENT_METHOD_STATEMACHINE_MAPPING] = [
 ...
 AdyenConfig::ADYEN_CREDIT_CARD => 'AdyenCreditCard01',
 AdyenConfig::ADYEN_SOFORT => 'AdyenSofort01',
 AdyenConfig::ADYEN_DIRECT_DEBIT => 'AdyenDirectDebit01',
 AdyenConfig::ADYEN_KLARNA_INVOICE => 'AdyenKlarnaInvoice01',
 AdyenConfig::ADYEN_PREPAYMENT => 'AdyenPrepayment01',
 AdyenConfig::ADYEN_IDEAL => 'AdyenIdeal01',
 AdyenConfig::ADYEN_PAY_PAL => 'AdyenPayPal01',
 AdyenConfig::ADYEN_ALI_PAY => 'AdyenAliPay01',
 AdyenConfig::ADYEN_WE_CHAT_PAY => 'AdyenWeChatPay01',
 ];

Based on the Adyen API version, you need to configure Session Frontend:

 // >>> SESSION FRONTEND
 ...
 $config[SessionConstants::YVES_SESSION_COOKIE_SAMESITE] = Cookie::SAMESITE_LAX; // Checkout API v67 and later (https://docs.adyen.com/online-payments/3d-secure/redirect-3ds2/web-drop-in/#handle-the-redirect)
 $config[SessionConstants::YVES_SESSION_COOKIE_SAMESITE] = Cookie::SAMESITE_NONE; // Checkout API v66 and earlier. (https://docs.adyen.com/online-payments/3d-secure/redirect-3ds2/web-drop-in/#handle-the-redirect)
 ...

Notifications

To complete the payment modification requests (cancel, capture, refund), it’s necessary to configure notification on Adyen merchant backend side.

You can get more information form Adyen documentation.

The link to accept notifications from Adyen looks like https://mysprykershop.com/adyen/notification.

Adyen Configuration

You can get your credentials by following the instruction.

You can get JS SDK url and generate your origin key by following this instruction from.