This guide is for integrations using the Action Component v5.0.0 with the Advanced flow. For an API only integration, we recommend that you use the Action Component to handle 3D Secure 2 authentication. If you have a Components integration that uses the Card Component, the Card Component can handle 3D Secure 2 authentication without additional integration.
The Component handles 3D Secure 2 device fingerprinting and challenge flows, including the data exchange between your client-side and the card issuer's Access Control Server (ACS).
For v4.13.3 or earlier, use the guide for earlier versions.
Requirements
Make sure that you have set up your Drop-in v5.0.0 with Advanced flow integration.
Collect additional parameters in your payment form
For higher authentication rates, we strongly recommend that you collect the cardholder name in your payment form.
To collect the cardholder name using our Card Component, specify the following when adding the Card Component:
setHolderNameRequired(true)
val checkoutConfiguration = CheckoutConfiguration(
environment = environment,
clientKey = clientKey,
) {
card {
setHolderNameRequired(true)
}
}
We also recommend that you collect the shopper's billing address and email address in advance in your payment form. Deliver these parameters to your backend when making a payment as it is required by the card schemes.
Make a payment
Depending on the response, you do the following:
Use the Action Component
-
When you import the library, import the Action Component:
-
When you configure the Component, you can include the following functions:
Configuration function Description Parameter setThreeDSRequestorAppURL
Strongly recommended. An Android App link to call your app after an out-of-band (OOB) authentication occurs. When set, your app must also handle this Android App link. threeDSRequestorAppURL
: String.
Default: null.setUiCustomization
Customization for the 3D Secure 2 authentication UI. A UiCustomization
object.
For example:
-
Add
AdyenComponentView
to your layout .xml file. For example: -
Create the Action Component by calling
PROVIDER.get
from your Component class: -
Attach your Component to your activity or fragment. For example to attach your Component to your view with the identifier
adyenComponentView
: -
When you get a response with an action, call
handleAction
: -
The Component calls the
onAdditionalDetails
method in yourComponentCallback
class and passes theactionComponentJson
object. Pass the object to your backend server. -
Pass the /payments/details response from your backend server to your frontend app.
Continue and complete your payment flow.
Handle a redirect
In some cases, your shopper is routed to perform 3D Secure redirect authentication instead. When this happens, handle the redirect:
-
Add an
IntentFilter
to theActivity
that will handle thereturnUrl
specified in your /payments request.The
android:host
value is your package name at build time. -
Get the result of the redirect from the
Activity
. Pass theintent
back to the Component. Depending on your activity'slaunchMode
, you can get this intent in eitheronCreate
oronNewIntent
.
The onAdditionalDetails
callback gets triggered.
Continue and complete your payment flow.
Handling your Android App link for 3D Secure 2
-
Add the following to your
AndroidManifest.xml
, specifying your Android App Link as yourandroid:host
:
Troubleshooting
If native 3D Secure 2 is not triggered, check that, in your /payments request:
authenticationData.threeDSRequestData.nativeThreeDS
is set to preferred.paymentMethod.threeDS2SdkVersion
is set. You can get this value by callingThreeDS2Service.INSTANCE.sdkVersion
.channel
is set to Android.