1.1. Прямая оплата

Введение

Оплата — тип транзакции, при которой Плательщик получает товар или услугу от Присоединяющейся Стороны в обмен на деньги или другие активы. При осуществлении сценария интеграции оплаты с прямой передачей карточных данных в запросе данные карты передаются непосредственно при передаче запроса.

Значение терминов (Присоединяющаяся Сторона, 3DS метод и т.д.) см. в Глоссарии.

Общий сценарий оплаты

skinparam roundcorner 20
skinparam sequenceArrowThickness 1
skinparam maxmessagesize 1200
skinparam sequenceParticipant underline
actor Плательщик
participant "Присоединяющаяся Сторона" as A
participant "SBC" 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) Для имплементации запроса на проведение оплаты см. /api/v2/sale/. См. Проведение 3DS, чтобы получить больше информации о 3DS процессе. См. Схема прохождения 3DS и Реализация Сценариев 3DS, чтобы корректно реализовать проведение 3DS для прямой оплаты.
(5) Для имплементации обратного вызова с обработкой финального статуса см. Обратный вызов Присоединяющейся Стороны.
(7) Для имплементации запроса статуса, см. /api/v2/status/. Статус должен запрашиваться несколько раз с интервалами в 3-5 секунд до получения финального статуса в ответе.

Схема прохождения 3DS

  <style>
    activityDiagram {
    BackgroundColor #Turquoise
      diamond {
        BackgroundColor #Turquoise
      }
    }
    document {
       BackgroundColor #fcfcfc
    }
    </style>
  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

Присоединяющаяся Cторона имплементируют шаги, указанные зелёным и фиолетовым цветом. Ниже указано описание шагов со ссылками на исполняемые АПИ команды в соответствии с номером шага:

(1) Для имплементации запроса статуса, см. /api/v2/status/. Статус должен запрашиваться несколько раз с интервалами в 3-5 секунд до получения финального статуса в ответе.
(4) Если присутствуют значения html и redirect-to, см. Упрощённый сценарий аутентификации с html страницей.
(5) То же, что и пункт (1).

Примечание

Схема принятия решений 3DS демонстрирует инициацию и проведение 3DS Платежным Шлюзом.3DS инициируется Платежным Шлюзом и проводится на стороне Подключаемой Стороны. Подробнее см. Обзор 3DS

Сценарий оплаты без 3DS

Оплата считается проведённой без прохождения 3DS (без 3DS аутентификации) при нижеприведённых условиях:

1. Соблюдены шаги 1-2-(5)-6 Схемы Прохождения 3DS.
2. Отсутствие параметров tds_status, html и redirect-to.
3. Транзакция получила финальный статус (approved, declined, error, filtered).

Примечание

Транзакции со статусом «unknown» могут показываться как транзакции прошедшие 3DS, так и как транзакции без прохождения 3DS. Детальнее о статусах транзакций см. Статусы.

Упрощённый сценарий аутентификации

<style>
document {
   BackgroundColor #fcfcfc
}
activitydiagram {
diamond {
  BackgroundColor #Turquoise
  }
}
</style>
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 uknown)?) 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). Для имплементации запроса статуса заказа, см. /api/v2/status/.
(9) Для инициации финального перенаправления см. Финальное перенаправление.
(10) HTML страница ожидания в контуре Присоединяющейся Стороны может иметь произвольный дизайн и должна взаимодействовать с сервером Присоединяющейся Стороны в соответствии с диаграммой.
(15) и (16) то же, что и (1) и (2).