Аутентификация 3‑D Secure
Общая информация
Обзор
Аутентификация пользователя с использованием протокола 3‑D Secure (Three-Domain Secure) предназначена для безопасного проведения интернет-оплат с использованием платёжных карт. Она может выполняться с применением различных методов проверки подлинности пользователя: например, через указание пользователем одноразового проверочного кода (One Time PIN, OTP), с помощью проверки отпечатка пальца пользователя на его мобильном устройстве или без каких-либо действий, на основе данных о платеже и пользователе. В разных случаях могут поддерживаться различные методы проверки.
В аутентификации 3‑D Secure используются три домена:
- Домен эквайера. В рамках работы с платёжной платформой ecommpay к нему относятся веб-сервис мерчанта, платёжная платформа и связанный с ней 3DS-сервер (или сервер Merchant Plug-In), а также сервис провайдера, если он участвует в аутентификации.
- Домен совместимости. К нему относятся серверы каталогов (Directory Servers, DS) международных платёжных систем.
- Домен эмитента. К нему относятся серверы управления доступом (Access Control Servers, ACS) эмитента (и, соответственно, страница аутентификации).
Между этими доменами осуществляется обмен сообщениями, необходимыми для аутентификации пользователя. К таким сообщениям относятся запрос на проверку возможности проведения аутентификации (Verifying Enrolment Request, VEReq) и ответ на него (Verifying Enrolment Response, VERes), а также запрос на аутентификацию пользователя (Challenge Request, CReq, или Payer Authentication Request, PAReq) и ответ с данными о результате аутентификации (Challenge Response, CRes, или Payer Authentication Response, PARes).
Следует учитывать, что информация о возможности проведения аутентификации пользователя и о версии протокола, по которой необходимо проводить аутентификацию, хранится на сервере управления доступом, и следовательно эту информацию можно получить только после отправки запроса на проведение платежа. Также со стороны веб-сервиса и платёжной платформы невозможно отслеживать действия пользователей на странице аутентификации — доступно только получение результата аутентификации.
Варианты аутентификации
Аутентификация 3‑D Secure может выполняться в следующих вариантах:
- Аутентификация без участия пользователя (frictionless flow). Этот вариант поддерживается только во второй версии протокола, 3‑D Secure 2. Выбор эмитентом этого варианта способствует повышению проходимости и улучшению пользовательского опыта.
- Аутентификация с подтверждением пользователем своей личности (challenge flow). Этот вариант поддерживается для обеих версий протокола 3‑D Secure. Термин challenge flow был введён во второй версии, 3‑D Secure 2, однако необходимость подтверждения пользователем своей личности актуальна и для аутентификации 3‑D Secure 1. Подтверждение личности может выполняться, например, с использованием одноразового кода или биометрических данных, если такая возможность поддерживается эмитентом.
Со стороны мерчанта выбрать требуемый вариант аутентификации нельзя, поддерживается только указание предпочтений по такому выбору, но итоговое решение принимается на стороне эмитента. Кроме указания предпочтений в запросах на вызов платёжной формы можно передавать ряд других необязательных параметров — это может повысить вероятность выбора варианта аутентификации frictionless flow. Информация о таких параметрах представлена далее.
Схемы выполнения аутентификации
В платёжной платформе ecommpay аутентификация 3‑D Secure может выполняться при проведении карточных одностадийных и двухстадийных оплат, а также при проверках действительности платёжных карт. При этом может использоваться одна из двух схем выполнения аутентификации: базовая, используемая по умолчанию, и расширенная, подключаемая по желанию мерчанта. Последняя поддерживается только для второй версии протокола, 3‑D Secure 2, и может быть актуальна в случаях, когда важно самостоятельно контролировать каждый этап выполнения аутентификации.
Подробная информация о схемах выполнения аутентификации 3‑D Secure представлена в этой статье.
Схемы работы
Базовая схема
Информирование о необходимости аутентификации 3‑D Secure осуществляется через оповещения, при приёме которых, как обычно при работе с платёжной платформой, необходимо отправлять ответы.
В базовой схеме аутентификации оповещения о необходимости аутентификации содержат объект acs
(если провайдер не участвует в аутентификации) или redirectData
(если провайдер участвует в аутентификации). Реагирование на такие оповещения сводится к следующему:
- В базовой схеме без участия провайдера — к перенаправлению пользователя на страницу эмитента, принятию сведений о результате аутентификации и отправке этих сведений в запросе на продолжение платежа. Время ожидания такого запроса составляет, как правило, 30 минут и измеряется с момента выявления необходимости аутентификации и до получения запроса от веб-сервиса. Если время ожидания истекло и запрос не принят — платёж автоматически отклоняется.
- В базовой схеме с участием провайдера — к перенаправлению пользователя на страницу провайдера. Дальнейших действия со стороны веб-сервиса в этом случае не требуется. Информацию о ситуациях, когда аутентификация выполняется с участием провайдера, можно получить у курирующего менеджера ecommpay.
После того как в платёжную платформу поступают данные о результате аутентификации, проведение платежа продолжается дальше. После этого в случае, если подключено каскадное проведение платежей, дополнительно может понадобиться принять одно или несколько дополнительных оповещений о необходимости аутентификации 3‑D Secure. Если такое оповещение содержит параметр cascading_with_redirect
со значением true
, необходимо:
- Отобразить пользователю страницу с сообщением об ошибке и получить его согласие на повторную аутентификацию.
- Отреагировать на оповещение необходимым способом (в зависимости от полученного в нём объекта,
acs
илиredirectData
).
Информацию о таких оповещениях можно получить в соответствующей статье или у специалистов технической поддержки support@ecommpay.com.
Рис.: Выполнение аутентификации 3‑D Secure 1 по базовой схеме без участия провайдера
- В платёжной платформе выполняется обработка запроса и выявляется необходимость аутентификации 3‑D Secure.
- От платёжной платформы к серверу MPI передаётся запрос на проверку возможности аутентификации.
- Запрос передаётся от сервера MPI к серверу каталогов (DS).
- Запрос передаётся от сервера каталогов к серверу управления доступом (ACS).
- На стороне сервера управления доступом выполняется проверка возможности аутентификации.
- От сервера управления доступом к серверу каталогов передаётся уведомление о возможности аутентификации.
- От сервера каталогов к серверу MPI передаётся уведомление с данными для перенаправления пользователя.
- Уведомление передаётся от сервера MPI к платёжной платформе.
- От платёжной платформы к веб-сервису направляется оповещение с данными для перенаправления пользователя.
- От веб-сервиса к платёжной платформе направляется ответ о приёме данных.
- Выполняется перенаправление пользователя на страницу аутентификации (ACS) эмитента.
- Пользователю отображается страница аутентификации и он осуществляет требуемые действия.
- На стороне эмитента выполняется аутентификация пользователя.
- Выполняется перенаправление пользователя к веб-сервису с передачей данных о результате аутентификации.
- Пользователю отображается страница ожидания веб-сервиса.
- От веб-сервиса на заданный URL ecommpay передаётся запрос на продолжение проведения платежа с учётом результата аутентификации.
- Запрос на продолжение проведения платежа поступает в платёжную платформу.
- В платёжной платформе выполняется приём запроса с проверкой его корректности.
- От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности.
Рис.: Выполнение аутентификации 3‑D Secure 2 по базовой схеме без участия провайдера
- В платёжной платформе выполняется обработка запроса и выявляется необходимость аутентификации 3‑D Secure.
- От платёжной платформы к 3DS‑серверу, связанному с платёжной платформой, передаётся запрос на проверку возможности аутентификации с использованием одной из версий протокола 3‑D Secure: 1 или 2.
- На стороне 3DS‑сервера проверяется возможность аутентификации.
- От 3DS‑сервера к платёжной платформе направляются данные для перенаправления пользователя.
- От платёжной платформы к веб-сервису направляется оповещение с данными для перенаправления пользователя.
- От веб-сервиса к платёжной платформе направляется ответ о приёме данных.
- Со стороны веб-сервиса выполняется перенаправление пользователя на страницу ожидания платёжной платформы.
- Пользователю отображается страница ожидания платёжной платформы.
- Со стороны платёжной платформы выполняется открытие объекта iframe.
- С помощью объекта iframe выполняются сбор данных об устройстве пользователя и отправка этих данных к серверу управления доступом (Access Control Server) эмитента.
- От сервера управления доступом к платёжной платформе направляется уведомление о приёме этих данных.
- От платёжной платформы к 3DS-серверу передаётся запрос на аутентификацию пользователя.
- Запрос передаётся от 3DS‑сервера к серверу каталогов международной платёжной системы (Directory Server).
- Запрос передаётся от сервера каталогов к серверу управления доступом.
- На стороне эмитента выполняется аутентификация пользователя. При этом в случае выбора эмитентом варианта аутентификации frictionless flow от сервера управления доступом к платёжной платформе (через сервер каталогов и 3DS-сервер) передаётся информация о результате аутентификации и пользователь перенаправляется к веб-сервису, а в случае выбора варианта аутентификации challenge flow выполняются следующие шаги:
- От сервера управления доступом к серверу каталогов и далее к 3DS-серверу и платёжной платформе передаются данные для перенаправления пользователя на страницу аутентификации (ACS URL).
- Со стороны платёжной платформы выполняется перенаправление пользователя на страницу аутентификации.
- Пользователю отображается страница аутентификации, после чего он осуществляет требуемые действия.
- На стороне эмитента выполняется проверка подлинности пользователя.
- От сервера управления доступом к серверу каталогов и далее к 3DS-серверу передаётся информация о результате проверки.
- От 3DS‑сервера к серверу каталогов и далее к серверу управления доступом передаётся ответ о приёме этой информации.
- От сервера управления доступом выполняется перенаправление пользователя на страницу ожидания платёжной платформы.
- Пользователю отображается страница ожидания платёжной платформы.
- Со стороны платёжной платформы выполняется перенаправление пользователя к веб-сервису с передачей данных о результате аутентификации.
- Пользователю отображается страница ожидания веб-сервиса.
- От веб-сервиса на заданный URL ecommpay передаётся запрос на продолжение проведения платежа с учётом результата аутентификации.
- Запрос поступает в платёжную платформу.
- В платёжной платформе выполняется приём запроса с проверкой его корректности.
- От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности.
Рис.: Выполнение аутентификации 3‑D Secure по базовой схеме с участием сервиса провайдера
- На стороне провайдера выполняется обработка платежа.
- От провайдера к платёжной платформе направляется уведомление с данными для перенаправления пользователя.
- От платёжной платформы к веб-сервису направляется оповещение с данными для перенаправления пользователя.
- От веб-сервиса к платёжной платформе направляется ответ о приёме данных.
- Выполняется перенаправление пользователя на страницу аутентификации (ACS) эмитента через сервис провайдера.
- Пользователь переходит на страницу аутентификации и осуществляет требуемые действия.
- На стороне эмитента выполняется аутентификация пользователя.
- Выполняется перенаправление пользователя к веб-сервису.
- Пользователь переходит к веб-сервису.
Информация о форматах запросов и оповещений приведена далее; общая информация о работе с API — в разделе Организация взаимодействия.
Расширенная схема
Как и в случае с базовой схемой, в расширенной схеме информирование о необходимости аутентификации 3‑D Secure осуществляется через оповещения, при приёме которых необходимо отправлять ответы. Такое информирование не осуществляется только в тех случаях, когда со стороны эмитента принято решение об аутентификации пользователя без предоставления дополнительных сведений. В этих случаях со стороны веб-сервиса не требуется действий, отличных от стандартных при проведении платежа, а информация о результате аутентификации передаётся в итоговом оповещении.
Оповещение о необходимости аутентификации в этом случае содержит объект iframe
(в объекте threeds2
). Реагирование на это оповещение в целом сводится к следующему:
- Отображение пользователю элемента iframe с использованием данных из оповещения.
- Если в запросе на проведение платежа был передан параметр
3ds_notification_url
— приём от сервера управления доступом (ACS) эмитента уведомления о приёме данных и отправка в платёжную платформу запроса на инициирование аутентификации. Если такой параметр не был передан, данный шаг не используется. - В случае выбора эмитентом варианта аутентификации frictionless flow — приём данных о результате аутентификации, а в случае выбора варианта аутентификации challenge flow выполнение следущих действий:
- приём от платёжной платформы оповещения с объектом
redirect
(в объектеthreeds2
) и отправка ответа о приёме этого оповещения; - перенаправление пользователя на страницу аутентификации в течение 30 секунд после приёма оповещения;
- приём от эмитента данных о результате аутентификации;
- отправка в платформу запроса на продолжение проведение платежа с учётом результата аутентификации (
3ds_result
) в течение 30 минут после выявления необходимости аутентификации.
- приём от платёжной платформы оповещения с объектом
Рис.: Выполнение аутентификации 3‑D Secure 2 по расширенной схеме
- В платёжной платформе выполняется обработка запроса и выявляется необходимость аутентификации 3‑D Secure.
- От платёжной платформы к 3DS‑серверу, связанному с платёжной платформой, передаётся запрос на проверку возможности аутентификации с использованием одной из версий протокола 3‑D Secure: 1 или 2.
- На стороне 3DS‑сервера проверяется возможность аутентификации.
- От 3DS‑сервера к платёжной платформе направляются данные для формирования объекта iframe.
- От платёжной платформы к веб-сервису направляется оповещение с данными для формирования объекта iframe.
- От веб-сервиса к платёжной платформе направляется ответ о приёме данных.
- На стороне веб-сервиса выполняется открытие объекта iframe.
- С помощью объекта iframe выполняются сбор данных об устройстве пользователя и отправка этих данных к серверу управления доступом (Access Control Server) эмитента.
- В зависимости от того, был ли указан в запросе на проведение платежа параметр
3ds_notification_url
с адресом, уведомление о приёме этих данных отправляется от сервера управления доступом либо к веб-сервису, либо к платёжной платформе. Если уведомление направляется к веб-сервису, то выполняются следующие шаги:- От веб-сервиса на заданный URL ecommpay передаётся запрос на инициирование аутентификации пользователя.
- Запрос поступает в платёжную платформу.
- В платёжной платформе выполняется приём запроса с проверкой его корректности.
- От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности.
- От платёжной платформы к 3DS-серверу передаётся запрос на аутентификацию пользователя.
- Запрос передаётся от 3DS‑сервера к серверу каталогов международной платёжной системы (Directory Server).
- Запрос передаётся от сервера каталогов к серверу управления доступом.
- На стороне эмитента выполняется аутентификация пользователя. При этом в случае выбора эмитентом варианта аутентификации frictionless flow от сервера управления доступом к платёжной платформе (через сервер каталогов и 3DS-сервер) передаётся информация о результате аутентификации, а в случае выбора варианта аутентификации challenge flow выполняются следующие шаги:
- От сервера управления доступом к серверу каталогов и далее к 3DS-серверу и платёжной платформе передаются данные для перенаправления пользователя на страницу аутентификации (ACS URL).
- От платёжной платформы к веб-сервису направляется оповещения с данными для перенаправления.
- Со стороны веб-сервиса выполняется перенаправление пользователя на страницу аутентификации.
- Пользователю отображается страница аутентификации, после чего он осуществляет требуемые действия.
- На стороне эмитента выполняется аутентификация пользователя.
- От сервера контроля доступа к серверу каталогов и далее к 3DS-серверу передаётся информация о результате проверки.
- От 3DS‑сервера к серверу каталогов и далее к серверу управления доступом передаётся ответ о приёме этой информации.
- Со стороны сервера управления доступом выполняется перенаправление пользователя к веб-сервису с передачей данных о результате аутентификации.
- Пользователю отображается страница ожидания веб-сервиса.
- От веб-сервиса на заданный URL ecommpay передаётся запрос на продолжение проведения платежа с учётом результата аутентификации.
- Запрос поступает в платёжную платформу.
- В платёжной платформе выполняется приём запроса с проверкой его корректности.
- От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности.
Информация о форматах оповещений и запросов, используемых в этой схеме, приведена в разделе Форматы промежуточных сообщений для расширенной схемы; общая информация о работе с Gate API — в разделе Организация взаимодействия.
Формат запросов на проведение платежей
Формат запроса на проведение платежа не влияет на возможность выполнения аутентификации 3‑D Secure и должен соответствовать описанному в статье Организация взаимодействия, а набор обязательных для этого платежа параметров — описанным в статьях про соответствующие типы платежей и дополненным, в случае использования расширенной схемы, адресом веб-сервиса для перенаправления к нему пользователя.
Тем не менее, в числе необязательных параметров рекомендуется передавать информацию о платеже (такую как предпочтительный вариант аутентификации и выбранный способ доставки) и о пользователе (такую как платёжный адрес и контактные данные пользователя) — это может повысить вероятность выбора варианта аутентификации frictionless flow, то есть варианта аутентификации пользователя без каких-либо действий с его стороны.
Информация об адресах веб-сервиса, платеже и пользователе указывается в следующих объектах и параметрах.
Параметр | Описание | |
---|---|---|
|
Объект со сведениями, необходимыми для перенаправления пользователя к веб-сервису после выполнения аутентификации и для получения уведомления о приёме данных от сервера управления доступом (ACS) эмитента при использовании расширенной схемы аутентификации | 1 |
|
Адрес веб-сервиса для перенаправления пользователя после аутентификации, является обязательным при использовании расширенной схемы | 1-11 |
|
Адрес веб-сервиса для получения уведомления о том, что данные приняты сервером управления доступом. Является обязательным, если на стороне мерчанта необходимо получать такие уведомления в рамках аутентификации по расширенной схеме | 1-21 |
|
Объект с информацией о пользователе | 2 |
|
Значение HTTP-заголовка Accept, полученного со стороны браузера пользователя | 2-12 |
|
Значение HTTP-заголовка User-Agent, полученного со стороны браузера пользователя | 2-22 |
|
Глубина цвета браузера пользователя в битах на пиксель | 2-32 |
|
Индикатор поддержки сценариев Java браузером пользователя | 2-42 |
|
Индикатор поддержки сценариев JavaScript браузером пользователя | 2-52 |
|
Код языка, установленного в браузере пользователя | 2-62 |
|
Разрешение экрана устройства пользователя в пикселях (например, 360x640 ) |
2-72 |
|
Название часового пояса браузера пользователя (например, Europe/London ) |
2-82 |
|
Разница между временем браузера пользователя и UTC, указывается в минутах (например, -120 ) |
2-92 |
|
Указатель совпадения платёжного адреса пользователя с адресом доставки, указанным в объекте Возможные значения:
|
2-102 |
|
Номер домашнего телефона пользователя, может содержать только цифры, от четырёх до двадцати четырёх (например, 44991234567 ) |
2-112 |
|
Номер рабочего телефона пользователя, может содержать только цифры, от четырёх до двадцати четырёх (например, 44997654321 ) |
2-122 |
|
Объект, содержащий информацию об учётной записи пользователя на стороне мерчанта | 2-132 |
|
Дополнительная информация об учётной записи пользователя, например её идентификатор; в произвольном формате с использованием до шестидесяти четырёх символов | 2-13-12-13 |
|
Количество попыток проведения оплаты за последние 24 часа, не более трёх символов (999 ) |
2-13-22-13 |
|
Количество попыток проведения оплаты за последние 365 дней, не более трёх символов (999 ) |
2-13-32-13 |
|
Количество дней с момента создания учётной записи пользователя. Возможные значения:
|
2-13-42-13 |
|
Дополнительная информация об аутентификации на стороне веб-сервиса в произвольном формате. Параметр может содержать не более 255 символов | 2-13-52-13 |
|
Указатель способа последней аутентификации пользователя на стороне веб-сервиса. Возможные значения:
|
2-13-62-13 |
|
Дата и время последней аутентификации пользователя на стороне веб-сервиса в формате ДД-ММ-ГГГГчч:мм |
2-13-72-13 |
|
Дата создания учётной записи в формате ДД-ММ-ГГГГ |
2-13-82-13 |
|
Дата последних изменений в учётной записи, за исключением изменения или сброса пароля, в формате ДД-ММ-ГГГГ |
2-13-92-13 |
|
Количество дней с момента последних изменений в учётной записи, за исключением изменения или сброса пароля. Возможные значения:
|
2-13-102-13 |
|
Дата последнего изменения или сброса пароля в формате ДД-ММ-ГГГГ |
2-13-112-13 |
|
Количество дней с момента последнего изменения или сброса пароля. Возможные значения:
|
2-13-122-13 |
|
Дата добавления платёжных данных карты в формате ДД-ММ-ГГГГ |
2-13-132-13 |
|
Количество дней с момента сохранения данных платёжной карты, используемой для проведения платежа, в учётной записи пользователя. Возможные значения:
|
2-13-142-13 |
|
Количество попыток сохранения новых платёжных данных карты за последние 24 часа, не более трёх символов (999 ) |
2-13-152-13 |
|
Количество покупок, совершённых через эту учётную запись за последние 6 месяцев, не более четырёх символов (9999 ) |
2-13-162-13 |
|
Индикатор подозрительной активности. Возможные значения:
|
2-13-172-13 |
|
Адрес электронной почты пользователя | 2-142 |
|
Номер телефона пользователя, может содержать только цифры, от четырёх до двадцати четырёх | 2-152 |
|
Объект с информацией о платёжном адресе пользователя | 2-162 |
|
Улица платёжного адреса пользователя | 2-16-12-16 |
|
Город платёжного адреса пользователя | 2-16-22-16 |
|
Страна платёжного адреса пользователя в формате ISO 3166-1 alpha-2 | 2-16-32-16 |
|
Почтовый индекс платёжного адреса пользователя | 2-16-42-16 |
|
Код штата, провинции или региона страны в формате ISO 3166-2, например MOS для Московской области.При указании значения этого параметра также необходимо указать значение параметра |
2-16-52-16 |
|
Объект, содержащий информацию о доставке | 2-172 |
|
Адрес доставки, не более ста пятидесяти символов | 2-17-12-17 |
|
Дата первого использования адреса доставки, указанного в параметрах этого объекта, в формате ДД-ММ-ГГГГ |
2-17-22-17 |
|
Количество дней с момента первого использования адреса доставки, указанного в параметрах этого объекта. Возможные значения:
|
2-17-32-17 |
|
Название города доставки, не более пятидесяти символов | 2-17-42-17 |
|
Код страны доставки в формате ISO 3166-1 alpha-2 (например, GB) | 2-17-52-17 |
|
Адрес электронной почты в случае доставки на этот адрес. Может содержать не более 255 символов | 2-17-62-17 |
|
Срок доставки. Возможные значения:
|
2-17-72-17 |
|
Индикатор совпадения имени пользователя с именем получателя. Возможные значения:
|
2-17-82-17 |
|
Почтовый индекс доставки, не более шестнадцати символов | 2-17-92-17 |
|
Код штата, провинции или региона страны в формате ISO 3166-2, например SPE для Санкт-Петербурга.При указании значения этого параметра также необходимо указать значение параметра |
2-17-102-17 |
|
Способ доставки, выбранный пользователем. Возможные значения:
|
2-17-112-17 |
|
Объект с данными о предыдущей аутентификации пользователя | 2-182 |
|
Идентификатор предыдущей операции пользователя на стороне эмитента, не более тридцати шести символов. В качестве этого идентификатора необходимо использовать значение, полученное в параметре acs_operation_id оповещения о результате проведения предыдущего платежа |
2-18-12-18 |
|
Указатель варианта предыдущего прохождения аутентификации пользователем, полученное в параметре Возможные значения:
|
2-18-22-18 |
|
Дата и время предыдущей успешной аутентификации пользователя. В качестве значения необходимо использовать данные, полученные в параметре mpi_timestamp оповещения о результате проведения предыдущего платежа |
2-18-32-18 |
|
Объект со сведениями о платеже | 3 |
|
Указатель предпочтения по использованию варианта аутентификации challenge flow. Возможные значения:
|
3-13 |
|
Размер окна для открытия страницы аутентификации. Возможные значения:
|
3-23 |
|
Планируемая дата поступления товара или услуги в формате ДД-ММ-ГГГГ |
3-33 |
|
Индикатор предварительного заказа. Возможные значения:
|
3-43 |
|
Индикатор первичной или повторной покупки данного товара или услуги пользователем. Возможные значения:
|
3-53 |
|
Объект с информацией об оплате предоплаченными или подарочными картами | 3-63 |
|
Общая сумма оплаты предоплаченными или подарочными картами в минорных единицах валюты | 3-6-13-6 |
|
Код валюты оплаты предоплаченными или подарочными картами в формате ISO 4217 alpha-3 (например, GBP) | 3-6-23-6 |
|
Количество предоплаченных или подарочных карт, использованных для оплаты | 3-6-33-6 |
Со стороны веб-сервиса мерчанта можно передавать как все, так и только некоторые из этих параметров.
Форматы промежуточных сообщений для базовой схемы
Формат оповещения о необходимости аутентификации
При использовании базовой схемы аутентификации от платёжной платформы к веб-сервису передаётся оповещение с данными для перенаправления пользователя. Оповещение передаётся в стандартном формате, описание которого представлено в разделе Оповещения. Данные для перенаправления пользователя передаются в одном из объектов такого оповещения: acs
(если провайдер не участвует в аутентификации) или redirectData
(если провайдер участвует в аутентификации).
В объекте acs
оповещения передаются следующие данные: сообщение PAReq (в параметре pa_req
) для направления запроса на прохождение аутентификации 3‑D Secure эмитенту, адрес страницы аутентификации (acs_url
) и данные мерчанта в платёжной системе — Merchant Data (md
).
Рис.: Пример данных для перенаправления в объекте acs
"acs":{ "pa_req":"inLgICAiYWNzVHIDAtMDAwMDAwMDAwNHv5hu", // Сообщение PAReq "acs_url":"https://example.com/ACS", // Адрес страницы для перенаправления "md":"eyJwdXJjaGFzZV9vcGVyYXRpb25faWRfaWJ9" // Данные мерчанта в платёжной системе }
В объекте redirectData
оповещения передаются следующие данные: тело запроса (body
), метод отправки запроса (method
) и адрес провайдера (url
).
Рис.: Пример данных для перенаправления в объекте redirectData
"redirectData":{ "method":"GET", // Метод отправки запроса "body":[ ], // Тело запроса (может быть пустым) "encrypted": [ ], "url":"https://example.com/..." }
Формат запроса на перенаправление
Для перенаправления пользователя на страницу аутентификации или страницу провайдера необходимо направить запрос на адрес, полученный в оповещении о необходимости аутентификации. В зависимости от состава данных для перенаправления это может быть POST-запрос или GET-запрос, в котором должны использоваться следующие объекты и параметры:
- Если данные получены в объекте
acs
:action
— адрес страницы, на которую необходимо перенаправить пользователя, полученный в параметреacs_url
оповещения;PaReq
— сообщение PAReq, полученное в параметреpa_req
оповещения;TermUrl
— адрес для перенаправления пользователя к веб-сервису после аутентификации;MD
— данные мерчанта в международной платёжной системе (Merchant Data), полученные в параметреmd
оповещения.
Метод отправки запроса — POST.
- Если данные получены в объекте
redirectData
:action
— адрес провайдера, полученный в параметреurl
оповещения;method
— метод отправки запроса, полученный в параметреmethod
оповещения;body
— тело запроса, если оно получено в оповещении.
Рис.: Пример HTML-формы с данными из объекта acs
<form id="3dsform" action="https://example.com/ACS" method="post" enctype="application/ x-www-form-urlencoded"> <input type="hidden" name="PaReq" value="inLgICAiYWNzVHIDAtMDAwMDAwMDAwNHv5hu" /> <input type="hidden" name="TermUrl" value="http://example.com/termurl" /> <input type="hidden" name="MD" value="eyJwdXJjaGFzZV9vcGVyYXRpb25faWRfaWJ9" /> </form> <script type="text/javascript"> setTimeout(function() { document.getElementById("3dsform").submit(); }, 1000); </script>
Для удобства можно воспользоваться готовым примером — Пример HTML-формы, — заменив параметры на актуальные для платежа.
Формат уведомления о результате аутентификации
Данные о результате аутентификации передаются к веб-сервису в параметре pares
.
Рис.: Пример данных об успешном прохождении аутентификации по базовой схеме
pares=eyJ4aWQiOiJNREF3TURBd01EQXdNREF5TkRBd01ERXhNVFU9IiwibWRTdGF0dXMiOjEsIm1kRXJyb3JNc2ciOiJBdXRoZW5
0aWNhdGVkIiwiZW5yb2xsbWVuU3RhdHVzIjpudWxsLCJhdXRoZW50aWNhdGlvblN0YXR1cyI6IlkiLCJjYXZ2I
joiUVVOVFJVMVZLMkI5UFV4MWFXRXBhMlJpTjJVPSIsImVjaSI6IjA1In0=
Рис.: Пример данных об ошибке при прохождении аутентификации по базовой схеме
pares=eyJ4aWQiOiJNREF3TURBd01EQXdNREF5TkRBd01ERXhNVFk9IiwibWRTdGF0dXMiOjAsIm1kRXJyb3JNc2ciOiJOb3QgYXV 0aGVudGljYXRlZCIsImVucm9sbG1lblN0YXR1cyI6bnVsbCwiYXV0aGVudGljYXRpb25TdGF0dXMiOiJOIiwiY 2F2diI6IiIsImVjaSI6IiJ9
Формат запроса на продолжение платежа
Для продолжения проведения платежа с учётом результата аутентификации необходимо отправить в платёжную платформу POST-запрос к конечной точке /v2/payment/card/3ds_result. В этом запросе должны использоваться следующие объекты и параметры:
general
— объект, содержащий основные идентификационные сведения запроса:project_id
— идентификатор проекта, полученный от ecommpay при интеграции;payment_id
— идентификатор платежа, уникальный в рамках проекта;signature
— подпись к данным запроса, составленная после указания целевых параметров (подробнее — в разделе Работа с подписью к данным).
pares
— сведения о результате аутентификации 3‑D Secure, полученные в уведомлении.
Таким образом, корректный запрос на продолжение проведения платежа с учётом результата аутентификации 3‑D Secure должен содержать идентификаторы проекта и платежа, подпись и данные о результате аутентификации.
Рис.: Пример набора данных в запросе на продолжение проведения платежа
{ "general": { "project_id": 42, "payment_id": "456789", "signature": "v7KNMpfogAxwRIL9tVftZ1ZZ5D/aZAeb0VMdeR+CqGrNxYyilUwSm...==" }, "pares": "ewogICJhY3NUcmFuc0lEIiA6ICJkYTIyNjY0Mi1hYzJhLTQ0N2ItYWFiYS1lNWI2Nzc2MjdmZmMi LAogICJtZXNzYWdlVHlwZSIgOiAiQ1JlcyIsCiAgIm1lc3NhZ2VWZXJzaW9uIiA6ICIyLjEuMCIsCiAgInRocmVlR FNTZXJ2ZXJUcmFuc0lEIiA6ICI5ZjE3OWM0My02NjA2LTU3YWUtODAwMC0wMDAwMDAwMDA3ZGQiLAogICJ0cmFuc1 N0YXR1cyIgOiAiWSIKfQ" // Сведения о результате аутентификации }
Форматы промежуточных сообщений для расширенной схемы
Формат оповещения с данными для объекта iframe
При расширенной схеме аутентификации через Gate от платёжной платформы к веб-сервису могут передаваться оповещения с данными для формирования объекта iframe. Для этих оповещений используется стандартный формат, описание которого представлено в разделе Оповещения.
Оповещения с данными для формирования объекта iframe не передаются, если со стороны эмитента без использования данных об устройстве пользователя принято одно из следующих решений:
- Выполнить проверку пользователя с перенаправлением на страницу аутентификации (вариант challenge flow). В этом случае со стороны веб-сервиса необходимо принять и обработать оповещение с данными для перенаправления (подробнее — ниже).
- Аутентифицировать пользователя (вариант frictionless flow). В этом случае со стороны веб-сервиса необходимо принять и обработать оповещение о результате проведения платежа.
Следующий пример содержит данные для формирования объекта iframe. Эти данные необходимо использовать следующим образом: адрес из параметра url
— в атрибуте action
, а данные из других параметров — в тегах input
.
Рис.: Пример данных для формирования объекта iframe
{ "threeds2":{ "iframe":{ "url":"https://example.com", "params":{ "3DSMethodData":"eyAidGhyZWVNrkthelJSUFQwaWZYMCUzQ", "threeDSMethodData":"eyAidGhjNjMGQ4YWU4LTA2u0wyWmtObGRdwR" } } } }
Рис.: Пример разметки HTML-страницы для объекта iframe
<iframe id="tdsMmethodTgtFrame" name="tdsMmethodTgtFrame" style="width: 1px; height: 1px; display: none;" src="javascript:false;" xmlns="http://example.com/xhtml"> <!--.--> </iframe> <form id="tdsMmethodForm" name="tdsMmethodForm" action="https://example.com" method="post" target="tdsMmethodTgtFrame" xmlns="http://example.com/xhtml"> <input type="hidden" name="3DSMethodData" value="eyAidGhyZWVNrkthelJSUFQwaWZYMCUzQ" /> <input type="hidden" name="threeDSMethodData" value="eyAidGhjNjMGQ4YWU4LTA2u0wyWmtObGRdwR" /> </form> <script type="text/javascript" xmlns="http://example.com/xhtml"> document.getElementById("tdsMmethodForm").submit(); </script>
Формат оповещения о необходимости аутентификации
При использовании расширенной схемы аутентификации через Gate от платёжной платформы к веб-сервису могут передаваться оповещения с данными для перенаправления пользователя на страницу аутентификации (ACS URL) эмитента. Оповещения передаются в стандартном формате, описание которого представлено в разделе Оповещения. Оповещения с данными для перенаправления пользователя на страницу аутентификации не передаются в случаях, если на стороне эмитента выбран вариант аутентификации frictionless flow. Вместо такого оповещения со стороны веб-сервиса необходимо принять и обработать оповещение о результате проведения платежа.
Следующий пример содержит данные для перенаправления пользователя на страницу аутентификации. Эти данные необходимо использовать следующим образом: адрес из параметра url
— в атрибуте action
, а данные из других параметров — в тегах input
.
Рис.: Пример данных для перенаправления пользователя
{ "threeds2":{ "redirect":{ "url":"https://example.com/ACS", "params":{ "creq":"ewogICAiYWNzVHJhbnNJCIDAtMDAwMDAwMDAwN2Q5Ip9", "threeDSSessionData":"240000549" } } } }
Рис.: Пример разметки HTML-страницы для перенаправления пользователя
<!DOCTYPE html SYSTEM "about:legacy-compat"> <html class="no-js" lang="en" xmlns="http://example.com/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta charset="utf-8" /> <title>3D Secure Processing</title> <link href="https://example.com/mpi.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="main"> <div id="content"> <div id="order"> <h2>3D Secure Processing</h2> <img src="https://example.com/preloader.gif" alt="Please wait.." /> <img src="https:// example.com/verifiedbyvisa.png" alt="Verified by VISA" /> <div id="formdiv"> <script type="text/javascript"> function hideAndSubmitTimed(formid) { timer=setTimeout("hideAndSubmit('"+formid+"');", 100);} function hideAndSubmit(formid) { var formx=document.getElementById(formid); tif (formx!=null) { formx.style.visibility="hidden"; formx.submit(); } } </script> <div> <form id="webform0" name="red2ACSv2" method="POST" action="https:// example.com/ACS" accept_charset="UTF-8"> <input type="hidden" name="_charset_" value="UTF-8" /> <input type="hidden" name="creq" value="ewogICAiYWNzVHJhbnNJCIDAtMDAwMDAwMDAwN2Q5Ip9" /> <input type="hidden" name="threeDSSessionData" value="240000476" /> <input type="submit" name="submitBtn" value="Please click here to continue" /> </form> </div> </div> <script type="text/javascript"> thideAndSubmitTimed('webform0'); </script> <noscript> <div align="center"> <b>Javascript is turned off or not supported!</b> <br/> </div> </noscript> </div> </div> </div> </body> </html>
Формат уведомления о приёме данных об устройстве пользователя
Если в запросе на проведение платежа передан параметр 3ds_notification_url
, то при расширенной схеме аутентификации через Gate от сервера управления доступом (ACS) эмитента к веб-сервису передаётся уведомление о приёме данных об устройстве пользователя (в формате эмитента), если нет — это уведомление передаётся к платёжной платформе.
Рис.: Пример идентификатора операции на стороне 3DS-сервера
threeDSServerTransID=3abd37b3-afa6-53cf-8000-000000006455
Формат запроса на инициирование аутентификации
Если в запросе на проведение платежа передан параметр 3ds_notification_url
, при расширенной схеме аутентификации через Gate для инициирования аутентификации необходимо отправить в платёжную платформу POST-запрос к конечной точке /v2/payment/card/3ds_check_iframe, если нет — инициирование аутентификации выполняется на стороне платформы. В запросе к этой конечной точке должны использоваться следующие объекты и параметры:
general
— объект, содержащий основные идентификационные сведения запроса:project_id
— идентификатор проекта, полученный от ecommpay;payment_id
— идентификатор платежа, уникальный в рамках проекта;signature
— подпись к данным запроса, составленная после указания целевых параметров (подробнее — в разделе Работа с подписью к данным).
threeds_completion_indicator
— указатель получения уведомления о приёме данных в течение десяти секунд после открытия объекта iframe. Необходимо передать значениеtrue
при получении уведомления и значениеfalse
при его отсутствии в заданный период.
Таким образом, корректный запрос на инициирование аутентификации 3‑D Secure должен содержать идентификаторы проекта и платежа и подпись.
Рис.: Пример набора данных в запросе на инициирование аутентификации
{ "general":{ "project_id":42, "payment_id":"456789", "signature":"v7KNMpfogAxwRIL9tVftZ1ZZ5D/aZAeb0VMdeR+CqGrNxYyilUwSm...==" }, "threeds_completion_indicator":true }
Формат уведомления о результате аутентификации
При использовании расширенной схемы аутентификации через Gate данные о результате аутентификации передаются к веб-сервису в формате эмитента. Эти данные передаются в параметре cres
уведомления.
Рис.: Пример данных об успешном прохождении аутентификации по расширенной схеме
cres=ewogICJhY3NUcmFuc0lEIiA6ICJkYTIyNjY0Mi1hYzJhLTQ0N2ItYWFiYS1lNWI2Nzc2MjdmZmMiLAogICJtZXNzYWdlVHl
wZSIgOiAiQ1JlcyIsCiAgIm1lc3NhZ2VWZXJzaW9uIiA6ICIyLjEuMCIsCiAgInRocmVlRFNTZXJ2ZXJUcmFu
c0lEIiA6ICI5ZjE3OWM0My02NjA2LTU3YWUtODAwMC0wMDAwMDAwMDA3ZGQiLAogICJ0cmFuc1N0YXR1cyIgO
iAiWSIKfQ&threeDSSessionData=240000554
Рис.: Пример данных об ошибке при прохождении аутентификации по расширенной схеме
cres=ewogICAiYWNzUmVmZXJlbmNlTnVtYmVyIiA6ICJBQ1NFbXUyIiwKICAgImFjc1RyYW5zSUQiIDog%0D%0AIjAwMDAwMDA wLTAwMDUtNWE1YS04MDAwLTAxNmQzZTI2ZWU2YyIsCiAgICJtZXNzYWdlVHlwZSIg%0D%0AOiAiQ1JlcyIsCi AgICJtZXNzYWdlVmVyc2lvbiIgOiAiMi4xLjAiLAogICAidGhyZWVEU1NlcnZl%0D%0AclRyYW5zSUQiIDogI jhiMjM0Y2ZmLTkzNjAtNTc5Yy04MDAwLTAwMDAwMDAwMDlhNiIsCiAgICJ0%0D%0AcmFuc1N0YXR1cyIgOiAi TiIKfQ==&threeDSSessionData=240000622
Формат запроса на продолжение платежа
При базовой и расширенной схемах аутентификации через Gate для продолжения проведения платежа с учётом результата аутентификации необходимо отправить в платёжную платформу POST-запрос к конечной точке /v2/payment/card/3ds_result. В этом запросе должны использоваться следующие объекты и параметры:
general
— объект, содержащий основные идентификационные сведения запроса:project_id
— идентификатор проекта, полученный от ecommpay;payment_id
— идентификатор платежа, уникальный в рамках проекта;signature
— подпись к данным запроса, составленная после указания целевых параметров (подробнее — в разделе Работа с подписью к данным).
cres
— данные о результате аутентификации 3‑D Secure, полученные в уведомлении от сервера управления доступом.
Таким образом, корректный запрос на продолжение проведения платежа с учётом результата аутентификации 3‑D Secure должен содержать идентификаторы проекта и платежа, подпись и данные о результате аутентификации.
Рис.: Пример набора данных в запросе на продолжение проведения платежа
{ "general": { "project_id": 42, "payment_id": "456789", "signature": "v7KNMpfogAxwRIL9tVftZ1ZZ5D/aZAeb0VMdeR+CqGrNxYyilUwSm...==" }, "cres": "ewogICJhY3NUcmFuc0lEIiA6ICJkYTIyNjY0Mi1hYzJhLTQ0N2ItYWFiYS1lNWI2Nzc2MjdmZmMi LAogICJtZXNzYWdlVHlwZSIgOiAiQ1JlcyIsCiAgIm1lc3NhZ2VWZXJzaW9uIiA6ICIyLjEuMCIsCiAgInRocmVlR FNTZXJ2ZXJUcmFuc0lEIiA6ICI5ZjE3OWM0My02NjA2LTU3YWUtODAwMC0wMDAwMDAwMDA3ZGQiLAogICJ0cmFuc1 N0YXR1cyIgOiAiWSIKfQ" // Данные о результате аутентификации }
Формат оповещений о результатах платежей
Информация о результате платежа передаётся от платёжной платформы к веб-сервису в оповещении стандартного формата, описание которого представлено в разделе Оповещения.
В случае выполнения аутентификации 3‑D Secure 2 при проведении платежа в объекте mpi_result
оповещения дополнительно могут передаваться следующие параметры:
mpi_operation_id
— идентификатор операции на стороне 3DS‑сервера;ds_operation_id
— идентификатор операции на стороне cервера каталогов международной платёжной системы;acs_operation_id
— идентификатор операции на стороне сервера управления доступом эмитента;mpi_timestamp
— дата и время аутентификации;cardholder_info
— информация об аутентификации, которую рекомендуется отобразить пользователю при уведомлении о результате проведения платежа;authentication_flow
— указатель использованного варианта аутентификации:01
для frictionless flow или02
для challenge flow.
По умолчанию эти параметры не передаются. Для того, чтобы получать их в оповещениях, необходимо обратиться в службу технической поддержки support@ecommpay.com.
Рис.: Пример данных из оповещения о результате оплаты с аутентификацией 3‑D Secure 2
{ "account":{ "number":"431422******0056", "token":"f365bb1729f9b72fd9c09703a751c979f3becc679f29c3e35c91d18070d15654", "type":"visa", "card_holder":"JOHN SMITH", "id":45678, "expiry_month":"08", "expiry_year":"2025" }, "customer":{ "id":"customer_12", "phone":"44991234567" }, "payment":{ "date":"2019-01-11T13:02:42+0000", "id":"456789", "method":"card", "status":"success", "sum":{ "amount":400000, "currency":"USD" }, "type":"purchase", "description":"" }, "project_id":42, "operation":{ "id":969000002636, "type":"sale", "status":"success", "date":"2019-01-11T13:02:42+0000", "created_date":"2019-01-11T13:01:45+0000", "request_id":"c6eed1eb14c629b4ef20b3b8086d...d04132c34b0088cbc0be4667c", "sum_initial":{ "amount":400000, "currency":"USD" }, "sum_converted":{ "amount":400000, "currency":"USD" }, "provider":{ "id":408, "payment_id":"330157196", "date":"2019-01-11T13:02:32+0000", "auth_code":"", "endpoint_id":"612266625" }, "mpi_result":{ "mpi_operation_id":"", // Идентификатор операции на стороне 3DS‑сервера "ds_operation_id":"", // Идентификатор операции на стороне сервера каталогов международной платёжной системы "acs_operation_id":"", // Идентификатор операции на стороне сервера управления доступом эмитента "mpi_timestamp":"YYYYMMDDHHMM", // Дата и время выполнения аутентификации "cardholder_info":"Additional authentication is needed for this transaction", // Информация об аутентификации, которую рекомендуется отобразить пользователю "authentication_flow":"02" // Информация о варианте аутентификации }, "code":"0", "message":"Success", "eci":"07" }, "signature":"v7KNMpfogAxwRIL9tVftZ1ZZ5D/aZAeb0VMdeR+CqGrNxYyilUwSm...==" }