R_ShipDays

Криптоплатёжные адаптеры

Go-микросервисы для криптодепозитов через CryptoCloud и Nimera

Два Go-микросервиса связывают внутренний finance-сервис с криптоплатёжными провайдерами CryptoCloud и Nimera: создают инвойс со ссылкой на оплату, принимают колбэк, проверяют его подпись и подтверждают депозит. Запросы к Nimera подписываются Ed25519, постбэк CryptoCloud проверяется как JWT, повторы обрабатываются идемпотентно.

Статус
Завершён
Период
Январь — апрель 2025
Формат
Заказная разработка в команде из двух Go-разработчиков
Роль
Архитектура адаптеров, интеграция с провайдерами и finance-сервисом
Схема криптоплатёжного адаптера: finance-сервис, провайдер, проверка подписи, подтверждение депозита
криптопровайдера
2криптопровайдера
эндпоинта
4эндпоинта
строк Go
≈1 800строк Go
подпись запросов
Ed25519подпись запросов

Задача

Финансовому сервису нужно было принимать криптодепозиты через внешних провайдеров так, чтобы поддельный или повторный колбэк не мог зачислить деньги, а новый провайдер подключался без переделки основного сервиса.

Что сделано

  • Создание депозита: адаптер выставляет инвойс у провайдера и возвращает ссылку на оплату
  • Приём колбэка провайдера и подтверждение депозита во внутреннем finance-сервисе
  • Nimera: статус из колбэка перепроверяется запросом к API провайдера
  • CryptoCloud: постбэк проверяется как JWT (HS256) с обязательным сроком действия и сверкой ID инвойса
  • Учёт инвойсов и статусов в PostgreSQL

Инженерные решения

  • Исходящие запросы к Nimera подписываются Ed25519 со случайными prefix и postfix, колбэк проверяется публичным ключом провайдера
  • Обмен с finance-сервисом подписан SHA-256 от отсортированных полей и общего секрета
  • Идемпотентность: повтор с тем же статусом не обрабатывается, на order_id стоит UNIQUE
  • Общий каркас адаптера: контроллер → usecase → клиент провайдера и репозиторий, зависимости через интерфейсы

Инфраструктура и DevOps

  • Docker-образ на distroless, конфигурация через переменные окружения, миграции goose

Стек

  • Go
  • Gin
  • PostgreSQL
  • pgx
  • goose
  • JWT
  • Ed25519
  • zap
  • Docker

Нужен похожий проект?

Короткий бриф в Telegram, ответ лично от меня в течение дня.