Найти тему
Software development

Реактивное платежное приложение на Spring Boot #1

В этом цикле статей я реализую не учебное, а реальное приложение, которое будет работать в проде.

Приложение будет интегрировать киви сервисы по оплате с нашей БД. Роль БД будет выполнять сервис, который не могу открыть, т.к. это не учебный пример.

Вот схема работы приложения (серый цвет - будем реализовывать):

Суть проста. По этому принципу интегрируется много платежных сервисов. После реализации киви платежей будем интегрироваться со Сбером.

Описание:

1) Пользователь хочет совершить платеж (или покупку)

2) Сервисы киви отправляют на наш рест сервис команду check (проверка возможности транзакции). Рест сервис проверяет возможность оказания услуги через сервис БД (статус пользователя, сумма и т.д.).

3) Отвечает киви сервису, "можно совершить платеж" (ok).

4) Приходит команда pay - мы заносим информацию о платеже в БД.

5) Возвращаем в киви "ок" - т.е. платеж занесен и деньги переводятся на подключенный нами счет.

Весь цикл команд (check - pay) - это единая транзакция и чтобы она была выполнена успешно - все шаги должны быть выполнены положительно.

Реализовывать будем на Spring Boot 3 и WebFlux.

Т.е. сервис будет реактивным (асинхронным).

Для чего это нужно: если мы будем использовать стандартный web-starter, то возможно наше приложения может ответить "сервис недоступен", если будет много запросов на платежи.

А используя spring boot webflux starter мы получим не блокирующие вызовы и сможем обрабатывать одновременно больше запросов. Рекомендую почитать про реактивное программирование.

В следующей статье приступим к созданию "платежного приложения".