Интеграция с 3D Secure 2 API

Carding

Professional
Messages
2,871
Reaction score
2,331
Points
113
На этой странице
  • Как это устроено
  • Прежде чем вы начнете
  • Шаги интеграции
  • Шаг 1. Отправьте запрос на оплату
  • Шаг 2. Получите отпечаток пальца устройства 3D Secure 2
  • Шаг 3. Отправьте результат снятия отпечатков с устройства 3D Secure 2
  • Шаг 4. Представьте задачу
  • Шаг 5. Отправьте результат испытания
  • Настройки пользовательского интерфейса для приложений
  • Тестирование 3D Secure 2
  • Коды результатов
  • Причины отказа

Поддержка аутентификации 3D Secure 2 для веб-транзакций и транзакций в приложениях с интеграцией онлайн-платежей.
На этой странице описаны шаги интеграции 3D Secure 2 для версии 46 или более ранней версии. / платежи конечная точка. Если вы используете более позднюю версию, см. «Собственная аутентификация 3D Secure 2».

Как это устроено​

Если вы используете 3D Secure для соответствия PSD2, прочтите подробное руководство PSD2 SCA.
Платеж, отвечающий требованиям 3D Secure 2, может пройти либо беспрепятственную аутентификацию, либо аутентификацию с вызовом, прежде чем он будет авторизован. Чтобы упростить реализацию, используйте наш веб-компонент, компонент 3D Secure 2 для Android или iOS в дополнение к существующей интеграции с API.
Компоненты - это наши предварительно созданные модули, которые вы можете использовать для выполнения определенных функций, таких как аутентификация 3D Secure 2. Для реализации отправьте запросы API из вашего бэкэнда, а затем используйте наш компонент 3D Secure 2, чтобы:
  • Обработка идентификационных данных устройства и потоков запросов, включая обмен данными между внешним интерфейсом или клиентом и сервером управления доступом (ACS) эмитента.
  • Верните отпечаток устройства и результат потока запроса.
Если вы не хотите использовать компонент 3D Secure 2 и хотите самостоятельно создать веб-реализацию, см. Раздел Создание собственной реализации 3D Secure 2. Вы также можете выбрать предварительную загрузку ключей для снятия отпечатков пальцев с устройства 3D Secure 2, чтобы уменьшить количество вызовов для каждой транзакции.
Для реализации на основе приложений мы рекомендуем использовать наш компонент 3D Secure 2 для Android или iOS. Наши реализации компонентов 3D Secure 2 для Android и iOS одобрены и сертифицированы EMVCo. Если вы хотите создать собственную мобильную реализацию 3D Secure 2, вам потребуется пройти сертификацию EMVCo.
3D Secure 2 поддерживается начиная с версии 41 и выше. / платежи и / платежи / детали конечные точки.
Если вы хотите выполнить только аутентификацию 3D Secure 2, а затем авторизовать платеж позже, см. Страницу интеграции только для аутентификации .
Вот схема полной реализации 3D Secure 2 с компонентом 3D Secure 2:
3ds2-checkout-api.png

  • Отправьте запрос на оплату с необходимыми объектами 3D Secure 2, чтобы начать процесс аутентификации. Создайте свою реализацию в зависимости от того, что было resultCode возвращено в ответе.
  • Получите отпечаток пальца устройства 3D Secure 2. Если вы получаете IdentifyShopper resultCode, вам необходимо получить отпечаток пальца устройства 3D Secure 2 покупателя. Инициализируйте компонент 3D Secure 2 для снятия отпечатков пальцев с устройства и отправьте результат Adyen. Если после отправки результата вы получите ответ с авторизацией resultCode, это означает, что транзакция прошла аутентификацию без проблем и платеж был успешно завершен.
  • Бросьте вызов покупателю. Если вы получаете ChallengeShopper resultCode , это означает, что эмитент требует дальнейшего взаимодействия с покупателем и инициирует поток запроса . В веб-интеграции этот код результата может быть возвращен после отправки запроса на оплату или после отправки результата отпечатка пальца устройства в Adyen, в зависимости от логики на стороне эмитента. Чтобы обработать поток запросов, инициализируйте компонент 3D Secure 2 для потока запросов и отправьте результат Adyen.
В зависимости от производительности эмитента механизм аутентификации Adyen может также направлять платежи в поток 3D Secure 1. На это указывает ответ RedirectShopper resultCode. Для получения дополнительной информации см. Платежи, направляемые в 3D Secure 1.
Полный список resultCode значений и действий, которые необходимо предпринять, см. В разделе Коды результатов.

Прежде чем вы начнете​

