Инициализация оплаты по QR-коду (C2B2_V2)

Данный сценарий описывает инициализацию проведения оплаты за товар/услугу посредством сканирования QR-кода в POS-терминале или посредством статического QR-кода.

В рамках данного сценария клиенту предоставляется возможность QR-оплаты из приложения одного банка (банка отправителя денег) через POS-терминал или статический QR-код другого банка (банка бенефициара).

circle-exclamation

Методы API (endpoint), которые необходимо реализовать

circle-info

При реализации участниками информационного взаимодействия данные API должны быть идемпотентны (получив повторный запрос с теми же параметрами, должен выдаваться в ответе результат исходного запроса).

Схему успешного сценария процесса «Инициализация оплаты по QR-коду (C2B2_V2)» отображает рисунок ниже.

Схема процесса «Инициализация оплаты по QR-коду (C2B2_V2)»
Схематичное отображение процесса

Примечание: На схеме темно-зелеными квадратами отображены методы (endpoint), которые должны быть реализованы на стороне соответствующего участника для реализации данного сценария. Описание методов приведено в электронном формате в https://transfers-openapi.npck.kz/arrow-up-right.

Методы API (endpoint), которые необходимо реализовать каждому участнику на своей стороне в рамках процесса «Инициализация оплаты по QR-коду (C2B2_V2)», приведены в таблице ниже.

Метод API (endpoint)
Банк отправителя денег
Банк бенефициара

Запрос данных по QR-коду для оплаты

(POST /v1/transfers/iso20022/admi.009.001.02)

+

Данные для оплаты

(POST /v1/transfers/iso20022/admi.010.001.02)

+

+

Запрос на перевод денег

(POST /v1/transfers/iso20022/pacs.008.001.11)

+

Статус обработки запроса перевода денег

(POST /v1/transfers/iso20022/pacs.002.001.13)

+

+

Взаимосвязь идентификаторов сообщений

Процесс «Инициализация оплаты по QR-коду (C2B2_V2)» построен на обмене сообщениями, основанными на стандарте ISO20022, которые логически связаны между собой.

Логическая схема взаимосвязи идентификаторов сообщений

Описание процесса

Описание успешного сценария процесса «Инициализация оплаты по QR-коду (C2B2_V2)»:

Генерация и считывание QR-кода для оплаты

  1. POS-терминал направляет данные о платеже в Банк бенефициара

Для статического QR-кода данный шаг не применяется

  1. Банк бенефициара формирует данные для QR-кода для оплаты

  2. Отправитель денег в приложении Банка отправителя денег сканирует QR-код в POS-терминале или статический QR-код

circle-exclamation
  1. Банк отправителя денег направляет Платформе запрос данных для оплаты (сообщение admi.009), на основе данных из QR-кода, подписав его своим ЭЦП

chevron-rightВозможные неуспешные сценарииhashtag
  • Платформа не отвечает:

  1. Банк отправителя денег завершает процесс, не получив ответ в срок в соответствии с установленным регламентом (см. Тайм-ауты и логика повторных запросов).

  2. Процесс завершается неуспешно.

  • Валидация сообщения не прошла успешно:

  1. Валидация сообщения не проходит успешно, Платформа направляет Банку отправителя денег ответ с соответствующим ошибке HTTP статусом.

  2. Процесс завершается неуспешно.

4.1. Платформа, получив запрос, проводит его валидацию, в том числе:

  • проверяет подпись Банка отправителя денег

  • проверяет корректность заполнения полей

Если валидация запроса проходит успешно, Платформа направляет ответ с HTTP статусом 200.

  1. Платформа направляет в Банк бенефициара запрос данных для оплаты (сообщение admi.009), подписав его ЭЦП Платформы

