3-D Secure 1.0
При проведении онлайн операции картой с использованием проверки 3-D Secure 1.0 покупатель торговца всегда переходит на форму Access Control Server банка-эмитента карты (ACS форма). На этой форме требуется ввести пароль для аутентификации платежа, который покупатель получает от банка-эмитента.
Обработка транзакции с 3-D Secure проверкой содержит следующие шаги:
Шаг | Описание |
---|---|
1 | Клиент отправляет запрос на покупку в магазине торговца. |
2 | Торговец отправляет запрос на оплату или авторизацию UnonaPay |
3 | UnonaPay проверяет использует ли клиент 3-D Secure |
4 | Если клиент не использует, то запрос идет в банк-эквайер, который возвращает статус транзакции торговцу. Переход к Шагу 10. |
5 | UnonaPay вернет ответ со статусом incomplete и параметрами:redirect_url в блоке transaction ответа. acs_url , pa_req , md и pa_res_url в блоке three_d_secure_verification ответа. |
6 | Существует два варианта развития событий: Базовый Система торговца перенаправляет клиента на redirect_url С расширенным контролем Перед реализацией продвинутого сценария работы с 3-D Secure уточните у вашего менеджера, будет ли он доступен для вас. Предназначено для торговцев, которые хотят больше контроля над процессом оплаты. В этом случае приложение торговца создает форму для отправки клиента банку-эмитенту на проверку, ожидает клиента обратно на TermUrl , взятый из параметров формы, и затем отправляет POST запрос с полученными PaRes и MD на pa_res_url UnonaPay. UnonaPay вышлет данные транзакции вместе с данными 3-D Secure в сеть обработки платежей и вернет ответ с результатом. |
7 | Клиент авторизуется с 3-D Secure и возвращается на UnonaPay. |
8 | UnonaPay отправляет запрос на оплату или авторизацию c настоящими ECI, CAVV и XID 3-D Secure параметрами банку-эквайеру. Если торговец выбрал в Шаге 6 способ С расширенным контролем, то вместе с ответом от UnonaPay, который содержит результат транзакции и 3-D Secure проверки, переходим к Шагу 11. |
9 | UnonaPay отправляет клиента на return_url (полученный UnonaPay при оплате или авторизации) с параметром uid транзакции в URL. Например, если return_url - http://www.example.com/return_here , клиент перенаправляется на http://www.example.com/return_here?uid=TRANSACTION_UID |
10 | Торговец делает запрос статуса, чтобы получить информацию о транзакции со статусом. |
11 | Торговец продолжает процесс обработки заказа, завершает транзакцию и показывает клиенту страницу подтверждения заказа. |
Пример формы для перенаправления клиента на ACS форму
Приложение торговца получает и сохраняет значения acs_url
, pa_req
, md
и pa_res_url
. Затем создает форму, используя сохраненные значения:
<form id="ACSRedirect" action="value_of_acs_url" method="POST">
<input type="hidden" name="MD" value="value_of_md">
<input type="hidden" name="TermUrl" value="merchant_application_endpoint">
<input type="hidden" name="PaReq" value="value_of_pa_req">
<input type="submit" value="Submit">
</form>
Пример формы
<html>
<head>
<META http-equiv="Content-Language" content="en-US">
<style>
.content {
width: 50%;
margin: 0 auto;
text-align: center;
}
input[type="submit"] {
background-color: rgb(92, 184, 92);
border-bottom-color: rgb(76, 174, 76);
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
border-bottom-style: solid;
border-bottom-width: 1px;
border-left-color: rgb(76, 174, 76);
border-left-style: solid;
border-left-width: 1px;
border-right-color: rgb(76, 174, 76);
border-right-style: solid;
border-right-width: 1px;
border-top-color: rgb(76, 174, 76);
border-top-left-radius: 4px;
border-top-right-radius: 4px;
border-top-style: solid;
border-top-width: 1px;
color: rgb(255, 255, 255);
cursor: pointer;
display: inline-block;
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
font-size: 14px;
height: 34px;
line-height: 20px;
padding-bottom: 6px;
padding-left: 12px;
padding-right: 12px;
padding-top: 6px;
text-align: center;
touch-action: manipulation;
vertical-align: middle;
white-space: nowrap;
width: 80px;
word-spacing: 0px;
margin-top: 40px;
}
img { height: 70px; }
</style>
</head>
<body>
<div class='content'>
<p><img src="/images/visa.png"></p>
<h3>Your card is enrolled in 3-D Secure program</h3>
<p>You will be redirected to your bank's secure page for 3-D Secure check. Then your transaction will be finished.
If nothing happens, please click Submit button.
</p>
<form id="ACSRedirect" action="https://dropit.3dsecure.net:9443/PIT/ACS" method="POST">
<input type="hidden" name="MD" value="454645">
<input type="hidden" name="TermUrl" value="http://merchantsite.example.com/process/454645">
<input type="hidden" name="PaReq" value="eJxVUtFy2jAQ/BVP3mPJsrAd5tCMwZkx04lLihsmfTPyBRyKDbIIpF/fE4Gkfds9re5uV4JybRCzOeqDQQUP2PfVCr2mHt0Uk1nE8ySQ0bd0kd+JKJ0kNwpm6Q/cK3hD0zddqwKf+wLYlVIHo9dVaxVUej+eFkomIY9JcaGwRTPNVBAIEYZSxjGwjwq01RZVib31+sYisDMH3R1aa96VFAmwK4GD+a3W1u6GjB2PRx91t6WpZoU+IWDuGNjXKrODQz21OzW1KjfFY/E6nn7P7nmxseMnvho8vP4aP/5ZjYA5BdSVRSV4MOAJj7xADIUcyjtg5zpUW7cHeZB+JLyf84zcfZRg5yaln+cRGf+3BBSzwVa/q0Ry8nNlgKdd1yIp6MInhhp7rcLbbO69dMaz5uTJgYxkfLvUL0GYiOXS7eREwL48TnIXvrYUavy0fI7L+zLPN/Vi/ZzsTbGw6YhsXgRucEOJCs6D82RHgLkW7PLSlOP5UxD677P8BW2Nudo=">
<input type="submit" value="Submit">
</form>
<script type="text/javascript">
setTimeout(function(){ document.forms["ACSRedirect"].submit(); }, 3000);
</script>
</div>
</body>
</html>
Запрос в систему UnonaPay с результатом 3-D Secure проверки
Отправьте POST
запрос с полученными значениями PaRes
and MD
на pa_res_url
:
{
"md": "value_of_MD",
"pa_res": "value_of_PaRes"
}
Параметры ответа 3-D Secure
Параметр | Тип | Описание |
---|---|---|
ve_status | string | статус проверки регистрации |
pa_status | string | статус аутентификации оплаты (только если аутентификация выполнена) |
eci | string | Electronic Commerce Indicator. Предоставляет информацию об уровне защиты от запросов на возврат платежей владельцев карт или их банков. |
xid | string | Уникальный идентификационный код 3-D Secure |
cavv | string | Cardholder Authentication Verification Value ( только если владелец карты был успешно аутентифицирован) |
cavv_algorithm | string | CAVV алгоритм (только если статус аутентификации Y или A ) |
fail_reason | string | Понятное человеку причина (только если аутентификация 3-D Secure не прошла) |
status * обязательный |
string | Статус аутентификации 3-D Secure |
Шаг 3. Пример ответа проверки регистрации
{
"transaction": {
"amount": 9906,
"billing_address": {
"address": "1st Street",
"city": "Denver",
"country": "US",
"first_name": "Test",
"last_name": "Test",
"phone": null,
"state": "CO",
"zip": "96002"
},
"created_at": "2015-08-06T15:24:48Z",
"credit_card": {
"brand": "visa",
"exp_month": 1,
"exp_year": 2026,
"first_1": "4",
"holder": "John Doe",
"last_4": "0000",
"stamp": "b3839d334ba40e89168d60cd9f9d1390aee3fe67dd4d5c41adbf3998043eaef8",
"token": "17192917abfc48d9b3ee3fa2c9c29d7aa64b7ab40040d6eedd48b4557ac4079c"
},
"currency": "USD",
"customer": {
"device_id": null,
"email": "john@example.com",
"ip": "127.0.0.1"
},
"description": "Test transaction",
"id": "454744-32f929708d",
"language": "en",
"message": null,
"redirect_url": "https://gw_domain/process/454744-32f929708d",
"status": "incomplete",
"test": true,
"three_d_secure_verification": {
"acs_url": "https://dropit.3dsecure.net:9443/PIT/ACS",
"md": "74652",
"message": "Authentication Available",
"pa_req": "eJxVUl1vm0AQ/Cso7+E+OAy21ieFQGRXrR0Hmip9o7CJkWxwjqM4/fXdc+ykfZvZHc3uzh0UW4OY5lgNBjV8w74vX9Br6vlVmKfx12WyCRfJZL1Wt3n2JK403N884KuG32j6pmu18LkvgV0oOZhqW7ZWQ1m9JsuVVnHAI1KcKezRLFMthJRBoFQUAXuvQFvuURfYW69vLAI7cai6obXmTSsZA7sQGMxOb609zBgbx9HHqtvTVPOCPiFgrg3sc5X7waGe7I5NrVePq2ydHb9sdpnIs6UseMw3YnX3o8jmwJwC6tKillyE1Jp4IpxJNQs5sFMdyr3bQ0+nPjW/5ykd916Bgxt0c2nzCbB/K0AhG2yrNx0rMvtggMdD1yIpKKcPDDX2lQ6u09x77oxnzdFToYqUug4kTuU04nFNGzkRsM8Lbxcu+spSpNHjr6eoyIrFYlcPf8r04WcyJuOcjjwL3OCG8pSci9NkR4A5C3Z+Z0rx9CUI/fdV/gLLBLic",
"pa_res_url": "https://gw_domain/process/454744-32f929708d",
"status": "incomplete",
"ve_status": "Y"
},
"tracking_id": null,
"type": "payment",
"uid": "454744-32e929708d",
"updated_at": "2015-08-06T15:24:51+00:00"
}
}
Пример ответа
{
"transaction":{
"customer":{
"ip":"127.0.0.1",
"email":"john@example.com"
},
"credit_card":{
"holder":"John Doe",
"stamp":"f873e6516da9f61678d918e86c2835e4b4f6ed47506ec9be8abd4967fe4be2d4",
"brand":"visa",
"last_4":"1112",
"first_1":"4",
"exp_month":1,
"exp_year":2026
},
"billing_address":{
"first_name":"John",
"last_name":"Doe",
"address":"1st Street",
"country":"US",
"city":"Denver",
"zip":"96002",
"state":"CO",
"phone":null
},
"three_d_secure_verification":{
"eci":"05",
"ve_status":"Y",
"pa_status":"Y",
"xid":"2DIMDD08RRE6WVC140GW",
"cavv":"AAACCEmXU2FoNWGZI5dTAAAAAAA=",
"cavv_algorithm":"2",
"message":"Authentication Successful",
"fail_reason":null,
"status":"successful"
},
"payment":{
"auth_code":"654321",
"bank_code":"05",
"rrn":"999",
"ref_id":"777888",
"message":"Authorization was approved (with 3-D Secure)",
"gateway_id":327,
"billing_descriptor":"TEST GATEWAY BILLING DESCRIPTOR",
"status":"successful"
},
"uid":"1-310b0da80b",
"status":"successful",
"message":"Successfully processed",
"amount":100,
"currency":"USD",
"description":"Test order",
"type":"payment"
}
}
Статус проверки регистрации
Статус | Описание | 3-D Secure доступен? | Оплата завершена? |
---|---|---|---|
Y |
Карта зарегистрирована. | Да | Нет |
N |
Карта не зарегистрирована. | Нет | Да |
U |
Не удалось аутентифицировать. | Нет | Да |
E |
Ошибка проверки регистрации. Смотрите fail_reason. | Нет | Да |
Статус аутентификации оплаты
Status | Description | VISA ECI | MC ECI |
---|---|---|---|
Y |
Владелец карты был успешно аутентифицирован. | 05 |
02 |
A |
Процесс аутентификации не был выполнен, но попытка аутентификации была совершена. | 06 |
01 |
N |
Владелец карты не был аутентифицирован. Процесс авторизации не должен быть совершен. | - | - |
U |
Аутентификация не может быть выполнена из-за технической ошибки или других проблем. Операция будет рассматриваться как электронная коммерция. Карта оплаты, используемая для этой операции, признана непригодной для обработки 3-D Secure. Торговец примет решение, обработать неавторизованный запрос на оплату или попросить клиента воспользоваться другой формой оплаты | 05 |
02 |
E |
Ошибка произошла во время аутентификации. Процесс авторизации не должен быть совершен. | - | - |
CAVV алгоритм
Алгоритм используется для генерации свойства аутентификации CAVV. Это свойство определяет ACS (сервер управления доступом) после получения PAReq (Payer Authentication Request), если статус аутентификации Y
или A
. Это свойство содержит одну цифру, указывающую алгоритм генерации CAVV (Cardholder Authentication Verification Value). Допустимые алгоритмы:
Значение CAVV | Описание |
---|---|
0 |
HMAC (в соответствии с SET TranStain) |
1 |
CVV |
2 |
CVV с ATN |