Прежде чем вы сможете начать принимать транзакции 3D Secure 2, убедитесь, что вы:
  1. Зарегистрируйте тестовую учетную запись Adyen на https://www.adyen.com/signup.
  2. Получите свой API-ключ. Сохраните копию, поскольку она вам понадобится для вызовов API, которые вы совершаете на платежную платформу Adyen.
  3. Прочтите и усвойте руководство по интеграции компонентов. Вы уже должны знать, как собирать информацию о покупателях либо с помощью компонента «Карта», либо с помощью собственной реализации платежной формы.
  4. Установите компонент 3D Secure в зависимости от вашей текущей интеграции:
    • Если вы используете Adyen iOS и Adyen Android версии 3.0.0 и более поздних версий: используйте компоненты действий 3D Secure 2 для iOS или Android.
    • Если вы используете Adyen iOS и Adyen Android версии 2.xx или более ранней версии: используйте компоненты 3D Secure 2, описанные на этой странице.

Установите компонент 3D Secure 2 для Adyen iOS версий с 2.6.0 по 2.8.4.​

Импортируйте компонент iOS 3D Secure 2 в свой проект с помощью CocoaPods или Carthage:
Какао-стручки
  1. Добавьте pod 'Adyen' в свой Podfile.
  2. Беги pod install.
Карфаген
  1. Добавьте github "adyen/adyen-ios" в свой Cartfile.
  2. Беги carthage update.
  3. Свяжите фреймворк с вашей целью, как описано в Carthage Readme .

Установите компонент 3D Secure 2 для Adyen Android версий 2.4.0–2.4.5.
Импортируйте компонент Android 3D Secure 2, добавив эту строку в файл build.gradle.
Code:
implementation "com.adyen.checkout:threeds:<latest-version>"

Шаги интеграции​

  1. Соберите платежные данные карты покупателя с помощью существующей интеграции карт - будь то Drop-in, компонент карты или ваш собственный пользовательский интерфейс для интеграции только через API.
  2. Приступите к отправке платежного запроса.
  3. Используйте resultCode ответ из ответа, чтобы определить свое следующее действие. Например, чтобы завершить процесс аутентификации 3D Secure 2, вам может потребоваться получить отпечаток пальца устройства 3D Secure 2, или бросить вызов покупателю, или и то, и другое. Выберите этапы интеграции для Интернета, Android или iOS.
  4. Отправьте результат снятия отпечатков с устройства 3D Secure и, в случае возникновения проблемы, отправьте результат проверки.
Чтобы проверить свою интеграцию, см. Тестирование 3D Secure 2 .

Шаг 1. Отправьте запрос на оплату​

Отправьте запрос на платеж с помощью POST / платежи звонок с реквизитами карты покупателя. Включите следующие параметры, чтобы указать, что вы готовы принимать платежи с аутентификацией 3D Secure 2:
Имя параметраНеобходимыйОписание
paymentMethod
-white_check_mark-
Объект, содержащий данные карты покупателя. Включите имя держателя карты.
Если вы полностью совместимы с PCI, вы можете вместо этого передавать необработанные данные карты.
channel
-white_check_mark-
Укажите платформу, которую вы используете. Используйте Интернет , iOS или Android.
additionalData.allow3DS2
-white_check_mark-
Установите значение true . Указывает, что ваша интеграция может обрабатывать собственную аутентификацию 3D Secure 2.
browserInfo
-white_check_mark-
Объект, содержащий информацию о браузере покупателя.
  • Требуется полный объект для канала Интернета.
  • Для мобильных интеграции (канал IOS и Android), то userAgentи acceptHeaderполя обязательные для заполнения , чтобы указать , что ваша интеграция может обрабатывать 3D Secure 1 проверки подлинности редиректа в случае сделка будет направлена в 3D Secure 1. Если ваша мобильная интеграция не может генерировать эту информацию, вы можете отправить те же данные, что и в примерах кода ниже.
returnUrl
-white_check_mark-
В случае потока 3D Secure 1 это URL-адрес, на который покупатель будет перенаправлен обратно после завершения аутентификации 3D Secure 1. Этот URL-адрес может содержать не более 1024 символов. См. Раздел Форматы URL-адресов возврата для каждого канала.
originТребуется для channel Интернета. URL-адрес страницы, с которой вы загружаете компонент 3D Secure 2. Не originследует включать подкаталоги и косую черту в конце. Вы также можете получить это, открыв консоль браузера и позвонив window.location.origin.
shopperIPIP-адрес покупателя.
billingAddressПлатежный адрес держателя карты.
shopperEmailЭлектронный адрес держателя карты.

