1.7. Предавторизация с использованием формы, списание и отмена

Введение

Оплата — тип транзакции, при которой банк блокирует определённую сумму на карте Плательщика и не позволяет использовать эту сумму. Важно учесть, что блокирование средств действует в течение определённого периода (обычно это до 7 дней для дебетовых карт и до 28 дней для кредитных карт). Интеграция по форме позволяет Присоединяющейся стороне снять с себя ответственность за хранение, обработку и передачу карточных данных Плательщика или какой-либо другой конфиденциальной информации о платеже. Эти данные вводятся Плательщиком на платёжной форме SBC в среде, сертифицированной по стандарту безопасности PCI DSS.
Списание - тип транзакции, следующий за предавторизацией, для списания предварительно заблокированных средств с карты Плательщика.
Отмена - противоположная списанию транзакция, отменяющая блокировку и возвращающая средства в свободное пользование Плательщиком.
Все формы настраиваемы. Примеры и макросы - см. настройки Платёжной Формы, Предварительно Заполненных Данных, Формы Ожидания и Финишной Формы в разделе Настройка Форм.

Значение терминов см. в Глоссарии.

Сценарий предавторизации по форме

  skinparam roundcorner 20
  skinparam sequenceArrowThickness 2
  skinparam ParticipantPadding 30
  actor Плательщик as Customer
  participant "Веб-сайт\nПрисоединяющейся Стороны" as Merchant
  participant "Платёжный Шлюз" as g
  autonumber
  Customer -> Merchant: Инициализация
  activate Merchant
  == Запрос проведения оплаты ==
  Merchant -> g: api/v2/preauth-form
  activate g
  g --> Merchant: Redirect-url, orderId
  deactivate g
  Merchant -> Customer: Предоставление redirect-url \nбраузеру Плательщика
  deactivate Merchant
  activate Customer
  Customer -> g: GET redirect-url
  deactivate Customer
  activate g
  g --> Customer: Форма оплаты
  deactivate g
  activate Customer
  Customer -> g: Подтверждение формы
  deactivate Customer
  activate g
  g --> g: Обработка платежа
  == Финальное перенаправление клиента ==
  g -> Customer: redirect_url веб-сайта \nПрисоединяющейся Стороны
  activate Customer
  Customer -> Merchant: POST redirect_url\nstatus, orderid
  deactivate Customer
  activate Merchant
  group Get Final Status
  == Получение обратного вызова \nПрисоединяющейся Стороны ==
  Merchant <- g: Обратный Вызов \nс финальным статусом
  g <-- Merchant: HTTP 200
  deactivate g
  == Запрос статуса ==
  Merchant -> g: api/v2/status
  activate g
  g --> Merchant: Ответ \nstatus, order-stage
  deactivate g
  end
  Merchant -> Customer: Показ результата
  deactivate Merchant

(2) Для имплементации запроса на проведение предавторизации по форме см. /api/v2/preauth-form/.
(9) Для имплементации финального перенаправления Плательщика см. Финальное Перенаправление.
(11,12) Для имплементации запроса статуса заказа, см. /api/v2/status/. Статус должен запрашиваться несколько раз с интервалом в 3-5 секунд до получения финального статуса.
(13 Для обработки обратного вызова с окончательным статусом заказа см. Обратный вызов Присоединяющейся Стороны.

Сценарий списания

  skinparam roundcorner 20
  skinparam sequenceArrowThickness 1
  skinparam maxmessagesize 100
  skinparam sequenceParticipant underline
  actor Плательщик
  participant "Присоединяющаяся Сторона" as A
  participant "Платёжный Шлюз" as B
  hnote over A,B : Успешная транзакция преавторизации
  autonumber
  group Опционально
  Плательщик -> A: Инициация списания
  activate A
  end
  == Списание ==
  A -> B: api/v2/capture
  activate B
  B --> A: ИД транзакции
  B -> B: Обработка списания
  group Получение финального статуса
  == Получение обратного вызова \nПрисоединяющейся Стороны ==
  A <- B: Обратный вызов с финальным статусом
  A --> B: HTTP 200
  deactivate B
  == Запрос статуса ==
  A -> B: Получение статуса по ИД транзакции api/v2/status
  activate B
  B --> A: Ответ со статусом, Order-stage
  deactivate B
  end
  group Опционально
  A --> Плательщик: Конечный статус
  deactivate A
  end

(1) Списание может быть инициировано Присоединяющейся Стороной в соответствии с бизнес-моделью или по запросу Плательщика.
(2) Для имплементации запроса на списание см. /api/v2/capture/.
(5) Обратный вызов по списанию будет отправлен только в случае, если notify_url был предоставлен в инициирующем запросе предавторизации или дополнительный обратный вызов установлен на предоставленный URL для списаний на уровне терминала. Если в запросе предавторизации был предоставлен server_callback_url, обратный вызов по списанию не будет отправлен. Для обработки обратных вызовов см. Обратный вызов Присоединяющейся Стороны.
(7) Для имплементации запроса статуса заказа, см. /api/v2/status/. Статус должен запрашиваться несколько раз с интервалом в 3-5 секунд до получения финального статуса.
(9) Конечный статус может быть предоставлен Присоединяющейся Стороной в соответствии с бизнес-моделью или по запросу Плательщика.

Сценарий отмены

  skinparam roundcorner 20
  skinparam sequenceArrowThickness 1
  skinparam maxmessagesize 100
  skinparam sequenceParticipant underline
  actor Плательщик
  participant "Присоединяющаяся Сторона" as A
  participant "Платёжный Шлюз" as B
  hnote over A,B : Успешная транзакция преавторизации
  autonumber
  group Опционально
  Плательщик -> A: Инициация отмены
  activate A
  end
  == Отмена ==
  A -> B: api/v2/return
  activate B
  B --> A: ИД транзакции
  B -> B: Обработка отмены
  group Получение финального статуса
  == Получение обратного вызова \nПрисоединяющейся Стороны ==
  A <- B: Обратный вызов с финальным статусом
  A --> B: HTTP 200
  deactivate B
  == Запрос статуса ==
  A -> B: Получение статуса по ИД транзакции api/v2/status
  activate B
  B --> A: Ответ со статусом, Order-stage
  deactivate B
  end
  group Опционально
  A --> Плательщик: Конечный статус
  deactivate A
  end

(1) Отмена предавторизации может быть вызвана Присоединяющейся Стороной в соответствии с бизнес-моделью или по запросу Плательщика.
(2) Для имплементации запроса на отмену см. /api/v2/return/.
(5) Обратный вызов по отмене будет отправлен только в случае, если notify_url был предоставлен в инициирующем запросе предавторизации или дополнительный обратный вызов установлен на предоставленный URL для отмен на уровне терминала. Если в запросе предавторизации был предоставлен server_callback_url, обратный вызов по отмене не будет отправлен. Для обработки обратных вызовов см. Обратный вызов Присоединяющейся Стороны.
(7) Для имплементации запроса статуса заказа, см. /api/v2/status/. Статус должен запрашиваться несколько раз с интервалом в 3-5 секунд до получения финального статуса.
(9) Конечный статус может быть предоставлен Присоединяющейся Стороной в соответствии с бизнес-моделью или по запросу Плательщика.