RusPay Core — self-host платежный шлюз на Laravel + Docker для YooKassa, Tinkoff Pay и SberPay
Почему российскому SaaS нужен собственный шлюз
Stripe и PayPal в России недоступны, а эквайринги банков используют разные REST-API, статусы и SDK. Чтобы сохранить конверсию, приходится интегрировать по несколько провайдеров, поддерживать их обновления и разбираться в каском статусе висит каждый платёж. Self-host open-source агрегатора под российские банки раньше не существовало; эту нишу закрывает RusPay Core.
Проблемы, которые решает проект
- Несовместимые API эквайрингов — единая конечная точка
/payments
и унифицированный web-hook - Разные статусы платежей — единый enum
pending / succeeded / failed / canceled
- Дублирование кода — плагинная архитектура Omnipay-драйверов
- Санкционные риски — разворачивается на любом VPS или bare-metal сервере
Что такое RusPay Core
RusPay Core — это MIT-лицензированный шлюз, объединяющий YooKassa, Tinkoff Pay и SberPay под единым REST- и GraphQL-API. Один вызов docker compose up
поднимает Nginx, Laravel 12, Postgres 17.5 и панель AdminJS — готово к работе за 10 минут.
Ключевые возможности версии 0.1
POST /v1/payments
возвращаетcheckout_url
для любого подключённого провайдера- idempotent-web-хуки обновляют статус платежа
- AdminJS показывает таблицу payments и позволяет делать ручной refund
- CLI утилита
ruspay provider:add FooPay
создаёт каркас нового драйвера - Покрытие тестами ≥ 70 %, CI-pipeline в репозитории
https://github.com/zxkill/ruspay-core
Архитектура
- Laravel API — контракты, токен-аутентификация и GraphQL
- Omnipay Bridge — маппинг сигнатур SDK банков в единый формат
- AdminJS — React-GUI поверх Postgres через Prisma-adapter
Драйверы добавляются как плагины, поэтому QIWI, CloudPayments или СБП можно подключить без изменений основного кода.
Быстрый старт: шлюз за 10 минут
git clone https://github.com/zxkill/ruspay-core.git
cd ruspay-core
cp .env.example .env # YOO_SHOP_ID, YOO_SECRET ...
docker compose up --build # nginx + php-fpm + postgres
Проверяем БД:
curl http://localhost:8080/health/db
# → {"db":"ok"}
Создаём тестовый платёж 100 ₽ и получаем URL redirect-кассы YooKassa:
curl -X POST http://localhost:8080/api/v1/payments \
-H "Content-Type: application/json" \
-d '{"amount":100,"currency":"RUB"}'
Дорожная карта
Спринт 2 — Tinkoff Pay + SberPay, web-хуки, enum-статусы (ETA 14 июля 2025)
Спринт 3 — AdminJS GUI, token-auth, manual refund (ETA 28 июля 2025)
Спринт 4 — Demo checkout, Swagger UI, ≥ 70 % coverage (ETA 11 августа 2025)
Кому пригодится RusPay Core
- SaaS-платформам — принимать карты без посредников
- Маркетплейсам — хранить данные платежей в своей БД
- E-commerce на Laravel — миграция со Stripe за одну абстракцию
- Fintech-стартапам — rapid-прототип за неделю
Как помочь проекту
- Напишите Omnipay-адаптер для QIWI или CloudPayments
- Добавьте фильтры и экспорт CSV в Admin Dashboard
- Переведите README на английский, испанский или португальский
FAQ
Как заменить Stripe в России и избежать санкций?
Используйте redirect-флоу RusPay Core: данные карты вводятся на стороне банка, поэтому вы остаетесь в PCI SAQ A.
Где взять тестовые ключи YooKassa?
В кабинете YooKassa доступны sandbox-ключи, интегрируйтесь до регистрации ООО.
Поддерживает ли RusPay Core подписки?
Рекуррентные платежи запланированы на версию 0.2.
Итог
RusPay Core закрывает нехватку self-host решения для российских эквайрингов: единый API, MIT-код, развёртывание в Docker и гибкая плагинная архитектура. Хотите контролировать процессинг платежей на своём сервере — форкните репозиторий, поставьте ⭐ и присоединяйтесь к обсуждению в Telegram.