Форматы URL возврата
  • Для Интернета URL-адрес должен включать протокол: http://или https://. Например, https://your-company.com/checkout/.
  • Для iOS используйте настраиваемый URL-адрес для своего приложения. Например, my-app://. Дополнительные сведения о настройке пользовательских схем URL-адресов см. В документации Apple Developer.
  • Для Android, если вы используете Android SDK, получите URL-адрес из CheckoutSetupParameters.getReturnUrl(). В противном случае используйте настраиваемый URL-адрес, обрабатываемый Activity в вашем приложении. Вы можете настроить его с помощью фильтра намерений. Например, настройте my-app://your.package.name, а затем добавьте это в свой manifest.xmlфайл.
    Code:
    <activity
    android:name=".YourActivity">
    <intent-filter>
      <action android:name="android.intent.action.VIEW"/>
     
      <category android:name="android.intent.category.DEFAULT"/>
      <category android:name="android.intent.category.BROWSABLE"/>
     
      <data
        android:host="${applicationId}"
        android:scheme="my-app"/>
    </intent-filter>
    </activity>
Мы рекомендуем вам предоставить всю доступную информацию, чтобы повысить вероятность достижения беспрепятственного потока и более высокой степени авторизации. В дополнение к обычным параметрам, которые вы предоставляете Adyen, отправьте дополнительные параметры в этом списке.

Запрос
Образец запроса на оплату через Интернет
Code:
curl https://checkout-test.adyen.com/v66/payments \
-H "X-API-key: [Your API Key here]" \
-H "Content-Type: application/json" \
-d '{
  "amount":{
    "currency":"EUR",
    "value":1000
  },
  "reference":"YOUR_ORDER_NUMBER",
  "paymentMethod":{
    "type":"scheme",
    "encryptedCardNumber":"adyenjs_0_1_18$MT6ppy0FAMVMLH...",
    "encryptedExpiryMonth":"adyenjs_0_1_18$MT6ppy0FAMVMLH...",
    "encryptedExpiryYear":"adyenjs_0_1_18$MT6ppy0FAMVMLH...",
    "encryptedSecurityCode":"adyenjs_0_1_18$MT6ppy0FAMVMLH...",
    "holderName": "S. Hopper"
  },
  "additionalData" : {
     "allow3DS2" : true
  },
  "browserInfo":{
    "userAgent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/70.0.3538.110 Safari\/537.36",
    "acceptHeader":"text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/webp,image\/apng,*\/*;q=0.8",
    "language":"nl-NL",
    "colorDepth":24,
    "screenHeight":723,
    "screenWidth":1536,
    "timeZoneOffset":0,
    "javaEnabled": true
  },
  "shopperIP": "192.0.2.1",
  "channel" : "web",
  "origin" : "https://your-company.com/",
  "returnUrl" : "https://your-company.com/checkout/",
  "merchantAccount":"YOUR_MERCHANT_ACCOUNT"
}'

Ответ
Вы получите ответ, содержащий:
  • resultCode: IdentifyShopper или ChallengeShopper. Выполните снятие отпечатков пальцев соответствующего устройства 3D Secure или представьте поток вызовов. Если транзакция освобождена от 3D Secure 2, вы можете получить авторизованный resultCode .
  • threeds2.fingerprintToken или threeds2.challengeToken: Используйте это, чтобы запустить компонент 3D Secure 2. Если вы хотите узнать содержимое закодированной строки, см. Структуру полезной нагрузки.
  • paymentData: Используйте это для вашей следующей POST / платежи / детали запрос.
Некоторые эмитенты еще не готовы поддерживать 3D Secure 2 или имеют более высокую скорость авторизации для 3D Secure 1. Для оптимизации скорости авторизации механизм аутентификации Adyen направляет каждый платеж в поток 3D Secure 2 или 3D Secure 1 в зависимости от производительности эмитента. Чтобы справиться с этим сценарием, убедитесь, что вы реализовали поток аутентификации перенаправления.
Для получения информации о других возможных resultCode значениях и действиях, которые необходимо предпринять, см. Коды результатов.

Пример ответа с кодом результата IdentifyShopper:
Code:
{
  "resultCode": "IdentifyShopper",
  "authentication": {
    "threeds2.fingerprintToken": "eyJ0aH..."
  },
  "details": [
    {
      "key": "threeds2.fingerprint",
      "type": "text"
    }
  ],
  "paymentData": "Ab02b4c0!..."
}

Шаг 2. Получите отпечаток пальца устройства 3D Secure 2​

Если ваш сервер получает IdentifyShopper resultCode, выполните снятие отпечатков пальцев с устройства 3D Secure 2. Следуйте процедуре снятия отпечатков пальцев с устройства 3D Secure для Интернета, iOS или Android.