chevron-rightВозможные неуспешные сценарииhashtag
  • Банк бенефициара не отвечает:

  1. Если Банк бенефициара не направляет ответ, то Платформа должна считать, что запрос не доставлен.

  2. Платформа завершает процесс, не получив ответ в срок в соответствии с установленным регламентом (см. Тайм-ауты и логика повторных запросов).

  3. Платформа направляет в Банк отправителя сообщение admi.010 с ошибкой.

  4. Банк отправителя денег завершает процесс, получив сообщение с информацией об ошибке.

  5. Процесс завершается неуспешно.

  • Валидация сообщения не прошла успешно:

  1. Валидация сообщения не проходит успешно, Банк бенефициара направляет ответ Платформе с соответствующим ошибке HTTP статусом.

  2. Платформа завершает процесс, получив сообщение с информацией об ошибке.

  3. Платформа направляет в Банк отправителя сообщение admi.010 с ошибкой.

  4. Банк отправителя денег завершает процесс, получив сообщение с информацией об ошибке.

  5. Процесс завершается неуспешно.

5.1. Банк бенефициара, получив запрос, проводит его обработку, в том числе:

  • проверяет подпись Платформы

  • проверяет корректность заполнения полей

  • выполняет поиск данных по идентификатору QR-кода

Если валидация запроса проходит успешно, Банк бенефициара направляет ответ с HTTP статусом 200.

  1. Банк бенефициара направляет данные для оплаты Платформе (сообщение admi.010), подписав его своим ЭЦП

chevron-rightВозможные неуспешные сценарииhashtag
  • Платформа не отвечает:

  1. Если Платформа не направляет ответ, то Банк бенефициара должен считать, что запрос не доставлен.

  2. Банк бенефициара выполняет попытку повторной отправки запроса в соответствии с установленным регламентом (см. Тайм-ауты и логика повторных запросов).

  • Валидация сообщения не прошла успешно:

  1. Валидация сообщения не проходит успешно, Платформа направляет Банку бенефициара ответ с соответствующим ошибке HTTP статусом.

  2. Банк бенефициара завершается процесс с ошибкой.

  3. Банк отправителя денег завершает процесс по тайм-ауту (см. Тайм-ауты и логика повторных запросов).

  4. Процесс завершается неуспешно.

6.1. Платформа, получив ответ, проводит его валидацию, в том числе:

  • проверяет подпись Банка бенефициара

  • проверяет корректность заполнения полей

Если валидация запроса проходит успешно, Платформа направляет ответ с HTTP статусом 200.

  1. Платформа направляет данные для оплаты в Банк отправителя денег (сообщение admi.010), подписав его ЭЦП Платформы

chevron-rightВозможные неуспешные сценарииhashtag
  • Банк отправителя денег не отвечает:

  1. Если Банк отправителя денег не направляет ответ, то Платформа должна считать, что запрос не доставлен.

  2. Платформа выполняет попытку повторной отправки запроса в соответствии с установленным регламентом (см. Тайм-ауты и логика повторных запросов).

7.1. Банк отправителя денег, получив ответ, проводит его валидацию, в том числе:

  • проверяет подпись Платформы

  • проверяет корректность заполнения полей

Если валидация запроса проходит успешно, Платформа направляет ответ с HTTP статусом 200.

  1. Отправителю денег в приложении Банка отправителя денег отображается информация о платеже, он выбирает счет для оплаты и подтверждает проведение оплаты.

chevron-rightВозможные неуспешные сценарииhashtag
  1. Клиент отменил операцию или операция отменена по иной причине на стороне Банка отправителя денег:

  • Банк отправителя денег направляет Платформе уведомление об отмене операции (сообщение admi.010), подписав его своим ЭЦП.

1.1. Платформа, получив запрос, проводит его валидацию, в том числе

  • проверяет подпись Банка отправителя денег

  • проверяет корректность заполнения полей

Если валидация запроса проходит успешно, Платформа направляет ответ с HTTP статусом 200.


• Возможные неуспешные сценарии

• Платформа не отвечает

  1. Если Платформа не направляет ответ, то Банк отправителя денег должен считать, что запрос не доставлен.

  2. Банк отправителя денег выполняет попытку повторной отправки запроса в соответствии с установленным регламентом (см.

    Тайм-ау ты и логика повторных запросовarrow-up-right).

• Валидация сообщения не прошла успешно:

  1. Валидация сообщения не проходит успешно, Платформа направляет Банку отправителя денег ответ с соответствующим ошибке HTTP статусом.

  2. Банк отправителя денег завершается процесс с ошибкой.

  3. Банк бенефициара завершает процесс по тайм-ауту (см. Тайм-ау ты и логика повторных запросовarrow-up-right).

  4. Процесс завершается неуспешно


