| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| Dockerfile | ||
| error.json | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.MD | ||
| server.js | ||
FNS Receipt Service
Express-сервис на Node.js 22 для создания чеков через ФНС и отправки ссылки на чек по email.
Локальный запуск
npm install
cp .env.example .env
npm start
Сервис запустится на порту из PORT или на 4000 по умолчанию.
Docker
Сборка образа:
docker build -t fns-receipt-service .
Запуск контейнера:
docker run --env-file .env -p 80:80 fns-receipt-service
Переменные окружения
Заполните эти переменные в Timeweb Cloud в разделе переменных окружения:
INN=123456789012
PASSWORD=your_fns_password
APPNAME=Название проекта
ADMIN_EMAIL=admin@example.com
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=noreply@example.com
SMTP_PASS=email_app_password
SMTP_MAIL_FROM=noreply@example.com
API_PASS=strong_api_password
PORT=80
HOST=0.0.0.0
API_PASS должен совпадать с api_pass в запросах к POST /api/v1/create-receipt.
Timeweb Cloud
Что заполнить при деплое:
| Поле | Значение |
|---|---|
| Runtime | Node.js 22 |
| Фреймворк | Express |
| Команда сборки | npm install |
| Зависимости | npm install |
| Команда запуска | npm start |
| Путь до директории проекта | /fns-receipt-service |
| Путь проверки состояния | /health |
Если Timeweb Cloud сам устанавливает зависимости, в поле команды сборки можно оставить npm install или не указывать команду сборки, если интерфейс позволяет.
API
Проверка состояния:
GET /health
Создание чека:
POST /api/v1/create-receipt
Content-Type: application/json
{
"api_pass": "strong_api_password",
"email": "client@example.com",
"items": [
{
"id": "order-1",
"name": "Услуга",
"price": 1000,
"quantity": 1
}
]
}