Соберите отпечаток пальца устройства 3D Secure 2 с помощью веб-компонента
Если вы используете версию 49 наших API с Adyen JS версии 3.1.0 и новее, используйте вместо этого createFromActionдля загрузки компонента 3D Secure 2.
  1. Убедитесь, что вы уже добавили файл JavaScript компонентов и необходимую конфигурацию на свою страницу платежей.
  2. Создайте элемент DOM.
    Code:
    <div id="threeDS2"></div>
  3. Запустите компонент 3D Secure 2 с помощью threeds2.fingerprintToken полученного от / платежи ответ, назначить функцию , чтобы обработать onComplete и onError события, и установите 3D Secure 2 компонента.
    Code:
    const threeDS2IdentifyShopper = checkout
            .create('threeDS2DeviceFingerprint', {
                fingerprintToken: resultObject.authentication['threeds2.fingerprintToken'],
                onComplete: function() {}, // Called whenever a result is available, regardless if the outcome is successful or not.
                onError: function() {} // Gets triggered on error.
            })
            .mount('#threeDS2');
  4. Когда onComplete событие запускается, получите результат и приступайте к отправке результата снятия отпечатков с устройства 3D Secure 2 .
    Если снятие отпечатков пальцев с устройства 3D Secure 2 не удалось, вызываются оба onCompleteи onError.
    Пример onCompleteобработчика событий
    Code:
    function onComplete(fingerprintData) {
        fingerprintResult = fingerprintData.data.details["threeds2.fingerprint"];
    }

Получите отпечаток устройства 3D Secure 2 из приложения iOS.
Если вы используете версию 49 наших API-интерфейсов с Adyen iOS версии 3.0.0 и более поздних версий, используйте вместо этого компонент действий 3D Secure 2.
  1. Создайте Card3DS2Authenticator экземпляр.
    Code:
    let authenticator = Card3DS2Authenticator()
  2. Создайте отпечаток пальца с помощью threeds2.fingerprintToken полученного от / платежи отклик.
    Code:
    authenticator.createFingerprint(usingToken: fingerprintToken) { result in
         switch result {
         case let .success(fingerprint):
              // Submit fingerprint
         case let .failure(error):
              // Handle error
         }
    }
  3. Если success событие запускается, перейдите к отправке результата снятия отпечатков с устройства 3D Secure 2 с переданным значением success. В противном случае обработайте failure событие. failure Событие будет срабатывать в случае тайма - аута, аннулирования пользователя или сбоев системы, такие как ошибка проверки сертификата или недействительный ответ от эмитента.

Получите отпечаток устройства 3D Secure 2 из приложения для Android.
Если вы используете версию 49 наших API-интерфейсов с Adyen Android версии 3.0.0 и более поздних версий, используйте вместо этого компонент действий 3D Secure 2 .
  1. Создайте Card3DS2Authenticatorэкземпляр и передайте текущий контекст.
    Code:
    mCard3DS2Authenticator = new Card3DS2Authenticator(/* Activity */ this);
  2. Создайте отпечаток пальца с помощью threeds2.fingerprintTokenполученного от/ платежи отклик.
    Code:
    mCard3DS2Authenticator.createFingerprint(fingerprintToken, new Card3DS2Authenticator.FingerprintListener() {
    @Override
    public void onSuccess(@NonNull String fingerprint) {
        // Submit fingerprint
    }
     
    @Override
    public void onFailure(@NonNull ThreeDS2Exception e) {
        mCard3DS2Authenticator.release();
        // Handle error
    }
    });
  3. Если onSuccess событие инициировано, перейдите к отправке результатов снятия отпечатков с устройства 3D Secure 2. В противном случае обработайте onFailure событие. onFailureСобытие будет срабатывать в случае тайма - аута, аннулирования пользователя или сбоев системы , такие как ошибка проверки сертификата или недействительный ответ от эмитента.

Шаг 3. Отправьте результат снятия отпечатков с устройства 3D Secure 2​

Сделать ЗАПИСЬ / платежи / детали запрос с вашего сервера с details объектом и paymentData параметрами as.
  • threeds2.fingerprint: Передать fingerprintResult из onComplete обработчика событий для Интернета, success из iOS или onSuccess для обработчика событий Android.
  • paymentData: Передать paymentData из ответа о первоначальном платеже.

Запрос
Code:
{
  "details": {
    "threeds2.fingerprint": "eyJ0aHJlZURTQ29tcEluZCI6ICJZIn0="
  },
  "paymentData": "YOUR_PAYMENT_DATA..."
}

Ответ
Вы получите ответ, содержащий любое из следующего resultCode:
  • Авторизовано - это указывает на то, что транзакция была аутентифицирована без проблем , и платеж был успешно завершен. Это состояние служит индикатором продолжения поставки товаров и услуг.
  • ChallengeShopper - эмитент запросил дальнейшее взаимодействие с покупателем и инициирует поток запросов . Вы также получите то threeds2.challengeToken и то, paymentDataчто вам понадобится в ходе испытания. Если вы хотите узнать содержимое закодированной threeds2.challengeTokenстроки, см. Структуру полезной нагрузки.

Для получения информации о других возможных resultCode значениях и действиях, которые необходимо предпринять, см. коды результатов.
Code:
{
  "resultCode": "ChallengeShopper",
  "authentication": {
    "threeds2.challengeToken": "eyJ0aH..."
  },
  "details": [
    {
      "key": "threeds2.challengeResult",
      "type": "text"
    }
  ],
  "paymentData": "Ab02b4c0!..."
}

