Skip to content

v0.7.0 — стейджинг-стенд одной командой, runtime-образ без dev-скриптов

Choose a tag to compare

@bestdeejay-design bestdeejay-design released this 14 Oct 17:24
· 32 commits to main since this release
368e3a4

mock-services — тестовые моки банков и касс РФ по официальным протоколам

Публичный тестовый контур для интеграторов: имитирует банк-эквайринг и облачные кассы/ОФД
по официальным протоколам, чтобы тестировать платёжную и фискальную интеграцию до договора
с провайдером
— с честными схемами, кодами ошибок, сценариями отказов, виртуальными часами
и изоляцией песочниц. Ноль зависимостей (Node ≥ 18), образ на Node 22, Apache-2.0.

Что внутри (9 адаптеров)

Сервис Порт Что имитирует
tbank-mock 3100 Т-Банк эквайринг: Init/Confirm/Cancel, СБП QR, рекурренты, Мультирасчеты (acqapi), чарджбэки e2e
kassa-mock 3101 Облачная касса Ferma: полная матрица 54-ФЗ (продажи/возвраты/коррекции, авансы, маркировка, очередь ОФД, смены ККТ, Z-отчёты)
yookassa-mock 3102 ЮKassa REST /v3: Basic Auth + Idempotence-Key, two-stage платежи, возвраты, confirmation-страница, вебхуки
atol-mock 3103 АТОЛ Онлайн direct API v4: ФФД 1.05, шесть операций фискализации, идемпотентность, callback
alfa-mock 3104 Альфа-Банк интернет-эквайринг REST: register/deposit/reverse/refund, ACS 3DS1/3DS2, GET-callback с HMAC-SHA256
sber-mock 3105 Сбербанк Ecom REST: JSON-шлюз, карта/ACS, callback POST без подписи
vtb-mock 3106 ВТБ SMB E-commerce: OAuth 2.0, orders/refunds, десятичные рубли, callback {type, object}
first-ofd-mock 3107 Первый ОФД (облачная касса OKassa): getToken → Bearer, асинхронная очередь чеков
kontur-ofd-mock 3108 Контур.ОФД: чтение фискальных документов (Sid + API key), пагинация, копейки

В каждом адаптере: сценарии отказов (X-Mock-Scenario), виртуальные часы (/mock/time),
мульти-песочницы (RFC-001), журнал «как мок понял ваш запрос» (/admin/journal),
OpenAPI 3.1 (/openapi.json), DX-ошибки «код + поле + подсказка».

Как запустить

Требуется Docker (или Node ≥ 18 без Docker — npm run start:<сервис> из репозитория).

# 1. Скачать образ (тег; для воспроизводимости — digest)
docker pull ghcr.io/rucorp/mock-services:0.7.0
docker pull ghcr.io/rucorp/mock-services@sha256:f877d3d9ebae35e36cda98573046aca5f85c0103b737856b94a04b5e45ab2484

# 2а. Полный стенд из образа — все 9 сервисов (файл из тега релиза)
curl -fsSLO https://raw.githubusercontent.com/rucorp/mock-services/v0.7.0/docker-compose.include.yml
docker compose -f docker-compose.include.yml --profile mock up -d

# 2б. Один сервис одной командой
docker run -p 3100:3100 ghcr.io/rucorp/mock-services:0.7.0 node services/tbank-mock/server.js

# 2в. Лёгкий стенд «банк + касса» для стейджинга (tbank :3100 + Ferma :3101)
curl -fsSLO https://raw.githubusercontent.com/rucorp/mock-services/v0.7.0/docker-compose.staging.yml
docker compose -f docker-compose.staging.yml up -d

# 3. Проверить: http://localhost:3100/health (банк), http://localhost:3101/healthz (касса)

По умолчанию порты слушают только 127.0.0.1. Перед размещением на общем хосте обязательно
задайте MOCK_OPERATOR_TOKEN/MOCK_ADMIN_TOKEN и прочитайте SECURITY.md — все креды в
дефолтах синтетические и только для тестов.

Где документация

  • Интеграция «за 10 минут» по каждому провайдеру: docs/integration/ (tbank-eacq, ferma-ofd, yookassa, atol, alfa, sber, vtb, first-ofd, kontur-ofd)
  • README сервисов (маршруты, env-переменные, границы мока): services/<имя>-mock/
  • Общий README (быстрый старт, матрица возможностей, дорожная карта): README.md
  • OpenAPI 3.1 — в образе по /openapi.json каждого сервиса и в docs/openapi/
  • Безопасность: SECURITY.md

Что нового в 0.7.0 (относительно 0.6.0)

  • Added: docker-compose.staging.yml (#107) — самодостаточный стенд «банк + касса» из pinned-образа одной командой, без клонирования репозитория.
  • Added: девятый адаптер kontur-ofd-mock :3108 (#97) — Контур.ОФД, чтение фискальных документов.
  • Changed: runtime-образ без dev-скриптов (#106) — из scripts/ в образе только healthcheck; selftest'ы, протоколы, integration-гайды и OpenAPI в образе остались.
  • Fixed: приоритет X-Sandbox-Token/X-Owner-Token над Authorization: Bearer в owned-режиме (#98) — исправлены 401 у адаптеров, чей контракт сам использует Bearer.
  • Changed: CI — docker-джоб на self-hosted раннере с порт-ремапом 3910–3917, закрыт MS-22: MOCK_*_PUBLIC_BASE_URL следует за хост-портом (#103).

Полный список — CHANGELOG.md.

Участие и правила для ИИ-агентов

  • Как внести вклад: CONTRIBUTING.md — баг-репорт, расхождение с протоколом провайдера, новый адаптер.
  • Правила для ИИ-агентов (Arena, Claude Code и др.): AGENTS.md — обязательные прогоны, стили, что нельзя ломать.
  • Баги и расхождения с протоколом — через шаблоны issues.

Версионирование

SemVer, Keep a Changelog. Тег 0.7.0 мутабельный —
для прод-пинов используйте digest (см. «Обновление релиза» в CONTRIBUTING.md).
Протоколы воспроизводятся по публичной документации провайдеров; товарные знаки принадлежат их владельцам.