Перейти к содержанию

3-D Secure 1.0

При проведении онлайн операции картой с использованием проверки 3-D Secure 1.0 покупатель торговца всегда переходит на форму Access Control Server банка-эмитента карты (ACS форма). На этой форме требуется ввести пароль для аутентификации платежа, который покупатель получает от банка-эмитента.


Обработка транзакции с 3-D Secure проверкой содержит следующие шаги:

3-D Secure Workflow

Шаг Описание
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