Шаг 4. Представьте задачу​

Если ваш сервер получает ChallengeShopper resultCode, это означает, что эмитент хотел бы выполнить дополнительные проверки, чтобы убедиться, что покупатель действительно является держателем карты. Следуйте процедуре проверки для Интернета, Android или iOS.

Представьте проблему с помощью веб-компонента
Если вы используете версию 49 наших API с Adyen JS версии 3.1.0 и новее, используйте вместо этого createFromActionдля загрузки компонента 3D Secure 2.
  1. Убедитесь, что вы уже добавили файл JavaScript компонентов и необходимую конфигурацию на свою страницу платежей.
  2. Создайте элемент DOM или повторно используйте существующий, если вы продолжаете процесс снятия отпечатков с устройства.
    Code:
    <div id="threeDS2"></div>
  3. Запустите компонент 3D Secure 2 с помощью threeds2.challengeToken полученного от / платежи ответ или от / платежи / детали если вы исходите из потока дактилоскопии устройства. Назначьте функцию , чтобы обработать onComplete и onError событие, установить размер окна вызова, а затем смонтировать 3D Secure 2 компонента.
    Code:
    const threeDS2Challenge = checkout
            .create('threeDS2Challenge', {
                challengeToken: resultObject.authentication['threeds2.challengeToken'],
                onComplete: function() {}, // Called whenever a result is available, regardless if the outcome is successful or not.
                onError: function() {}, // Gets triggered on error.
                challengeWindowSize: '05' // Defaults to '02'
            })
            .mount('#threeDS2');
    Установите challengeWindowSize любой из следующих идентификаторов:
    идентификаторразмер
    01250 пикселей x 400 пикселей
    02390 x 400 пикселей
    03500 x 600 пикселей
    04600 x 400 пикселей
    05100% х 100%
  4. Когда onCompleteсобытие запускается, всегда получайте результат и переходите к отправке результата проверки.
    Если поток вызова завершился неудачно, будут вызываться оба onCompleteи onError.
    Пример onCompleteобработчика событий
    Code:
    function onComplete(challengeData) {
        challengeResult = challengeData.data.details["threeds2.challengeResult"];
    }

Представьте задачу в приложении для iOS
Если вы используете версию 49 наших API-интерфейсов с Adyen iOS версии 3.0.0 и более поздних версий, используйте вместо этого компонент действий 3D Secure 2.
  1. Используйте тот же Card3DS2Authenticator экземпляр из процесса снятия отпечатков пальцев с устройства 3D Secure. Передайте threeds2.challengeToken полученный от / платежи / детали к presentChallenge() функции.
    Code:
    authenticator.presentChallenge(usingToken: challengeToken) { result in
         switch result {
         case let .success(challengeResult):
              let payload = challengeResult.payload
              // Submit challenge result payload
         case let .failure(error):
              // Handle error
         }
    }
  2. Если success событие запускается, переходите к представить результат вызов с payload значением, переданным в challengeResult о success событии. В противном случае обработайте failure событие. failure Событие будет срабатывать в случае тайма - аута, аннулирования пользователя или сбоев системы, такие как ошибка проверки сертификата или недействительный ответ от эмитента.

Представьте задачу в приложении для Android
Если вы используете версию 49 наших API-интерфейсов с Adyen Android версии 3.0.0 и более поздних версий, используйте вместо этого компонент действий 3D Secure 2.
  1. Передайте threeds2.challengeToken полученный от / платежи / детали к Card3DS2Authenticator.
    Code:
    mCard3DS2Authenticator.presentChallenge(challengeToken, new Card3DS2Authenticator.SimpleChallengeListener() {
    @Override
    public void onSuccess(@NonNull ChallengeResult challengeResult) {
        mCard3DS2Authenticator.release();
        String payload = challengeResult.getPayload();
        // Pass the challenge result payload
    }
     
    @Override
    public void onFailure(@NonNull ThreeDS2Exception e) {
        mCard3DS2Authenticator.release();
        // Handle error
    }
    });
  2. Если onSuccess событие запускается, переходите к представить результат вызов с payloadзначением, переданным в challengeResultо onSuccessсобытии. В противном случае обработайте onFailure событие. onFailureСобытие будет срабатывать в случае тайма - аута, аннулирования пользователя или сбоев системы, такие как ошибка проверки сертификата или недействительный ответ от эмитента.

Шаг 5. Отправьте результат испытания​

Сделать ЗАПИСЬ / платежи / детали запрос с вашего сервера и включить details и paymentData параметры as.
  • threeds2.challengeResult: Передать результат из challengeResult из onComplete обработчика событий для веб - сайтов, onSuccess для Android, или payload значение в challengeResult из success обработчика событий IOS.
  • paymentData: Это paymentData из последнего ответа API, либо из / платежи или из / платежи / детали ответ, если вы исходите из потока снятия отпечатков с устройства.