1.2. Платформа направляет в Банк бенефициара уведомление об отмене операции (сообщение admi.010), подписав его ЭЦП Платформы.


• Возможные неуспешные сценарии

• Банк бенефициара не отвечает

  1. Если Банк бенефициара не направляет ответ, то Платформа должна считать, что запрос не доставлен.

  2. Платформа завершает процесс, не получив ответ в срок в соответствии с установленным регламентом (см. Тайм-ауты и логика повторных запросовarrow-up-right).

• Валидация сообщения не прошла успешно:

  1. Валидация сообщения не проходит успешно, Банк бенефициара направляет ответ Платформе с соответствующим ошибке HTTP статусом.

  2. Платформа завершает процесс, получив сообщение с информацией об ошибке.

  3. Процесс завершается неуспешно.


1.3. Банк бенефициара, получив запрос, проводит его обработку, в том числе:

  • проверяет подпись Платформы

  • проверяет корректность заполнения полей

Если валидация запроса проходит успешно, Банк бенефициара направляет ответ с HTTP статусом 200.

1.4. На POS-терминале выводится информация о том, что операция отменена клиентом, и процесс завершается.


Транзакция по проведению платежа

  1. Банк отправителя денег проводит проверку счета клиента на:

  • валидность статуса для его дебетования

  • отсутствие наложенного ПТП/ РПРО/ ареста и т.п.

  • достаточности средств для списания суммы операции

chevron-rightВозможные неуспешные сценарииhashtag
  • Проверка счета не прошла успешно:

  1. Банк отправителя денег уведомляет клиента о невозможности проведения операции.

  2. Процесс завершается неуспешно

  1. Банк отправителя денег проверяет возможность транзакции по счету клиента и формирует платежное поручение (pacs.008).

  2. Банк отправителя денег направляет Платформе запрос на проведение оплаты (сообщение pacs.008), подписав его своим ЭЦП.

chevron-rightВозможные неуспешные сценарииhashtag
  • Платформа не отвечает:

  1. Если Платформа не направляет ответ, то Банк отправителя денег должен считать, что запрос не доставлен.

  2. Банк отправителя денег выполняет попытку повторной отправки корректного запроса в соответствии с установленным регламентом (см. Тайм-ауты и логика повторных запросов).

  • Валидация сообщения не прошла успешно:

  1. Валидация сообщения не проходит успешно, Платформа направляет Банку отправителя денег ответ с соответствующим ошибке HTTP статусом.

  2. Процесс завершается неуспешно.

11.1. Платформа, получив запрос, проводит его валидацию, в том числе:

  • проверяет подпись Банка отправителя денег

  • проверяет корректность заполнения полей

Если валидация запроса проходит успешно, Платформа направляет ответ с HTTP статусом 200.

  1. Платформа обрабатывает запрос на проведение оплаты (сообщение pacs.008), в том числе:

  • выполняет проверку лимитов;

  • выполняет блокирование средств для проведения транзакции;

  • осуществляет проверку чистой позиции - при достижении лимита чистой позиции направляет в Банк отправителя и Банк бенефициара сообщение pacs.002 со статусом RJCT и кодом ошибки PACS_002_NET_POSITION_LIMIT_REACHED.

chevron-rightВозможные неуспешные сценарииhashtag
  • Обработка запроса на перевод денег pacs.008 Платформой не проходит успешно:

  1. Платформа направляет статус обработки запроса на проведение оплаты в Банк отправителя денег (сообщение pacs.002), подписав его ЭЦП Платформы, со статусом транзакции RJCT (отклонена).

  2. Процесс завершается неуспешно.

  1. Платформа направляет в Банк бенефициара запрос на проведение оплаты (сообщение pacs.008), подписав его ЭЦП Платформы.

