{"title":"Migrating to Adyen 3D Secure 2 SDK version 2.2.0 or later","category":"default","creationDate":1671530640,"content":"<div class=\"sc-notice warning\"><div>\n<p><strong>Adyen is no longer developing the Classic API integration<\/strong><\/p>\n<p>This page is for the Classic API (<code>\/authorise<\/code>) integration, which we no longer accept new integrations with. <\/p>\n<p>We strongly recommend migrating to the newer <a href=\"\/online-payments\/3d-secure\/native-3ds2\">Native 3D Secure 2<\/a> integration. To use this newer integration, you must also <a href=\"\/pt\/online-payments\/upgrade-your-integration\/migrate-to-checkout-api\">migrate to the Checkout API<\/a>.<\/p>\n<\/div><\/div>\n<p>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.<\/p>\n<h2>Changes in the new Adyen 3D Secure 2 SDK version 2.2.0 or later<\/h2>\n<p>These changes apply to version 2.2.0 or later for <a href=\"https:\/\/github.com\/Adyen\/adyen-3ds2-ios\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">iOS<\/a> and <a href=\"https:\/\/github.com\/Adyen\/adyen-3ds2-android\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Android<\/a>.<\/p>\n<h3 id=\"supported\">Supported<\/h3>\n<ul>\n<li>3D Secure protocol version 2.2.0 in addition to 2.1.0.<\/li>\n<li>Support for new 3DS2 Directory Servers (e.g. card networks Cartes Bancaires, Diners, Discover, and Elo)<\/li>\n<li>\n<p>Sending your app URL in the <code>threeDSRequestorAppURL<\/code> parameter for <em>out-of-band (OOB) authentication<\/em> in in-app transactions.<\/p>\n<p>In an OOB authentication, the cardholder performs the challenge flow outside of the 3DS2 SDK. The authenticating app uses the <code>threeDSRequestorAppURL<\/code> to call your app after an OOB authentication occurs.<\/p>\n<\/li>\n<\/ul>\n<h3 id=\"required\">Required<\/h3>\n<ul>\n<li>The <code>additionalData.threeds2.threeDS2ResponseData.messageVersion<\/code> from the <a href=\"https:\/\/docs.adyen.com\/api-explorer\/#\/Payment\/authorise\" class=\"codeLabel external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/authorise<\/a> response must be used to <a href=\"\/pt\/online-payments\/classic-integrations\/classic-api-integration\/3d-secure-authentication\/native-3ds2\/ios-sdk-integration#get-the-3d-secure-2-device-fingerprint\">create a transaction in the iOS SDK<\/a> or <a href=\"\/pt\/online-payments\/classic-integrations\/classic-api-integration\/3d-secure-authentication\/native-3ds2\/android-sdk-integration#get-the-3d-secure-2-device-fingerprint\">create a transaction in the Android SDK<\/a>.<\/li>\n<\/ul>\n<h2>Migrating to Adyen 3D Secure 2 SDK version 2.2.0 or later<\/h2>\n<ol>\n<li>\n<p>Install the latest versions:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/Adyen\/adyen-3ds2-ios\/releases\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Adyen 3DS2 iOS SDK version 2.2.0 or later<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Adyen\/adyen-3ds2-android\/releases\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Adyen 3DS2 Android SDK version 2.2.0 or later<\/a><br \/>\n<br><\/li>\n<\/ul>\n<\/li>\n<li>\n<p>Send the version of the 3DS2 SDK in the <code>threeDS2RequestData.sdkVersion<\/code> 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 <code>2.2.0<\/code> and 3DS2 over the newly added card networks.<\/p>\n<ul>\n<li>For iOS, call <code>ADY3DS2SDKVersion()<\/code> to get the version.<\/li>\n<li>For Android, call <code>ThreeDS2Service.INSTANCE.sdkVersion<\/code> to get the version.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>To make sure you use a protocol version that the issuing bank supports, <a href=\"#required\">you must get the <code>additionalData.threeds2.threeDS2ResponseData.messageVersion<\/code><\/a> from the <a href=\"https:\/\/docs.adyen.com\/api-explorer\/#\/Payment\/authorise\" class=\"codeLabel external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/authorise<\/a> response and pass it on to your SDK when you create a transaction. Otherwise, the transaction can fail due to a version mismatch.<\/p>\n<\/li>\n<\/ol>\n<h3>Using 3D Secure 2 protocol version 2.2.0 and later<\/h3>\n<p>If you want to use the latest 3D Secure 2 protocol version 2.2.0, include the  <code>threeDSRequestorAppURL<\/code> parameter during the challenge flow. This parameter is used in an <a href=\"#supported\">OOB authentication<\/a>. If you specify a <a href=\"#previous-version\">previous protocol version<\/a>, the <code>threeDSRequestorAppURL<\/code> parameter is ignored.<\/p>\n<p>The examples in the tabs below show how to specify the <code>threeDSRequestorAppURL<\/code> parameter in iOS and Android:<\/p>\n\n<div id=\"tabDH5xP\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;iOS&quot;,&quot;content&quot;:&quot;\\n&lt;div class=\\&quot;notices red\\&quot;&gt;\\n&lt;p&gt;Because of recent updates to the 3D Secure protocol, we strongly recommend that you provide the &lt;code&gt;threeDSRequestorAppURL&lt;\\\/code&gt; parameter as a &lt;a href=\\&quot;https:\\\/\\\/developer.apple.com\\\/documentation\\\/xcode\\\/allowing-apps-and-websites-to-link-to-your-content?language=objc\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;universal link&lt;\\\/a&gt;.&lt;\\\/p&gt;\\n&lt;\\\/div&gt;\\n&lt;p&gt;Set the &lt;code&gt;threeDSRequestorAppURL&lt;\\\/code&gt; in the &lt;a href=\\&quot;https:\\\/\\\/adyen.github.io\\\/adyen-3ds2-ios\\\/2.3.2\\\/documentation\\\/adyen3ds2\\\/adychallengeparameters\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;ADYChallengeParameters&lt;\\\/code&gt;\\n&lt;\\\/a&gt;.&lt;\\\/p&gt;\\n&lt;p&gt;Make sure to add the URL should to the app build settings. For more information, refer to the &lt;a href=\\&quot;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\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;Apple Developer documentation&lt;\\\/a&gt;.&lt;\\\/p&gt;\\n&lt;pre&gt;&lt;code class=\\&quot;language-swift\\&quot;&gt;\\nNSDictionary *additionalData = ...; \\\/\\\/ Retrieved from Adyen.\\nADYChallengeParameters *parameters = [ADYChallengeParameters\\n  ...\\nthreeDSRequestorAppURL: [NSURL URLWithString:@\\&quot;{YOUR_CUSTOM_SCHEME}:\\\/\\\/{YOUR_CUSTOM_DOMAIN}\\&quot;]];&lt;\\\/code&gt;&lt;\\\/pre&gt;\\n&quot;,&quot;altTitle&quot;:&quot;iOS-settings&quot;,&quot;oldTabId&quot;:&quot;oob-ios_1&quot;,&quot;relation&quot;:&quot;iOS-settings&quot;},{&quot;title&quot;:&quot;Android&quot;,&quot;content&quot;:&quot;\\n&lt;div class=\\&quot;notices red\\&quot;&gt;\\n&lt;p&gt;Because of recent updates to the 3D Secure protocol, we strongly recommend that you provide the &lt;code&gt;threeDSRequestorAppURL&lt;\\\/code&gt; parameter as an &lt;a href=\\&quot;https:\\\/\\\/developer.android.com\\\/training\\\/app-links\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;Android App Link&lt;\\\/a&gt; when using &lt;a href=\\&quot;https:\\\/\\\/github.com\\\/Adyen\\\/adyen-3ds2-android\\\/releases\\\/tag\\\/2.2.12\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;Adyen 3DS2 Android SDK version 2.2.12 and later&lt;\\\/a&gt;.&lt;\\\/p&gt;\\n&lt;\\\/div&gt;\\n&lt;p&gt;Set the &lt;code&gt;threeDSRequestorAppURL&lt;\\\/code&gt; in the &lt;a href=\\&quot;https:\\\/\\\/adyen.github.io\\\/adyen-3ds2-android\\\/com\\\/adyen\\\/threeds2\\\/parameters\\\/ChallengeParameters.html\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;\\n  &lt;code&gt;ChallengeParameters&lt;\\\/code&gt;\\n&lt;\\\/a&gt;:&lt;\\\/p&gt;\\n&lt;ol&gt;\\n&lt;li&gt;Copy the code to your app Manifest file. Replace the value of &lt;code&gt;android:host&lt;\\\/code&gt; from &lt;code&gt;{yourapp.com}&lt;\\\/code&gt; with your web domain name. Do not change the other configuration:&lt;\\\/li&gt;\\n&lt;\\\/ol&gt;\\n&lt;pre&gt;&lt;code class=\\&quot;language-XML\\&quot;&gt;    &amp;lt;activity\\n        android:name=\\&quot;com.adyen.threeds2.internal.ui.activity.ChallengeActivity\\&quot;\\n        android:exported=\\&quot;true\\&quot;\\n        tools:node=\\&quot;merge\\&quot;&amp;gt;\\n        &amp;lt;intent-filter\\n            android:autoVerify=\\&quot;true\\&quot;\\n            tools:targetApi=\\&quot;m\\&quot;&amp;gt;\\n            &amp;lt;action android:name=\\&quot;android.intent.action.VIEW\\&quot; \\\/&amp;gt;\\n\\n            &amp;lt;category android:name=\\&quot;android.intent.category.DEFAULT\\&quot; \\\/&amp;gt;\\n            &amp;lt;category android:name=\\&quot;android.intent.category.BROWSABLE\\&quot; \\\/&amp;gt;\\n\\n            &amp;lt;data\\n                android:host=\\&quot;{yourapp.com}.com\\&quot;\\n                android:pathPrefix=\\&quot;\\\/adyen3ds2\\&quot;\\n                android:scheme=\\&quot;https\\&quot; \\\/&amp;gt;\\n        &amp;lt;\\\/intent-filter&amp;gt;\\n    &amp;lt;\\\/activity&amp;gt;&lt;\\\/code&gt;&lt;\\\/pre&gt;\\n&lt;ol start=\\&quot;2\\&quot;&gt;\\n&lt;li&gt;Pass your App Link with &lt;code&gt;ChallengeParameters&lt;\\\/code&gt; object&lt;\\\/li&gt;\\n&lt;\\\/ol&gt;\\n&lt;pre&gt;&lt;code class=\\&quot;language-kotlin\\&quot;&gt;Map&amp;lt;String, String&amp;gt; additionalData = ...; \\\/\\\/ Retrieved from Adyen.\\n\\nChallengeParameters challengeParameters = new ChallengeParameters();\\n...\\nchallengeParameters.setThreeDSRequestorAppURL(\\&quot;https:\\\/\\\/{yourapp.com}\\\/adyen3ds2\\&quot;);&lt;\\\/code&gt;&lt;\\\/pre&gt;\\n&lt;ol start=\\&quot;3\\&quot;&gt;\\n&lt;li&gt;Verify the App Link following &lt;a href=\\&quot;https:\\\/\\\/developer.android.com\\\/training\\\/app-links\\\/verify-android-applinks\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot; class=\\&quot;external-link no-image\\&quot;&gt;Android documentation&lt;\\\/a&gt;&lt;\\\/li&gt;\\n&lt;\\\/ol&gt;\\n&quot;,&quot;altTitle&quot;:&quot;android-settings&quot;,&quot;oldTabId&quot;:&quot;oob-android_2&quot;,&quot;relation&quot;:&quot;android-settings&quot;}]\"\n            :should-update-when-url-changes='true'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<h3>Using 3D Secure 2 protocol version earlier than 2.2.0<\/h3>\n<p><a id=\"previous-version\"><\/a> If you want to use an earlier 3D Secure 2 protocol version:<\/p>\n<ol>\n<li>The <code>additionalData.threeds2.threeDS2ResponseData.messageVersion<\/code> from the <a href=\"https:\/\/docs.adyen.com\/api-explorer\/#\/Payment\/authorise\" class=\"codeLabel external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/authorise<\/a> response must be used to <a href=\"\/pt\/online-payments\/classic-integrations\/classic-api-integration\/3d-secure-authentication\/native-3ds2\/ios-sdk-integration#get-the-3d-secure-2-device-fingerprint\">create a transaction in the iOS SDK<\/a> or <a href=\"\/pt\/online-payments\/classic-integrations\/classic-api-integration\/3d-secure-authentication\/native-3ds2\/android-sdk-integration#get-the-3d-secure-2-device-fingerprint\">create a transaction in the Android SDK<\/a>.<\/li>\n<li>\n<p>You need to include <a href=\"https:\/\/docs.adyen.com\/api-explorer\/#\/Payment\/latest\/post\/authorise__reqParam_threeDS2RequestData-messageVersion\" class=\"codeLabel external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\n  <code>threeDS2RequestData.messageVersion<\/code>\n<\/a> in your POST <a href=\"https:\/\/docs.adyen.com\/api-explorer\/#\/Payment\/authorise\" class=\"codeLabel external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/authorise<\/a> request. For example, set this parameter to <strong>2.1.0<\/strong>.<\/p>\n<p>The <code>threeDS2RequestData.messageVersion<\/code> 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 <code>additionalData.threeds2.threeDS2ResponseData.messageVersion<\/code> must still be the one used to initialize the 3D Secure 2 SDK; otherwise the transaction will fail.<\/p>\n<\/li>\n<\/ol>\n<h2 id=\"see-also\">See also<\/h2>\n<ul>\n<li><a href=\"https:\/\/github.com\/Adyen\/adyen-3ds2-ios\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Adyen 3DS2 iOS SDK<\/a> on GitHub<\/li>\n<li><a href=\"https:\/\/adyen.github.io\/adyen-3ds2-ios\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">iOS SDK Reference<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Adyen\/adyen-3ds2-android\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Adyen 3DS2 Android SDK<\/a> on GitHub<\/li>\n<li><a href=\"https:\/\/adyen.github.io\/adyen-3ds2-android\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Android SDK Reference<\/a><\/li>\n<\/ul>","url":"https:\/\/docs.adyen.com\/pt\/online-payments\/classic-integrations\/classic-api-integration\/3d-secure-authentication\/native-3ds2\/migrating-to-2-2","articleFields":{"description":"Find out how you can update your integration to the latest Android and iOS 3D Secure 2 SDKs.","robots":"noindex,nofollow","feedback_component":true,"parameters":{"anchor_new":"<a href=\/online-payments\/3d-secure\/native-3ds2>Native 3D Secure 2<\/a>","parent_page":"Classic API (<code>\/authorise<\/code>)","new_desc":"integrating using our Checkout APIs"},"sitemap":{"priority":0.3},"id":"42831227","type":"page","_expandable":{"operations":""},"status":"current","last_edit_on":"24-03-2023 13:20","filters_component":false},"algolia":{"url":"https:\/\/docs.adyen.com\/pt\/online-payments\/classic-integrations\/classic-api-integration\/3d-secure-authentication\/native-3ds2\/migrating-to-2-2","title":"Migrating to Adyen 3D Secure 2 SDK version 2.2.0 or later","content":"\nAdyen is no longer developing the Classic API integration\nThis page is for the Classic API (\/authorise) integration, which we no longer accept new integrations with. \nWe strongly recommend migrating to the newer Native 3D Secure 2 integration. To use this newer integration, you must also migrate to the Checkout API.\n\nEven 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.\nChanges in the new Adyen 3D Secure 2 SDK version 2.2.0 or later\nThese changes apply to version 2.2.0 or later for iOS and Android.\nSupported\n\n3D Secure protocol version 2.2.0 in addition to 2.1.0.\nSupport for new 3DS2 Directory Servers (e.g. card networks Cartes Bancaires, Diners, Discover, and Elo)\n\nSending your app URL in the threeDSRequestorAppURL parameter for out-of-band (OOB) authentication in in-app transactions.\nIn 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.\n\n\nRequired\n\nThe additionalData.threeds2.threeDS2ResponseData.messageVersion from the \/authorise response must be used to create a transaction in the iOS SDK or create a transaction in the Android SDK.\n\nMigrating to Adyen 3D Secure 2 SDK version 2.2.0 or later\n\n\nInstall the latest versions:\n\nAdyen 3DS2 iOS SDK version 2.2.0 or later\nAdyen 3DS2 Android SDK version 2.2.0 or later\n\n\n\n\nSend 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.\n\nFor iOS, call ADY3DS2SDKVersion() to get the version.\nFor Android, call ThreeDS2Service.INSTANCE.sdkVersion to get the version.\n\n\n\nTo make sure you use a protocol version that the issuing bank supports, you must get the additionalData.threeds2.threeDS2ResponseData.messageVersion from the \/authorise response and pass it on to your SDK when you create a transaction. Otherwise, the transaction can fail due to a version mismatch.\n\n\nUsing 3D Secure 2 protocol version 2.2.0 and later\nIf 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. If you specify a previous protocol version, the threeDSRequestorAppURL parameter is ignored.\nThe examples in the tabs below show how to specify the threeDSRequestorAppURL parameter in iOS and Android:\n\n\n    \n        \n        \n    \n\n\nUsing 3D Secure 2 protocol version earlier than 2.2.0\n If you want to use an earlier 3D Secure 2 protocol version:\n\nThe additionalData.threeds2.threeDS2ResponseData.messageVersion from the \/authorise response must be used to create a transaction in the iOS SDK or create a transaction in the Android SDK.\n\nYou need to include \n  threeDS2RequestData.messageVersion\n in your POST \/authorise request. For example, set this parameter to 2.1.0.\nThe 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.\n\n\nSee also\n\nAdyen 3DS2 iOS SDK on GitHub\niOS SDK Reference\nAdyen 3DS2 Android SDK on GitHub\nAndroid SDK Reference\n","type":"page","locale":"pt","boost":14,"hierarchy":{"lvl0":"Home","lvl1":"Online payments","lvl2":"Classic integrations for Ecommerce","lvl3":"Classic API integration","lvl4":"3D Secure authentication","lvl5":"Native 3D Secure 2 authentication","lvl6":"Migrating to Adyen 3D Secure 2 SDK version 2.2.0 or later"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/pt","lvl1":"https:\/\/docs.adyen.com\/pt\/online-payments","lvl2":"https:\/\/docs.adyen.com\/pt\/online-payments\/classic-integrations","lvl3":"https:\/\/docs.adyen.com\/pt\/online-payments\/classic-integrations\/classic-api-integration","lvl4":"https:\/\/docs.adyen.com\/pt\/online-payments\/classic-integrations\/classic-api-integration\/3d-secure-authentication","lvl5":"https:\/\/docs.adyen.com\/pt\/online-payments\/classic-integrations\/classic-api-integration\/3d-secure-authentication\/native-3ds2","lvl6":"\/pt\/online-payments\/classic-integrations\/classic-api-integration\/3d-secure-authentication\/native-3ds2\/migrating-to-2-2"},"levels":7,"category":"Online Payments","category_color":"green","tags":["Migrating","Adyen","Secure","version","2.2.0","later"]}}
