.. meta:: :description: Продажа сервер—сервер в API Payneteasy: обработка карточных платежей напрямую через API с полной обработкой challenge 3DS, параметрами запроса и кодами ответа. .. _3ds_server_to_server_sale: Прямая оплата ########################################## .. role:: ex .. role:: code Введение ------------------------------------ | Оплата — тип транзакции, при которой Плательщик получает товар или услугу от Присоединяющейся Стороны в обмен на деньги или другие активы. При осуществлении сценария интеграции оплаты с прямой передачей карточных данных в запросе данные карты передаются непосредственно при передаче запроса. | | См. определения терминов (Присоединяющаяся Сторона, 3DS Method и т.д.) в :ref:`Глоссарии`. Общий сценарий оплаты --------------------------------- .. uml:: :align: center skinparam roundcorner 20 skinparam sequenceArrowThickness 1 skinparam maxmessagesize 1200 skinparam sequenceParticipant underline actor Плательщик participant "Присоединяющаяся Сторона" as A participant "Payneteasy" as B autonumber Плательщик -> A: Инициализация activate A A -> B: /api/v2/sale/ activate B B --> A: ИД Транзакции B -> B: Обработка\nПлатежа hnote over Плательщик,B : Схема прохождения 3DS group Получение конечного статуса == Получение обратного вызова \nПрисоединяющейся Стороны == A <- B: Обратного вызов с конечным статусом A --> B: HTTP 200 deactivate B == Запрос статуса == A -> B: Получение статуса по ИД транзакции activate B B --> A: Конечный статус deactivate B end A --> Плательщик: Показ результата deactivate Плательщик deactivate A | (2) Для имплементации запроса на проведение оплаты см. :ref:`/api/v2/sale/`. По умолчанию 3DS аутентификация 3DS инициируется и выполняется платежным шлюзом через :ref:`Упрощенную схему аутентификации `. См. :ref:`Схему прохождения 3DS <3ds_server_to_server_sale_reference>` | (5) Для реализации обратного вызова с обработкой финального статуса см. :ref:`Обратный вызов Присоединяющейся Стороны`. | (7) Для реализации запроса статуса заказа см. :ref:`/api/v2/status/`. Статус следует запрашивать несколько раз с интервалом 3-5 секунд, пока в ответе не будет получен финальный статус. .. _3ds_server_to_server_sale_reference: Схема прохождения 3DS -------------------------------------------------- .. uml:: :align: center title Схема прохождения 3DS start : (1) Send **/api/v2/status** request\nwith orderid=**paynet-order-id**\nProcess **/api/v2/status** response; while ((2) Check If **status** response field equals\nto finished status values\n**status** == approved\nOR **status** == declined\nOR **status** == error\nOR **status** == unknown\nOR **status** == filtered) is (NO); switch ((3) **html** and **redirect-to** field is present) case (YES) #Plum :(4) Create Wait HTML Page\nwhich redirects to result page\n(3DS 2.x or 1.0.2 to be applied)\n\nSee Simplified authentication flow; case (NO) endswitch backward:(5) Send new\n**/api/v2/status** request\nProcess\n**/api/v2/status** response; endwhile (YES) :(6) Show result page to the Payer; stop legend left =Legend | Color | Implementation responsibility | |<#Turquoise>| Connecting party | |<#Plum>| Connecting and other party | | | Other Party | endlegend Присоединяющаяся сторона должна реализовать все шаги, отмеченные зелёным и фиолетовым цветом. Ниже приведены описания шагов со ссылками на API-команды в соответствии с номером шага. | (1) Для реализации запроса статуса заказа см. :ref:`/api/v2/status/`. Статус следует запрашивать несколько раз с интервалом 3-5 секунд до получения финального статуса в ответе. | (4) Если присутствуют значения html и redirect-to, см. :ref:`Упрощённый сценарий аутентификации с html страницей`. | (5) То же, что и пункт (1). .. note:: :ref:`Схема принятия решений по 3DS <3ds_server_to_server_sale_reference>` демонстрирует инициацию и проведение 3DS Платежным Шлюзом. Для ознакомления с другими сценариями реализации 3DS, пожалуйста, изучите раздел :ref:`Обзор 3DS <3ds_implementation_scenarios>` и свяжитесь с вашим менеджером поддержки .. _non_3d_sale: Сценарий без 3DS ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Оплата считается проведённой без прохождения 3DS (без 3DS аутентификации) при нижеприведённых условиях: | 1. Соблюдены шаги 1-2-(5)-6 :ref:`Схемы Прохождения 3DS<3ds_server_to_server_sale_reference>`. | 2. Отсутствие параметров :code:`tds_status`, :code:`html` и :code:`redirect-to`. | 3. Транзакция получила финальный статус (подтверждено, отклонено, ошибка, отфильтровано). .. note:: Транзакции со статусом «unknown» могут показываться как транзакции, прошедшие 3DS, так и как транзакции без прохождения 3DS. Детальнее о статусах транзакций см. :ref:`Статусы`. .. _simplified_authentication_flow_sale: Упрощённый процесс аутентификации ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. uml:: :align: center title Упрощённый процесс аутентификации start #Turquoise:(1) Отправка API запроса **/api/v2/status/**; #Turquoise:(2) Обработка ответа **/api/v2/status/**. Сбор параметра: **html**; fork #Turquoise:(3) Сбор параметра **html**; #Turquoise:(4) Возврат данных с параметра **html** браузеру Отправителя; forkagain #Turquoise:(5) Сбор параметра **redirect-to**; #Turquoise:(6) Перенаправление Плательщика на redirect URL; endfork :(7) Браузер Отправителя перенаправляется на ACS и Отправитель проходит или 3DS 1.0.2 или 3DS 2.X flow.; :(8) Браузер Отправителя перенаправляется назад на **redirect_url**, предоставленный в начальном запросе **api/v2/sale/**.; #Turquoise:(9) Обработка финального перенаправления браузера Отправителя **redirect_url**.; #Turquoise:(10) Возврат HTML страницы ожидания браузеру Отправителя; fork note left Жизненный цикл **HTML страницы ожидания** end note repeat #Turquoise: (11) Запрос серверу Присоединяющейся Стороны о статусе транзакции; #Turquoise: (12) Обработка статуса транзакции; repeat while ((13) Получение финального статуса\n(approved, declined, error or unknown)?) is (no) -> (yes); #Turquoise:(14) Перенаправление браузера Отправителя на страницу результата; fork again note left Жизненный цикл **сервера Присоединяющейся Стороны** end note #Turquoise:(15) Отправка API запроса **/api/v2/status/**; #Turquoise:(16) Обработка ответа **/api/v2/status/** \nи последующая **Схема прохождения 3DS** для анализа статуса ответа; end fork stop legend left =Legend | Цвет | Ответственность за обработку | |<#Turquoise>| Присоединяющаяся Сторона | | | Другие стороны | endlegend | (1) и (2). Для имплементации запроса статуса заказа, см. :ref:`/api/v2/status/`. | (9) Для инициации финального перенаправления см. :ref:`Финальное перенаправление`. | (10) HTML-страница ожидания в контуре Присоединяющейся Стороны может иметь произвольный дизайн и должна взаимодействовать с сервером Присоединяющейся Стороны в соответствии с диаграммой. | (15) и (16) то же, что и (1) и (2). .. ifconfig:: "doc.payneteasy.com" in site_link ---- .. admonition:: See also :class: related-cross-link `Learn about the white-label Payment Gateway → `_ .. ifconfig:: "doc.payneteasy.ru" in site_link ---- .. admonition:: См. также :class: related-cross-link `Платёжный шлюз с прямым API-доступом → `_