chevron-rightВозможные неуспешные сценарииhashtag
  • Банк бенефициара не отвечает:

  1. Если Банк бенефициара не направляет ответ, то Платформа должна считать, что запрос не доставлен.

  2. Платформа выполняет попытку повторной отправки запроса в соответствии с установленным регламентом (см. Тайм-ауты и логика повторных запросов).

  3. Платформа завершает процесс, не получив ответ в срок в соответствии с установленным регламентом (см. Тайм-ауты и логика повторных запросов).

  4. Платформа направляет в Банк отправителя сообщение pacs.002 с ошибкой.

  5. Банк отправителя денег завершает процесс, получив сообщение с информацией об ошибке.

  6. Процесс завершается неуспешно.

  • Валидация сообщения не прошла успешно:

  1. Валидация сообщения не проходит успешно, Банк бенефициара направляет ответ Платформе с соответствующим ошибке HTTP статусом.

  2. Платформа устанавливает статус транзакции RJCT (отклонена).

  3. Платформа направляет в Банк отправителя сообщение pacs.002 с ошибкой.

  4. Банк отправителя денег завершает процесс, получив сообщение с информацией об ошибке, устанавливает статус транзакции RJCT (отклонена).

  5. Процесс завершается неуспешно.

13.1. Банк бенефициара, получив запрос, проводит его обработку, в том числе:

  • проверяет подпись Платформы;

  • проверяет корректность заполнения полей.

Если валидация запроса проходит успешно, Банк бенефициара направляет ответ с HTTP статусом 200.

  1. Банк бенефициара проверяет счет бенефициара на возможность зачисления денег.

  2. Банк бенефициара направляет статус обработки запроса проведения оплаты Платформе (сообщение pacs.002), подписав его своим ЭЦП.

chevron-rightВозможные неуспешные сценарииhashtag
  • Платформа не отвечает:

  1. Если Платформа не направляет ответ, то Банк бенефициара должен считать, что запрос не доставлен.

  2. Банк бенефициара выполняет попытку повторной отправки запроса в соответствии с установленным регламентом (см. Тайм-ауты и логика повторных запросов).

  • Валидация сообщения не прошла успешно:

  1. Валидация сообщения не проходит успешно, Платформа направляет ответ Банку бенефициара с соответствующим ошибке HTTP статусом. Банк бенефициара устанавливает статус транзакции RJCT (отклонена).

  2. Платформа устанавливает статус транзакции RJCT (отклонена).

  3. Банк отправителя денег, не получив ответ в срок в соответствии с установленным регламентом (см. Тайм-ауты и логика повторных запросов), устанавливает статус транзакции RJCT (отклонена).

  4. Процесс завершается неуспешно.

  • Транзакция отклонена (статус транзакции RJCT):

  1. Банк бенефициара направляет Платформе статус обработки запроса проведения оплаты (сообщение pacs.002) - RJCT (отклонена).

  2. Платформа направляет статус обработки запроса проведения оплаты в Банк отправителя денег (сообщение pacs.002), подписав его ЭЦП Платформы, со статусом транзакции RJCT (отклонена).

  3. Процесс завершается неуспешно.

15.1. Платформа, получив запрос, проводит его валидацию, в том числе:

  • проверяет подпись Банка бенефициара;

  • проверяет корректность заполнения полей.

Если валидация запроса проходит успешно, Платформа направляет ответ с HTTP статусом 200.

  1. Платформа направляет статус обработки запроса проведения оплаты в Банк отправителя денег (сообщение pacs.002), подписав его ЭЦП Платформы.

chevron-rightВозможные неуспешные сценарииhashtag
  • Банк отправителя денег не отвечает:

  1. Если Банк отправителя денег не направляет ответ, то Платформа должна считать, что запрос не доставлен.

  2. Платформа выполняет попытку повторной отправки запроса в соответствии с установленным регламентом (см. Тайм-ауты и логика повторных запросов).

16.1. Банк отправителя денег, получив запрос, проводит его валидацию, в том числе:

  • проверяет подпись Платформы;

  • проверяет корректность заполнения полей.

Если валидация запроса проходит успешно, Банк отправителя денег направляет ответ с HTTP статусом 200.

16.2.Банк отправителя денег снимает/блокирует сумму операции по счету клиента.

  1. Банк отправителя денег направляет в качестве уведомления об успешной транзакции в Платформу сообщение pacs.002 со статусом транзакции ACSC, подписав его своим ЭЦП.

