Общие принципы и правила¶
Статья описывает общие принципы и правила взаимодействия c сервисами продукта Приём платежей.
Проведение платежа и взаиморасчёты¶
Пример успешного проведения оплаты и последующих взаиморасчётов в упрощённом виде описан и изображён ниже. В примере оплата совершается с банковской карты.
Проведение платежа
- Клиент выбирает товар или услугу на торговой площадке партнёра, попадает на платёжную форму, заполняет необходимые поля и нажимает «Оплатить».
- QIWI получает запрос на совершение операции.
- QIWI отправляет запрос на совершение операции в платёжную систему, которая обслуживает карту.
- Платёжная система отправляет запрос на совершение операции банку-эмитенту, который выпустил карту клиента.
- Банк-эмитент изменяет состояние счёта клиента и отправляет ответ об успешном совершении операции платёжной системе.
- Платёжная система отправляет ответ об успешном совершении операции QIWI.
- QIWI информирует об успешном совершении операции партнёра.
Взаиморасчёты
В результате проведения платежей денежные средства накапливаются и после накопления определенной суммы или по истечении определённого количества дней перечисляются на расчётный счёт партнёра в выбранной им кредитной организации.
%%{init: {
"sequence" : {
"wrap":true,
"diagramMarginY": 0,
"mirrorActors":true,
"width":120,
"messageFontSize":14,
"noteFontSize":12,
"actorFontSize":14,
"actorMargin":
15 }}}%%
sequenceDiagram
participant С as Клиент
participant P1 as Торговая площадка партнёра
participant P2 as Кредитная организация партнёра
participant Q as QIWI
participant PS as Платежная система
participant B as Банк-эмитент
rect rgb(230, 230, 230)
Note over С, B: Проведение платежа
loop Повторяется с определённой периодичностью
С->>P1: Оплата товара или услуги
Note over P1: Платёжная форма
P1->>+Q: Запрос на совершение операции
Q->>+PS: Запрос на совершение операции
PS->>+B: Запрос на совершение операции
B->>-PS: ОК
PS->>-Q: ОК
Q->>-P1: ОК
P1->>С: Коммуникация с клиентом
end
end
rect rgb(255, 238, 223)
Note over P2, B: Взаиморасчеты
B->>PS: ₽₽₽
PS->>Q: ₽₽₽
Q->>P2: ₽₽₽
end
Решение об успешности операции¶
Для принятия решения об успешности операции (например, авторизации или подтверждения платежа) партнёру нужно:
- дождаться уведомления от QIWI;
- выполнить запрос статуса операции к QIWI.
Для понимания статуса операции рекомендуется основываться на значении поля status
в ответе на запрос статуса соответствующей операции. Это позволит устранить риски, связанные с получением ложных уведомлений: риски компрометации данных в случае утечки «секрета», который используется при вычислении цифровой подписи уведомления.
Запрос статуса операции рекомендуется выполнять после получения уведомления.
Обратите внимание
Если уведомление не поступило в течение 10 минут с момента совершения операции, необходимо выполнить запрос статуса.
Последовательность действий для принятия решения об успешности операции на примере оплаты с формы QIWI изображена ниже. В примере оплата выполняется по одношаговому сценарию.
%%{init: {
"sequence" : {
"wrap":true,
"messageFontSize":15,
"noteFontSize":14,
"actorMargin":
110 }}}%%
sequenceDiagram
participant С as Клиент
participant P as Партнёр
participant B as BaaS
С->>P: Оплата с формы QIWI
Note right of С: «Оплатить»
P->>+B: Сценарий «Оплата с формы QIWI с помощью API»
Note right of P: billId, flags:[SALE]
B->>-P:
Note left of B: Направление на `successUrl`
rect rgb(255, 238, 223)
B->>+P: Сценарий «Получение уведомления»
P-->>-B:
Note left of B: billId, paymentId, status:SUCCESS
end
rect rgb(230, 230, 230)
P->>+B: Запрос статуса счёта (Payments API)
Note right of P: billId
B-->>-P: Ответ на запрос статуса
Note left of B: billId, status:PAID, paymentsData
end
P->>С: Коммуникация с клиентом
Запросы описаны в документации API приёма платежей.
Упомянутые на диаграмме сценарии см. в статьях: