--- title: "Migrating to Adyen 3D Secure 2 SDK version 2.2.0 or later" description: "Find out how you can update your integration to the latest Android and iOS 3D Secure 2 SDKs." url: "https://docs.adyen.com/online-payments/classic-integrations/classic-api-integration/3d-secure-authentication/native-3ds2/migrating-to-2-2" source_url: "https://docs.adyen.com/online-payments/classic-integrations/classic-api-integration/3d-secure-authentication/native-3ds2/migrating-to-2-2.md" canonical: "https://docs.adyen.com/online-payments/classic-integrations/classic-api-integration/3d-secure-authentication/native-3ds2/migrating-to-2-2" last_modified: "2023-03-24T13:20:00+01:00" language: "en" --- # Migrating to Adyen 3D Secure 2 SDK version 2.2.0 or later Find out how you can update your integration to the latest Android and iOS 3D Secure 2 SDKs. [View source](/online-payments/classic-integrations/classic-api-integration/3d-secure-authentication/native-3ds2/migrating-to-2-2.md) **Adyen is no longer developing the Classic API integration** This page is for the Classic API (`/authorise`) integration, which we no longer accept new integrations with. We strongly recommend migrating to the newer [Native 3D Secure 2](/online-payments/3d-secure/native-3ds2) integration. To use this newer integration, you must also [migrate to the Checkout API](/online-payments/upgrade-your-integration/migrate-to-checkout-api). Even if you do not need the features of the newest Adyen 3D Secure 2 SDK version, we strongly recommend that you still upgrade to the newest version to get the latest updates, security patches, and fixes. ## Changes in the new Adyen 3D Secure 2 SDK version 2.2.0 or later These changes apply to version 2.2.0 or later for [iOS](https://github.com/Adyen/adyen-3ds2-ios) and [Android](https://github.com/Adyen/adyen-3ds2-android). ### Supported * 3D Secure protocol version 2.2.0 in addition to 2.1.0. * Support for new 3DS2 Directory Servers (e.g. card networks Cartes Bancaires, Diners, Discover, and Elo) * Sending your app URL in the `threeDSRequestorAppURL` parameter for *out-of-band (OOB) authentication* in in-app transactions. In an OOB authentication, the cardholder performs the challenge flow outside of the 3DS2 SDK. The authenticating app uses the `threeDSRequestorAppURL` to call your app after an OOB authentication occurs. ### Required * The `additionalData.threeds2.threeDS2ResponseData.messageVersion` from the [/authorise](https://docs.adyen.com/api-explorer/#/Payment/authorise) response must be used to [create a transaction in the iOS SDK](/online-payments/classic-integrations/classic-api-integration/3d-secure-authentication/native-3ds2/ios-sdk-integration#get-the-3d-secure-2-device-fingerprint) or [create a transaction in the Android SDK](/online-payments/classic-integrations/classic-api-integration/3d-secure-authentication/native-3ds2/android-sdk-integration#get-the-3d-secure-2-device-fingerprint). ## Migrating to Adyen 3D Secure 2 SDK version 2.2.0 or later 1. Install the latest versions: * [Adyen 3DS2 iOS SDK version 2.2.0 or later](https://github.com/Adyen/adyen-3ds2-ios/releases) * [Adyen 3DS2 Android SDK version 2.2.0 or later](https://github.com/Adyen/adyen-3ds2-android/releases) 2. Send the version of the 3DS2 SDK in the `threeDS2RequestData.sdkVersion` field in the initial request; this will inform the Adyen 3DS2 Server that the newer SDK features can be used such as 3D Secure protocol `2.2.0` and 3DS2 over the newly added card networks. * For iOS, call `ADY3DS2SDKVersion()` to get the version. * For Android, call `ThreeDS2Service.INSTANCE.sdkVersion` to get the version. 3. To make sure you use a protocol version that the issuing bank supports, [you must get the `additionalData.threeds2.threeDS2ResponseData.messageVersion`](#required) from the [/authorise](https://docs.adyen.com/api-explorer/#/Payment/authorise) response and pass it on to your SDK when you create a transaction. Otherwise, the transaction can fail due to a version mismatch. ### Using 3D Secure 2 protocol version 2.2.0 and later If you want to use the latest 3D Secure 2 protocol version 2.2.0, include the `threeDSRequestorAppURL` parameter during the challenge flow. This parameter is used in an [OOB authentication](#supported). If you specify a [previous protocol version](#previous-version), the `threeDSRequestorAppURL` parameter is ignored. The examples in the tabs below show how to specify the `threeDSRequestorAppURL` parameter in iOS and Android: ### Tab: iOS Because of recent updates to the 3D Secure protocol, we strongly recommend that you provide the `threeDSRequestorAppURL` parameter as a [universal link](https://developer.apple.com/documentation/xcode/allowing-apps-and-websites-to-link-to-your-content?language=objc). Set the `threeDSRequestorAppURL` in the [`ADYChallengeParameters` ](https://adyen.github.io/adyen-3ds2-ios/2.3.2/documentation/adyen3ds2/adychallengeparameters). Make sure to add the URL should to the app build settings. For more information, refer to the [Apple Developer documentation](https://developer.apple.com/documentation/uikit/inter-process_communication/allowing_apps_and_websites_to_link_to_your_content/defining_a_custom_url_scheme_for_your_app). ```swift NSDictionary *additionalData = ...; // Retrieved from Adyen. ADYChallengeParameters *parameters = [ADYChallengeParameters ... threeDSRequestorAppURL: [NSURL URLWithString:@"{YOUR_CUSTOM_SCHEME}://{YOUR_CUSTOM_DOMAIN}"]]; ``` ### Tab: Android Because of recent updates to the 3D Secure protocol, we strongly recommend that you provide the `threeDSRequestorAppURL` parameter as an [Android App Link](https://developer.android.com/training/app-links) when using [Adyen 3DS2 Android SDK version 2.2.12 and later](https://github.com/Adyen/adyen-3ds2-android/releases/tag/2.2.12). Set the `threeDSRequestorAppURL` in the [`ChallengeParameters` ](https://adyen.github.io/adyen-3ds2-android/com/adyen/threeds2/parameters/ChallengeParameters.html): 1. Copy the code to your app Manifest file. Replace the value of `android:host` from `{yourapp.com}` with your web domain name. Do not change the other configuration: ```XML ``` 2. Pass your App Link with `ChallengeParameters` object ```kotlin Map additionalData = ...; // Retrieved from Adyen. ChallengeParameters challengeParameters = new ChallengeParameters(); ... challengeParameters.setThreeDSRequestorAppURL("https://{yourapp.com}/adyen3ds2"); ``` 3. Verify the App Link following [Android documentation](https://developer.android.com/training/app-links/verify-android-applinks) ### Using 3D Secure 2 protocol version earlier than 2.2.0 []()If you want to use an earlier 3D Secure 2 protocol version: 1. The `additionalData.threeds2.threeDS2ResponseData.messageVersion` from the [/authorise](https://docs.adyen.com/api-explorer/#/Payment/authorise) response must be used to [create a transaction in the iOS SDK](/online-payments/classic-integrations/classic-api-integration/3d-secure-authentication/native-3ds2/ios-sdk-integration#get-the-3d-secure-2-device-fingerprint) or [create a transaction in the Android SDK](/online-payments/classic-integrations/classic-api-integration/3d-secure-authentication/native-3ds2/android-sdk-integration#get-the-3d-secure-2-device-fingerprint). 2. You need to include [`threeDS2RequestData.messageVersion` ](https://docs.adyen.com/api-explorer/#/Payment/latest/post/authorise__reqParam_threeDS2RequestData-messageVersion)in your POST [/authorise](https://docs.adyen.com/api-explorer/#/Payment/authorise) request. For example, set this parameter to **2.1.0**. The `threeDS2RequestData.messageVersion` that you send in the request will be used to guide the Adyen 3D Secure 2 Server in the protocol version to use in the transaction. But a different version than requested can still be returned if, for example, the issuing bank does not support the requested version. Because of this, the `additionalData.threeds2.threeDS2ResponseData.messageVersion` must still be the one used to initialize the 3D Secure 2 SDK; otherwise the transaction will fail. ## See also * [Adyen 3DS2 iOS SDK](https://github.com/Adyen/adyen-3ds2-ios) on GitHub * [iOS SDK Reference](https://adyen.github.io/adyen-3ds2-ios/) * [Adyen 3DS2 Android SDK](https://github.com/Adyen/adyen-3ds2-android) on GitHub * [Android SDK Reference](https://adyen.github.io/adyen-3ds2-android/)