chevron-rightВозможные неуспешные сценарииhashtag
  • Платформа не отвечает:

  1. При отсутствии ответа от Платформы, Банк отправителя денег осуществляет повторную отправку запроса с интервалом 3 секунды до тех пор, пока не будет получен ответ HTTP 200.

17.1. Платформа, получив запрос, проводит его валидацию, в том числе:

  • проверяет подпись Банка отправителя денег;

  • проверяет корректность заполнения полей.

Если валидация запроса проходит успешно, Платформа направляет ответ с HTTP статусом 200.

chevron-rightВозможные неуспешные сценарииhashtag
  • Не получен pacs.002 ACSC от Банка отправителя денег:

  1. Если Платформа в течение 30 секунд не получает сообщение pacs.002 (ACSC) от Банка отправителя денег, то транзакция завершается со статусом RJCT и при получении pacs.002 ACSC от Банка отправителя денег будет возвращен HTTP 408.

  1. Платформа направляет в качестве уведомления сообщение pacs.002 со статусом ACSC в Банк бенефициара, подписав его ЭЦП Платформы.

chevron-rightВозможные неуспешные сценарииhashtag
  • Банк бенефициара не отвечает:

  1. Платформа выполняет попытку повторной отправки запроса в соответствии с установленным регламентом (см. Тайм-ауты и логика повторных запросов).

  2. Если Банк бенефициара не направляет ответ, то Платформа считает запрос не доставленным, при этом транзакция не отклоняется и остается в состоянии ожидания сообщения pacs.002 с финальным статусом от Банка бенефициара.

  3. Банк бенефициара не получив ответ от платформы в соответствии с установленным регламентом (см. Тайм-ауты и логика повторных запросов), завершает транзакцию с ошибкой и направляет в Платформу pacs.002 со статусом RJCT с интервалом 3 секунды до тех пор, пока не будет получен ответ HTTP 200.

18.1. Банк бенефициара, получив сообщение pacs.002 со статусом транзакции, проводит его валидацию, в том числе:

  • проверяет подпись Платформы;

  • проверяет корректность заполнения полей.

Если валидация запроса проходит успешно, Банк бенефициара направляет ответ с HTTP статусом 200.

  1. Банк бенефициара производит зачисление денег на счет бенефициара и направляет информацию об этом на POS-терминал.

  2. Банк бенефициара направляет в качестве уведомления об успешной транзакции в Платформу сообщение pacs.002 со статусом транзакции ACSC, подписав его своим ЭЦП.

chevron-rightВозможные неуспешные сценарииhashtag
  • Платформа не отвечает:

  1. При отсутствии ответа от Платформы, Банк отправителя денег осуществляет повторную отправку запроса с интервалом 3 секунды до тех пор, пока не будет получен ответ HTTP 200.

20.1. Платформа, получив запрос, проводит его валидацию, в том числе:

  • проверяет подпись Банка бенефициара

  • проверяет корректность заполнения полей.

Если валидация запроса проходит успешно, Платформа направляет ответ с HTTP статусом 200.

  1. Платформа успешно завершает транзакцию (commit transaction).

  2. Платформа направляет уведомление pacs.002 со статусом ACSC до Банка отправителя денег с информацией о дате обработки транзакции (Processing Date) и информацией о размерах комиссий, подписав его ЭЦП Платформы.

  3. Банк отправителя завершает транзакцию и уведомляет клиента о завершении операции.

chevron-rightВозможные неуспешные сценарииhashtag
  1. Банк отправителя денег не получил финальное уведомление от платформы pacs.002 со статусом ACSC с информацией о дате обработки транзакции (Processing Date) и информацией о размерах комиссий.

  2. Банк отправителя денег отправляет запрос на получение статуса обработки транзакции (pacs.028) в соответствии с установленным регламентом (см. Тайм-ауты и логика повторных запросов).

circle-info

Рекомендуется: Банку отправителя денег начинать направлять запрос статуса обработки транзакции (pacs.028) через 5 секунд после успешной отправки pacs.002.

Last updated