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.

GiHub https://github.com/zxkill/ruspay-core

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *