Carding
Professional
- Messages
- 2,871
- Reaction score
- 2,331
- Points
- 113
На этой странице
Поддержка аутентификации 3D Secure 2 для веб-транзакций и транзакций в приложениях с интеграцией онлайн-платежей.
На этой странице описаны шаги интеграции 3D Secure 2 для версии 46 или более ранней версии. / платежи конечная точка. Если вы используете более позднюю версию, см. «Собственная аутентификация 3D Secure 2».
Платеж, отвечающий требованиям 3D Secure 2, может пройти либо беспрепятственную аутентификацию, либо аутентификацию с вызовом, прежде чем он будет авторизован. Чтобы упростить реализацию, используйте наш веб-компонент, компонент 3D Secure 2 для Android или iOS в дополнение к существующей интеграции с API.
Компоненты - это наши предварительно созданные модули, которые вы можете использовать для выполнения определенных функций, таких как аутентификация 3D Secure 2. Для реализации отправьте запросы API из вашего бэкэнда, а затем используйте наш компонент 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:
Полный список resultCode значений и действий, которые необходимо предпринять, см. В разделе Коды результатов.
Какао-стручки
Установите компонент 3D Secure 2 для Adyen Android версий 2.4.0–2.4.5.
Импортируйте компонент Android 3D Secure 2, добавив эту строку в файл build.gradle.
Форматы URL возврата
Запрос
Образец запроса на оплату через Интернет
Ответ
Вы получите ответ, содержащий:
Для получения информации о других возможных resultCode значениях и действиях, которые необходимо предпринять, см. Коды результатов.
Пример ответа с кодом результата IdentifyShopper:
Соберите отпечаток пальца устройства 3D Secure 2 с помощью веб-компонента
Если вы используете версию 49 наших API с Adyen JS версии 3.1.0 и новее, используйте вместо этого createFromActionдля загрузки компонента 3D Secure 2.
Получите отпечаток устройства 3D Secure 2 из приложения iOS.
Если вы используете версию 49 наших API-интерфейсов с Adyen iOS версии 3.0.0 и более поздних версий, используйте вместо этого компонент действий 3D Secure 2.
Получите отпечаток устройства 3D Secure 2 из приложения для Android.
Если вы используете версию 49 наших API-интерфейсов с Adyen Android версии 3.0.0 и более поздних версий, используйте вместо этого компонент действий 3D Secure 2 .
Запрос
Ответ
Вы получите ответ, содержащий любое из следующего resultCode:
Для получения информации о других возможных resultCode значениях и действиях, которые необходимо предпринять, см. коды результатов.
Представьте проблему с помощью веб-компонента
Если вы используете версию 49 наших API с Adyen JS версии 3.1.0 и новее, используйте вместо этого createFromActionдля загрузки компонента 3D Secure 2.
Представьте задачу в приложении для iOS
Если вы используете версию 49 наших API-интерфейсов с Adyen iOS версии 3.0.0 и более поздних версий, используйте вместо этого компонент действий 3D Secure 2.
Представьте задачу в приложении для Android
Если вы используете версию 49 наших API-интерфейсов с Adyen Android версии 3.0.0 и более поздних версий, используйте вместо этого компонент действий 3D Secure 2.
Запрос
Ответ
Вы будете получать Авторизованный как resultCode если платеж был успешным.
Компонент 3D Secure 2 для Adyen iOS версии 2.xx наследует тему вашего приложения, чтобы пользовательский интерфейс потока испытаний соответствовал внешнему виду вашего приложения. Если вам требуются дополнительные настройки пользовательского интерфейса, компонент предоставляет некоторые параметры настройки через ADYAppearanceConfigurationкласс.
Чтобы настроить пользовательский интерфейс, создайте экземпляр ADYAppearanceConfiguration, настройте желаемые свойства и передайте его во время инициализации Card3DS2Authenticator.
Ознакомьтесь со справочной документацией класса ADYAppearanceConfiguration для получения полного списка настраиваемых свойств.
Настройка пользовательского интерфейса Android
Настроить тему SDK
Компонент 3D Secure 2 для Adyen Android версии 2.xx наследует тему вашего приложения, чтобы пользовательский интерфейс потока испытаний соответствовал внешнему виду вашего приложения. Вы можете переопределить тему SDK по умолчанию, чтобы унаследовать ее от одного из вариантов темы AppCompat. Для этого добавьте в файл следующий фрагмент XML styles.xml.
Использование класса UiCustomization
Если вам требуются дополнительные настройки пользовательского интерфейса, компонент 3D Secure 2 для Adyen Android версии 2.xx предоставляет некоторые параметры настройки через UiCustomization класс.
Чтобы использовать UiCustomization класс, создайте экземпляр UiCustomization, настройте желаемые свойства и передайте его во время инициализации Card3DS2Authenticator.
mCard3DS2Authenticator = new Card3DS2Authenticator(/* Activity */ this, uiCustomization);
Ознакомьтесь со справочной документацией по классу UiCustomization для получения полного списка настраиваемых свойств.
При появлении запроса на ввод текста 3D Secure 2 используйте следующие учетные данные:
Когда вы делаете запрос на оплату с помощью этих карт, вы получите следующие коды результатов в зависимости от вашей интеграции:
Чтобы протестировать веб-поток, в котором этап снятия отпечатков с устройства пропускается (поскольку ACS эмитента не настроил a threeDSMethodURL), и вы получаете ChallengeShopper resultCode сразу после отправки запроса на оплату, используйте следующую карту:
Чтобы проверить поток без трения, в котором вы снимаете отпечаток пальца, но не выполняете испытание, используйте следующий номер тестовой карты:
Другие сценарии
У каждого платежа есть значок, resultCodeкоторый представляет его текущее состояние, а также любые действия, которые вы должны предпринять.
Вы можете вызвать желаемое resultCodeв своем ответе. Это полезно, когда вы хотите протестировать сценарии, отличные от счастливого пути. Для получения дополнительной информации см. Тестирование кода результата.
Причины отказа от тестирования
Вы можете вызвать эти причины отказа в тестовой среде по их значениям refusalReasonCode.
Если ваш запрос на авторизацию платежа не был успешным, ответ возвращает код состояния HTTP 200/OKи включает в себя resultCode значение «Отказано», «Ошибка» или «Отменено».
Кроме того, ответ содержит refusalReason поле с коротким сообщением, объясняющее, почему платеж был отклонен, а также refusalReasonCode(в Checkout API Только).
Возможные refusalReason значения перечислены ниже.
- Как это устроено
- Прежде чем вы начнете
- Шаги интеграции
- Шаг 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 для 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:

