Кейс
Платёжный шлюз для финтех-платформы
Высоконагруженный платёжный шлюз на Laravel и Go: обработка платежей с гарантией идемпотентности и аптаймом 99,98%.
- Год
- 2025
- Клиент
- Финтех-платформа (B2B-эквайринг)
- Роль
- Lead Backend Engineer
Описание
Платёжный шлюз — ядро финтех-платформы, через которое проходят все денежные операции: приём платежей, выплаты, возвраты и сверка с банками-эквайерами. Я спроектировал и реализовал систему, способную обрабатывать тысячи транзакций в секунду с жёсткими требованиями к корректности и отказоустойчивости. Продуктовая логика и интеграции с провайдерами реализованы на Laravel, а критичный по латентности слой маршрутизации и обработки колбэков вынесен в сервис на Go. Все денежные суммы хранятся в целых минимальных единицах, любая операция идемпотентна за счёт ключей идемпотентности, а согласованность между шлюзом и провайдерами обеспечивается паттерном transactional outbox и асинхронной сверкой. Особое внимание уделено безопасности: токенизация платёжных данных, строгая авторизация каждого действия, аудит всех изменений состояния и защита от повторной обработки колбэков. Очереди на Redis обрабатывают вебхуки от провайдеров с гарантией повторных попыток и защитой от дублей, а PostgreSQL выступает надёжным источником истины с продуманной схемой и индексами под аналитические выборки.
Задача
Прежняя монолитная интеграция не выдерживала пиковых нагрузок, теряла колбэки провайдеров и допускала повторное списание средств при сетевых сбоях. Сверка с банками велась вручную и занимала часы.
Решение
Выделил платёжный домен в отдельный сервис, ввёл ключи идемпотентности на каждую операцию, реализовал transactional outbox для надёжной публикации событий, перенёс обработку колбэков в очереди с дедупликацией и автоматизировал сверку с эквайерами.
Результаты
Аптайм вырос до 99,98%, повторные списания исключены полностью, время автоматической сверки сократилось с нескольких часов до 4 минут, пиковая пропускная способность увеличилась в 5 раз без деградации латентности.