Криптоплатёжные адаптеры
Go-микросервисы для криптодепозитов через CryptoCloud и Nimera
Два Go-микросервиса связывают внутренний finance-сервис с криптоплатёжными провайдерами CryptoCloud и Nimera: создают инвойс со ссылкой на оплату, принимают колбэк, проверяют его подпись и подтверждают депозит. Запросы к Nimera подписываются Ed25519, постбэк CryptoCloud проверяется как JWT, повторы обрабатываются идемпотентно.
- Статус
- Завершён
- Период
- Январь — апрель 2025
- Формат
- Заказная разработка в команде из двух Go-разработчиков
- Роль
- Архитектура адаптеров, интеграция с провайдерами и 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