Запрос
Code:
{
  "details": {
    "threeds2.challengeResult": "eyJ0cmFuc1N0YXR1cyI6IlkifQ=="
  },
  "paymentData": "YOUR_PAYMENT_DATA"
}

Ответ
Вы будете получать Авторизованный как resultCode если платеж был успешным.
Code:
{
    "pspReference": "8825495331860022",
    "resultCode": "Authorised"
}

Настройки пользовательского интерфейса для приложений​

Настройка пользовательского интерфейса iOS
Компонент 3D Secure 2 для Adyen iOS версии 2.xx наследует тему вашего приложения, чтобы пользовательский интерфейс потока испытаний соответствовал внешнему виду вашего приложения. Если вам требуются дополнительные настройки пользовательского интерфейса, компонент предоставляет некоторые параметры настройки через ADYAppearanceConfigurationкласс.
Чтобы настроить пользовательский интерфейс, создайте экземпляр ADYAppearanceConfiguration, настройте желаемые свойства и передайте его во время инициализации Card3DS2Authenticator.
Code:
let appearanceConfiguration = ADYAppearanceConfiguration()
// Customize properties of appearanceConfiguration.
 
let authenticator = Card3DS2Authenticator(appearanceConfiguration: appearanceConfiguration)

Ознакомьтесь со справочной документацией класса ADYAppearanceConfiguration для получения полного списка настраиваемых свойств.

Настройка пользовательского интерфейса Android
Настроить тему SDK
Компонент 3D Secure 2 для Adyen Android версии 2.xx наследует тему вашего приложения, чтобы пользовательский интерфейс потока испытаний соответствовал внешнему виду вашего приложения. Вы можете переопределить тему SDK по умолчанию, чтобы унаследовать ее от одного из вариантов темы AppCompat. Для этого добавьте в файл следующий фрагмент XML styles.xml.
Code:
<style name="ThreeDS2Theme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize the SDK theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

Использование класса UiCustomization
Если вам требуются дополнительные настройки пользовательского интерфейса, компонент 3D Secure 2 для Adyen Android версии 2.xx предоставляет некоторые параметры настройки через UiCustomization класс.
Чтобы использовать UiCustomization класс, создайте экземпляр UiCustomization, настройте желаемые свойства и передайте его во время инициализации Card3DS2Authenticator.
mCard3DS2Authenticator = new Card3DS2Authenticator(/* Activity */ this, uiCustomization);
Ознакомьтесь со справочной документацией по классу UiCustomization для получения полного списка настраиваемых свойств.

Тестирование 3D Secure 2​

Чтобы проверить, как ваша интеграция обрабатывает различные сценарии аутентификации 3D Secure 2, используйте номера наших тестовых карточек.
При появлении запроса на ввод текста 3D Secure 2 используйте следующие учетные данные:
  • Для мобильного используйте пароль: 1234
  • Для Интернета используйте пароль: пароль
Тип картыНомер картыДата истечения срока действияКод безопасности (CVC / CVV / CID)
American Express3714 4963 5398 43103/20307373
Cartes Bancaires4035 5014 2814 630003/2030737
Закусочные3056 9309 0259 0403/2030737
Обнаружить6011 1111 1111 111703/2030737
Маэстро5000 5500 0000 002903/2030н / д
Mastercard5454 5454 5454 545403/2030737
Visa4917 6100 0000 000003/2030737

Когда вы делаете запрос на оплату с помощью этих карт, вы получите следующие коды результатов в зависимости от вашей интеграции:
  • RedirectShopper : вы получите этот код результата, если используете аутентификацию Redirect.
  • IdentifyShopper : вы получите этот код результата, если используете встроенную аутентификацию.
  • ChallengeShopper : вы получите этот код результата после того, как отправите результат снятия отпечатков с устройства 3D Secure 2 в нативной аутентификации, если вы не укажете беспрепятственный поток.

Чтобы протестировать веб-поток, в котором этап снятия отпечатков с устройства пропускается (поскольку ACS эмитента не настроил a threeDSMethodURL), и вы получаете ChallengeShopper resultCode сразу после отправки запроса на оплату, используйте следующую карту:
Тип картыНомер картыДата истечения срока действияКод безопасности (CVC / CVV / CID)
Visa4212 3456 7891 000603/2030737

Чтобы проверить поток без трения, в котором вы снимаете отпечаток пальца, но не выполняете испытание, используйте следующий номер тестовой карты:
Номер картыДата истечения срока действияКод безопасности (CVC / CVV / CID)Сценарий аутентификации
5201 2815 0512 973603/2030737Отпечаток пальца, но без проблем

Интеграция на основе приложений​

