Ваша компания разрабатывает интернет-магазин. Пользователи вашего магазина могут:
Для оплаты заказа ваш магазин использует внешнего провайдера оплаты. Он предоставляет вам N аккаунтов. Вы обращаетесь к провайдеру по протоколу HTTP, передавая данные аккаунта и детали оплаты. Описание вызова провайдера оплаты
Первоначальная интеграция оплаты уже произведена - все настроено и ваш сервис умеет делать HTTP запрос к одному из аккаунтов. Вы можете увидеть необходимый код в пакете ru.quipy.payments
, интерфейсах PaymentService
, PaymentExternalSystemAdapter
и их реализациях
Вам необходимо оптимизировать процесс взаимодействия с провайдером при большом количестве запросов, учитывая особенности аккаунтов и возможное поведение системы провайдера.
Клиентские приложения / Клиенты - сервис или набор сервисов, которые делают покупки в онлайн-магазине, инициируют процесс оплаты заказа.
Онлайн-магазин / Интернет-магазин / Магазин - сервис, который осуществляет управление логикой создания заказов и оплаты через внешнего провайдера. Сервис, который вам предстоит дорабатывать.
Провайдер оплаты - внешний сервис, через который осуществляется оплата заказа
Аккаунт провайдера оплаты - логическая сущность, которая позволяет идентифицировать пользователя и его тариф. Стоит относиться к каждому аккаунту как к отдельному внешнему сервису со своим поведением.
Каждое задание-кейс предоставляет вам следующие входные данные / контекст:
Извлечь максимальную финансовую выгоду для онлайн-магазина, оплачивая максимальное количество заказов.