- Отправьте запрос на оплату с необходимыми объектами 3D Secure 2, чтобы начать процесс аутентификации. Создайте свою реализацию в зависимости от того, что было resultCode возвращено в ответе.
- Получите отпечаток пальца устройства 3D Secure 2. Если вы получаете IdentifyShopper resultCode, вам необходимо получить отпечаток пальца устройства 3D Secure 2 покупателя. Инициализируйте компонент 3D Secure 2 для снятия отпечатков пальцев с устройства и отправьте результат Adyen. Если после отправки результата вы получите ответ с авторизацией resultCode, это означает, что транзакция прошла аутентификацию без проблем и платеж был успешно завершен.
- Бросьте вызов покупателю. Если вы получаете ChallengeShopper resultCode , это означает, что эмитент требует дальнейшего взаимодействия с покупателем и инициирует поток запроса . В веб-интеграции этот код результата может быть возвращен после отправки запроса на оплату или после отправки результата отпечатка пальца устройства в Adyen, в зависимости от логики на стороне эмитента. Чтобы обработать поток запросов, инициализируйте компонент 3D Secure 2 для потока запросов и отправьте результат Adyen.
Полный список resultCode значений и действий, которые необходимо предпринять, см. В разделе Коды результатов.
Прежде чем вы начнете
Прежде чем вы сможете начать принимать транзакции 3D Secure 2, убедитесь, что вы:- Зарегистрируйте тестовую учетную запись Adyen на https://www.adyen.com/signup.
- Получите свой API-ключ. Сохраните копию, поскольку она вам понадобится для вызовов API, которые вы совершаете на платежную платформу Adyen.
- Прочтите и усвойте руководство по интеграции компонентов. Вы уже должны знать, как собирать информацию о покупателях либо с помощью компонента «Карта», либо с помощью собственной реализации платежной формы.
- Установите компонент 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:Какао-стручки
- Добавьте pod 'Adyen' в свой Podfile.
- Беги pod install.
- Добавьте github "adyen/adyen-ios" в свой Cartfile.
- Беги carthage update.
- Свяжите фреймворк с вашей целью, как описано в 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>"
Шаги интеграции
- Соберите платежные данные карты покупателя с помощью существующей интеграции карт - будь то Drop-in, компонент карты или ваш собственный пользовательский интерфейс для интеграции только через API.
- Приступите к отправке платежного запроса.
- Используйте resultCode ответ из ответа, чтобы определить свое следующее действие. Например, чтобы завершить процесс аутентификации 3D Secure 2, вам может потребоваться получить отпечаток пальца устройства 3D Secure 2, или бросить вызов покупателю, или и то, и другое. Выберите этапы интеграции для Интернета, Android или iOS.
- Отправьте результат снятия отпечатков с устройства 3D Secure и, в случае возникновения проблемы, отправьте результат проверки.
Шаг 1. Отправьте запрос на оплату
Отправьте запрос на платеж с помощью POST / платежи звонок с реквизитами карты покупателя. Включите следующие параметры, чтобы указать, что вы готовы принимать платежи с аутентификацией 3D Secure 2:Имя параметра | Необходимый | Описание |
---|---|---|
paymentMethod | ![]() | Объект, содержащий данные карты покупателя. Включите имя держателя карты. Если вы полностью совместимы с PCI, вы можете вместо этого передавать необработанные данные карты. |
channel | ![]() | Укажите платформу, которую вы используете. Используйте Интернет , iOS или Android. |
additionalData.allow3DS2 | ![]() | Установите значение true . Указывает, что ваша интеграция может обрабатывать собственную аутентификацию 3D Secure 2. |
browserInfo | ![]() | Объект, содержащий информацию о браузере покупателя.
|
returnUrl | ![]() | В случае потока 3D Secure 1 это URL-адрес, на который покупатель будет перенаправлен обратно после завершения аутентификации 3D Secure 1. Этот URL-адрес может содержать не более 1024 символов. См. Раздел Форматы URL-адресов возврата для каждого канала. |
origin | Требуется для channel Интернета. URL-адрес страницы, с которой вы загружаете компонент 3D Secure 2. Не originследует включать подкаталоги и косую черту в конце. Вы также можете получить это, открыв консоль браузера и позвонив window.location.origin. | |
shopperIP | IP-адрес покупателя. | |
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>
Запрос
Образец запроса на оплату через Интернет
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 / платежи / детали запрос.
Для получения информации о других возможных 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.
- Убедитесь, что вы уже добавили файл JavaScript компонентов и необходимую конфигурацию на свою страницу платежей.
- Создайте элемент DOM.
Code:<div id="threeDS2"></div>
- Запустите компонент 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');
- Когда onComplete событие запускается, получите результат и приступайте к отправке результата снятия отпечатков с устройства 3D Secure 2 .
Если снятие отпечатков пальцев с устройства 3D Secure 2 не удалось, вызываются оба onCompleteи onError.
3D Secure 2 API integration | Adyen Docs
Support 3D Secure 2 authentication for web and in-app transactions with your online payments integration.docs.adyen.com
Code:function onComplete(fingerprintData) { fingerprintResult = fingerprintData.data.details["threeds2.fingerprint"]; }
Получите отпечаток устройства 3D Secure 2 из приложения iOS.
Если вы используете версию 49 наших API-интерфейсов с Adyen iOS версии 3.0.0 и более поздних версий, используйте вместо этого компонент действий 3D Secure 2.
- Создайте Card3DS2Authenticator экземпляр.
Code:let authenticator = Card3DS2Authenticator()
- Создайте отпечаток пальца с помощью threeds2.fingerprintToken полученного от / платежи отклик.
Code:authenticator.createFingerprint(usingToken: fingerprintToken) { result in switch result { case let .success(fingerprint): // Submit fingerprint case let .failure(error): // Handle error } }
- Если success событие запускается, перейдите к отправке результата снятия отпечатков с устройства 3D Secure 2 с переданным значением success. В противном случае обработайте failure событие. failure Событие будет срабатывать в случае тайма - аута, аннулирования пользователя или сбоев системы, такие как ошибка проверки сертификата или недействительный ответ от эмитента.
Получите отпечаток устройства 3D Secure 2 из приложения для Android.
Если вы используете версию 49 наших API-интерфейсов с Adyen Android версии 3.0.0 и более поздних версий, используйте вместо этого компонент действий 3D Secure 2 .
- Создайте Card3DS2Authenticatorэкземпляр и передайте текущий контекст.
Code:mCard3DS2Authenticator = new Card3DS2Authenticator(/* Activity */ this);
- Создайте отпечаток пальца с помощью 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 } });
- Если 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.
- Убедитесь, что вы уже добавили файл JavaScript компонентов и необходимую конфигурацию на свою страницу платежей.
- Создайте элемент DOM или повторно используйте существующий, если вы продолжаете процесс снятия отпечатков с устройства.
Code:<div id="threeDS2"></div>
- Запустите компонент 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');
идентификатор размер 01 250 пикселей x 400 пикселей 02 390 x 400 пикселей 03 500 x 600 пикселей 04 600 x 400 пикселей 05 100% х 100% - Когда onCompleteсобытие запускается, всегда получайте результат и переходите к отправке результата проверки.
Если поток вызова завершился неудачно, будут вызываться оба onCompleteи onError.
3D Secure 2 API integration | Adyen Docs
Support 3D Secure 2 authentication for web and in-app transactions with your online payments integration.docs.adyen.com
Code:function onComplete(challengeData) { challengeResult = challengeData.data.details["threeds2.challengeResult"]; }
Представьте задачу в приложении для iOS
Если вы используете версию 49 наших API-интерфейсов с Adyen iOS версии 3.0.0 и более поздних версий, используйте вместо этого компонент действий 3D Secure 2.
- Используйте тот же 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 } }
- Если success событие запускается, переходите к представить результат вызов с payload значением, переданным в challengeResult о success событии. В противном случае обработайте failure событие. failure Событие будет срабатывать в случае тайма - аута, аннулирования пользователя или сбоев системы, такие как ошибка проверки сертификата или недействительный ответ от эмитента.
Представьте задачу в приложении для Android
Если вы используете версию 49 наших API-интерфейсов с Adyen Android версии 3.0.0 и более поздних версий, используйте вместо этого компонент действий 3D Secure 2.
- Передайте 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 } });
- Если 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 Express | 3714 4963 5398 431 | 03/2030 | 7373 |
Cartes Bancaires | 4035 5014 2814 6300 | 03/2030 | 737 |
Закусочные | 3056 9309 0259 04 | 03/2030 | 737 |
Обнаружить | 6011 1111 1111 1117 | 03/2030 | 737 |
Маэстро | 5000 5500 0000 0029 | 03/2030 | н / д |
Mastercard | 5454 5454 5454 5454 | 03/2030 | 737 |
Visa | 4917 6100 0000 0000 | 03/2030 | 737 |
Когда вы делаете запрос на оплату с помощью этих карт, вы получите следующие коды результатов в зависимости от вашей интеграции:
- RedirectShopper : вы получите этот код результата, если используете аутентификацию Redirect.
- IdentifyShopper : вы получите этот код результата, если используете встроенную аутентификацию.
- ChallengeShopper : вы получите этот код результата после того, как отправите результат снятия отпечатков с устройства 3D Secure 2 в нативной аутентификации, если вы не укажете беспрепятственный поток.
Чтобы протестировать веб-поток, в котором этап снятия отпечатков с устройства пропускается (поскольку ACS эмитента не настроил a threeDSMethodURL), и вы получаете ChallengeShopper resultCode сразу после отправки запроса на оплату, используйте следующую карту:
Тип карты | Номер карты | Дата истечения срока действия | Код безопасности (CVC / CVV / CID) |
---|---|---|---|
Visa | 4212 3456 7891 0006 | 03/2030 | 737 |
Чтобы проверить поток без трения, в котором вы снимаете отпечаток пальца, но не выполняете испытание, используйте следующий номер тестовой карты:
Номер карты | Дата истечения срока действия | Код безопасности (CVC / CVV / CID) | Сценарий аутентификации |
---|---|---|---|
5201 2815 0512 9736 | 03/2030 | 737 | Отпечаток пальца, но без проблем |
Интеграция на основе приложений
Чтобы протестировать различные сценарии аутентификации для интеграции на основе приложений, используйте следующие тестовые карты:Номер карты | Дата истечения срока действия | Код безопасности (CVC / CVV / CID) | Сценарий аутентификации |
---|---|---|---|
5201 2855 6567 2311 | 03/2030 | 737 | Обычная текстовая аутентификация |
5201 2874 9905 2008 | 03/2030 | 737 | Базовый одиночный выбор |
5201 2815 9233 1633 | 03/2030 | 737 | Базовый множественный выбор |
5201 2888 2269 6974 | 03/2030 | 737 | Базовая внеполосная (OOB) аутентификация |
5201 2895 0084 3268 | 03/2030 | 737 | HTML-аутентификация OOB |
5201 2861 5377 1465 | 03/2030 | 737 | Одно приложение выберите, затем текстовую аутентификацию |
Другие сценарии
Номер карты | Дата истечения срока действия | Код безопасности (CVC / CVV / CID) | Сценарий |
---|---|---|---|
4199 3500 0000 0002 | 03/2030 | 737 | Карта не предназначена для транзакций 3D Secure. |
5201 2829 9900 5515 | 03/2030 | 737 | Произошла техническая ошибка. Эта тестовая карта имитирует тайм-аут во время аутентификации 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 | Не поддерживается | Банк покупателя не поддерживает или не разрешает этот тип транзакции. |
11 | 3D не аутентифицирован | Аутентификация 3D Secure не была выполнена или не была выполнена успешно. |
12 | Недостаточный баланс | На карте недостаточно денег для покрытия подлежащей оплате суммы. |
14 | Мошенничество со стороны эквайера | Возможное мошенничество. |
15 | Отменено | Сделка отменена. |
16 | Покупатель отменен | Покупатель отменил транзакцию до ее завершения. |
17 | Неверный PIN-код | Указанный PIN-код неверен или недействителен. |
18 | Превышено количество попыток ввода PIN-кода | Покупатель указывал неверный PIN-код более трех раз подряд. |
19 | Проверка PIN-кода невозможна | Подтвердить указанный ПИН-код невозможно. |
20 | МОШЕННИЧЕСТВО | Возможное мошенничество. |
21 | Не представлен | Транзакция не была правильно отправлена в обработку. |
22 | ОТМЕНА МОШЕННИЧЕСТВА | Проверка риска пометила транзакцию как мошенническую (оценка риска> = 100); следовательно, операция отменяется. |
23 | Транзакция не разрешена | Этой причине отказа сопоставляются следующие отклоненные коды:
|
24 | CVC отклонен | Указанный CVC (код безопасности карты) недействителен. |
25 | Карта с ограниченным доступом | Этой причине отказа сопоставлены следующие коды отказа:
|
26 | Отзыв авторизации | Указывает, что покупатель запросил прекращение подписки. Коды отклонения, такие как следующие, сопоставляются с этой причиной отказа:
|
27 | Отклонено не универсальное | Этот ответ отображает все те коды ответов, которые нельзя надежно сопоставить. Это позволяет легче отличить общие отклонения (например, ответ Mastercard « 05: Не соблюдать ») от более конкретных. |
28 | Превышена сумма вывода | Превышена разрешенная сумма снятия для карты покупателя. |
29 | Превышено количество выводов | Превышено допустимое количество снятий с карты покупателя. |
31 | Подозрение эмитента в мошенничестве | Эмитент сообщил о транзакции как о подозрении в мошенничестве. |
32 | AVS отклонен | Адресные данные, введенные покупателем, неверны. |
33 | Для карты требуется онлайн-пин-код | Банк покупателя требует, чтобы покупатель ввел онлайн-PIN. |
34 | На карте нет текущего счета | Банку покупателя требуется текущий счет для совершения покупки. |
35 год | На карте нет сберегательного счета | Банку покупателя требуется сберегательный счет для совершения покупки. |
36 | Требуется мобильный PIN-код | Банк покупателя требует от покупателя ввести PIN-код мобильного телефона. |
37 | Бесконтактный откат | Покупатель отказался от транзакции после попытки бесконтактного платежа, и ему было предложено попробовать другой метод ввода карты (PIN-код или смахивание). |
38 | Требуется авторизация | Эмитент отклонил запрос исключения аутентификации и требует аутентификации для транзакции. Повторите попытку с 3D Secure. |
39 | RReq не получен от DS | Покупатель неправильно заполнил 3D Secure 2. |