Чтобы протестировать различные сценарии аутентификации для интеграции на основе приложений, используйте следующие тестовые карты:
Номер картыДата истечения срока действияКод безопасности (CVC / CVV / CID)Сценарий аутентификации
5201 2855 6567 231103/2030737Обычная текстовая аутентификация
5201 2874 9905 200803/2030737Базовый одиночный выбор
5201 2815 9233 163303/2030737Базовый множественный выбор
5201 2888 2269 697403/2030737Базовая внеполосная (OOB) аутентификация
5201 2895 0084 326803/2030737HTML-аутентификация OOB
5201 2861 5377 146503/2030737Одно приложение выберите, затем текстовую аутентификацию

Другие сценарии
Номер картыДата истечения срока действияКод безопасности (CVC / CVV / CID)Сценарий
4199 3500 0000 000203/2030737Карта не предназначена для транзакций 3D Secure.
5201 2829 9900 551503/2030737Произошла техническая ошибка. Эта тестовая карта имитирует тайм-аут во время аутентификации 3D Secure 2 на стороне эмитента. В зависимости от вашей конфигурации транзакция может пройти до успешной авторизации.

Коды результатов​

Используйте коды результатов, чтобы понять текущее состояние платежа.
У каждого платежа есть значок, resultCodeкоторый представляет его текущее состояние, а также любые действия, которые вы должны предпринять.
Вы можете вызвать желаемое resultCodeв своем ответе. Это полезно, когда вы хотите протестировать сценарии, отличные от счастливого пути. Для получения дополнительной информации см. Тестирование кода результата.
resultCodeОписаниеДействия, которые необходимо предпринять
АутентификацияЗавершенаПлатеж успешно прошел аутентификацию с помощью 3D Secure.
Этот код результата применяется к автономным интеграциям только для аутентификации .
Соберите данные аутентификации 3D Secure 2, которые потребуются для авторизации платежа.
AuthenticationNotRequiredТранзакция не требует аутентификации 3D Secure, например, банк-эмитент не требует аутентификации или транзакция выходит за рамки.
Проверьте authenticationNotRequiredReasonпараметр, чтобы узнать, почему аутентификация была пропущена.
Этот код результата применяется к автономным интеграциям только для аутентификации.
Поскольку для транзакции аутентификация не требуется, вы уже можете приступить к авторизации платежа.
АвторизованныйПлатеж успешно авторизован.Сообщите покупателю, что оплата прошла успешно.
ОтмененоПлатеж был отменен (покупателем или вашей собственной системой) до завершения обработки.Сообщите покупателю, что его платеж был отменен.
Свяжитесь с покупателем, чтобы узнать, хочет ли он продолжить свой заказ.
ВызовШопперЭмитент требует дальнейшего взаимодействия с покупателем, прежде чем платеж может быть аутентифицирован. Возврат по транзакциям 3D Secure 2.Представьте процесс проверки покупателю и отправьте результат Адиен.
ОшибкаПри обработке платежа произошла ошибка.
refusalReasonВ том же ответе вы получите ответ с указанием причины ошибки. Мы не рекомендуем раскрывать покупателю причину отказа. Для получения дополнительной информации см. Причины отказа.
Сообщите покупателю, что при обработке платежа произошла ошибка.
Для получения дополнительной информации о том, что вызвало ошибку, обратитесь в службу поддержки.
IdentifyShopperЭмитент требует отпечаток пальца устройства покупателя, прежде чем платеж может быть аутентифицирован. Возврат по транзакциям 3D Secure 2.Инициирует 3D Secure отпечатков пальцев 2 устройства процесса и представить результат в Adyen.
В ожиданииВ настоящее время невозможно узнать окончательный статус платежа.
Это обычное дело для платежей с асинхронным потоком, таких как Boleto, iDEAL или Klarna.
Сообщите покупателю, что вы получили его заказ и ждете завершения оплаты.
Когда покупатель завершит оплату, вы получите уведомление об успешной АВТОРИЗАЦИИ .
Для завершения некоторых платежей могут потребоваться минуты, часы или даже дни.
PresentToShopperПредъявите покупателю купон или QR-код.Сообщите покупателю, что вы получили его заказ и ждете завершения оплаты.
Когда покупатель завершит оплату, вы получите уведомление об успешной АВТОРИЗАЦИИ .
ПолученоЭто часть стандартного потока платежей для таких методов, как SEPA Direct Debit, где может пройти некоторое время, прежде чем станет известен окончательный статус платежа.Сообщите покупателю, что вы получили его заказ и ожидаете оплаты.
Вы получите окончательный результат платежа в уведомлении АВТОРИЗАЦИЯ .
Обработка некоторых платежей может занять минуты, часы или даже дни.
RedirectShopperЧтобы совершить платеж, покупателя необходимо перенаправить на внешнюю веб-страницу или в приложение.Перенаправьте покупателя на совершение платежа.
ОтказВ оплате было отказано.
refusalReasonВ том же ответе вы получите ответ, в котором будет указано, почему он был отклонен. Мы не рекомендуем раскрывать покупателю причину отказа. Для получения дополнительной информации см. Причины отказа.
Сообщите покупателю, что его платеж был отклонен, и попросите его повторить попытку платежа, например, используя другой способ оплаты или другую карту.

