Контекст
Сервисам, которые работают с самозанятыми, нужна программная регистрация доходов и выставление счетов через API «Мой Налог». Готового клиента под Java не было — каждая команда писала свой, дублируя авторизацию, обновление токена и обработку ошибок.
Решение
Библиотека с двумя вариантами интеграции: автоконфиг Spring Boot Starter (две строки в application.properties) и standalone-режим без Spring. Внутри — авторизация по логину/паролю с автоматическим retry, фоновое обновление токена (ReadWriteLock), отправка чеков sync/async, выставление счетов с реквизитами банка, прокси-поддержка (HTTP/HTTPS, с авторизацией и без) и настраиваемый таймаут.
Стек и архитектура
- Runtime: Java 17.
- Сетевой слой: HTTP-клиент со встроенным retry.
- Concurrency:
ReadWriteLockна обновлении токена. - Auto-config: Spring Boot Starter.
- Конфигурация: через свойства Spring или конструктор клиента.
Роль и результат
Мы собрали библиотеку из реальной потребности: единая точка для всех ФНС-операций, безопасная многопоточная работа и две строчки конфигурации для подключения. Использовалась в нескольких сервисах в проде.