Тема
superpos-core
Ядро процессинга и единственное место, где живёт бизнес-логика платежа. Заводит транзакцию, проверяет ограничения, выбирает банк, ведёт статусы, считает комиссии и баланс мерчанта, принимает колбеки банков и инициирует уведомление мерчанту. Когда в разговоре говорят «ядро» — имеют в виду этот сервис.
Стек: Node.js и TypeScript, часть кода — исторический JavaScript.
Чего не делает
Не принимает карточные данные напрямую от мерчанта: они приходят уже токенизированными из PCI-шлюза. Не разговаривает с банками на их языке — для этого есть драйверы. Не доставляет колбеки мерчанту, а только ставит их в очередь. Не занимается аутентификацией мерчанта: проверку логина и подписи делает сервис авторизации.
Входы
- Запросы от публичных шлюзов: создание платежа, проверка статуса, выплаты, возвраты, двухстадийные операции.
- Возврат плательщика с 3DS и колбеки банков — оба типа приходят сюда, не в сервис колбеков.
- Запросы админки и личного кабинета мерчанта.
- Отложенные задачи из собственных очередей: переспрос статуса, таймауты, отправка уведомлений.
Выходы
- Сервис драйверов по HTTP с подписью — все обращения к банкам.
- Сервис токенизации — получить карточные данные, когда их нужно передать в банк.
- Антифрод — проверка платежа и уведомление о результате.
- Очередь колбеков, которую разбирает
superpos-callback. - Прочие сервисы по мере надобности: авторизация, уведомления, чеки, курсы, региональные сервисы.
Хранилища
MongoDB — основное: транзакции, мерчанты, счета, гейты, банки, балансировщики, списки, логи взаимодействия с гейтами. Redis — очереди и кэш. PostgreSQL — вторичное зеркало транзакций для отчётности.
Участвует во флоу
Во всех. Практически любой сценарий из раздела флоу проходит через ядро хотя бы одним шагом — см. базовый платёжный флоу.
Где искать
- Репозиторий: smartpayments-dev/superpos-core.
- Инфраструктура, сетевые связи и логи: карточка сервиса в описании прод-контура.
- Публичная документация: ядро наружу не смотрит, но исполняет почти все операции merchant API — создание платежа, проверка статуса, возврат, рекуррент.
- Правила работы с кодом ядра:
.cursor/rules/в репозитории — в частности, требование не наращивать историческую модель транзакции, а выносить логику в отдельные сервисы.