Причины отказа​

Узнайте о причинах отказа в авторизации платежа.

Причины отказа от тестирования
Вы можете вызвать эти причины отказа в тестовой среде по их значениям refusalReasonCode.
Если ваш запрос на авторизацию платежа не был успешным, ответ возвращает код состояния HTTP 200/OKи включает в себя resultCode значение «Отказано», «Ошибка» или «Отменено».
Кроме того, ответ содержит refusalReason поле с коротким сообщением, объясняющее, почему платеж был отклонен, а также refusalReasonCode(в Checkout API Только).

Возможные refusalReason значения перечислены ниже.
отказПричина отказаОписание
2ОтказаласьВ сделке было отказано.
3НаправленияРефералы.
4Ошибка эквайераТранзакция не состоялась из-за ошибки, произошедшей на стороне эквайера.
5Заблокированная картаКарта, использованная для транзакции, заблокирована, поэтому ее нельзя использовать.
6Истек срок действия картыСрок действия карты, использованной для транзакции, истек. Следовательно, он непригоден для использования.
7Недопустимая суммаНесоответствие суммы произошло во время процесса транзакции.
8Не верный номер картыУказанный номер карты неверен или недействителен.
9Эмитент недоступенНевозможно связаться с банком покупателя для авторизации транзакции.
10Не поддерживаетсяБанк покупателя не поддерживает или не разрешает этот тип транзакции.
113D не аутентифицированАутентификация 3D Secure не была выполнена или не была выполнена успешно.
12Недостаточный балансНа карте недостаточно денег для покрытия подлежащей оплате суммы.
14Мошенничество со стороны эквайераВозможное мошенничество.
15ОтмененоСделка отменена.
16Покупатель отмененПокупатель отменил транзакцию до ее завершения.
17Неверный PIN-кодУказанный PIN-код неверен или недействителен.
18Превышено количество попыток ввода PIN-кодаПокупатель указывал неверный PIN-код более трех раз подряд.
19Проверка PIN-кода невозможнаПодтвердить указанный ПИН-код невозможно.
20МОШЕННИЧЕСТВОВозможное мошенничество.
21Не представленТранзакция не была правильно отправлена в обработку.
22ОТМЕНА МОШЕННИЧЕСТВАПроверка риска пометила транзакцию как мошенническую (оценка риска> = 100); следовательно, операция отменяется.
23Транзакция не разрешенаЭтой причине отказа сопоставляются следующие отклоненные коды:
  • «57: Транзакция не разрешена эмитенту / держателю карты»
  • «57: транзакция не разрешена для этого продавца»
  • «58: Операция не разрешена эквайеру / терминалу»
24CVC отклоненУказанный CVC (код безопасности карты) недействителен.
25Карта с ограниченным доступомЭтой причине отказа сопоставлены следующие коды отказа:
  • «62: Карта с ограниченным доступом»
  • «62: Недействительная карта в этой стране»
26Отзыв авторизацииУказывает, что покупатель запросил прекращение подписки.
Коды отклонения, такие как следующие, сопоставляются с этой причиной отказа:
  • «R1: Отмена приказа об авторизации»
  • «R3: Аннулирование всех разрешений»
  • «R0: Остановить платежное поручение»
27Отклонено не универсальноеЭтот ответ отображает все те коды ответов, которые нельзя надежно сопоставить. Это позволяет легче отличить общие отклонения (например, ответ Mastercard « 05: Не соблюдать ») от более конкретных.
28Превышена сумма выводаПревышена разрешенная сумма снятия для карты покупателя.
29Превышено количество выводовПревышено допустимое количество снятий с карты покупателя.
31Подозрение эмитента в мошенничествеЭмитент сообщил о транзакции как о подозрении в мошенничестве.
32AVS отклоненАдресные данные, введенные покупателем, неверны.
33Для карты требуется онлайн-пин-кодБанк покупателя требует, чтобы покупатель ввел онлайн-PIN.
34На карте нет текущего счетаБанку покупателя требуется текущий счет для совершения покупки.
35 годНа карте нет сберегательного счетаБанку покупателя требуется сберегательный счет для совершения покупки.
36Требуется мобильный PIN-кодБанк покупателя требует от покупателя ввести PIN-код мобильного телефона.
37Бесконтактный откатПокупатель отказался от транзакции после попытки бесконтактного платежа, и ему было предложено попробовать другой метод ввода карты (PIN-код или смахивание).
38Требуется авторизацияЭмитент отклонил запрос исключения аутентификации и требует аутентификации для транзакции. Повторите попытку с 3D Secure.
39RReq не получен от DSПокупатель неправильно заполнил 3D Secure 2.
 
Top