Навигатор по технической документации Payment Manager для разработчиков и операторов.
Payment Manager — dev docs¶
Этот раздел собирает всё, что нужно человеку, который читает или меняет код PM: устройство сервиса, контракты API, внутренние модули, интеграции с TigerBeetle и PSP, процедуры эксплуатации и готовые рецепты для типовых задач. Каждый подраздел самодостаточен и ссылается на соседей по мере необходимости.
С чего начать¶
Новому разработчику рекомендуется идти по такому маршруту:
- architecture/01-overview.md — что такое PM, его границы и место в системе.
- architecture/02-module-map.md — карта внутренних модулей и как они связаны.
- architecture/03-intent-saga.md — поток intent от приёма до расчёта в ledger.
- modules/intent.md — главный модуль и точка входа в платёжный поток.
- api/intents.md — основной HTTP-контракт
POST /intents.
После этого можно нырять в нужный модуль по карте или в reference/ за справочниками.
architecture/¶
Как PM устроен в целом: границы сервиса, поток intent, разделение схем PostgreSQL и роль TigerBeetle.
- 01-overview.md — общая картина PM и его место в OneWallet.
- 02-module-map.md — карта модулей
src/и кто кого зовёт. - 03-intent-saga.md — жизненный цикл intent и saga-механика.
- 04-two-phase-channels.md — pending/post-расчёт для асинхронных каналов и синхронный INTERNAL.
- 05-tigerbeetle-accounts.md — устройство TB-аккаунтов, типы и инвариант
transit.balance = 0. - 06-deterministic-ids.md — детерминированная генерация TB account/transfer ID.
modules/¶
Карта внутренних модулей кода: что делает, где живёт, какие соседи зовут его и кого он зовёт.
- auth.md — HMAC- и JWT-аутентификация, проверка
X-Service-Id/X-Signature. - channels.md — реестр каналов (
INTERNAL,IPPS,QP) и их различия. - intent.md — приём, нормализация и роутинг intent, главный entry point.
- ledger.md — обёртка над TigerBeetle SDK, создание аккаунтов и трансферов.
- limits.md — дневные/месячные лимиты и их проверка.
- operation-types.md — реестр типов операций и их семантика.
- policies.md — step-up auth policies (биометрия, PIN).
- psp.md — psp-router, psp-worker и интеграция с PSP-адаптерами.
- rule-engine.md — единый движок правил для fee/limit/policy.
- shared.md — общие утилиты, конфиг, логгер, error-классы.
- workers.md — OutboxWorker и фоновые роли (psp-worker, saga-worker).
api/¶
Внешние HTTP-контракты: эндпоинты, схемы, формат ошибок, HMAC и JWT.
- accounts.md —
GET /accounts/balance, история и read-only-доступ к TB. - admin.md — admin-эндпоинты (корректировки, ручное завершение intent).
- auth.md — HMAC-схема для service-to-service и JWT для пользовательских роутов.
- errors.md — единый формат ошибок и таблица кодов.
- intents.md —
POST /intents,GET /intents/:id,POST /intents/:id/confirm|cancel. - policies.md — эндпоинты для оценки и управления auth-политиками.
reference/passport/¶
Канонический контракт PM — DTO, перечисления, коды. Перед изменением парсеров и тестов сверяйся именно здесь.
- 00-index.md — обзор паспорта и принцип «одна правда».
- 01-dto-contracts.md — DTO
IntentDto,QuoteDto,ConfirmDto. - 02-channels.md — реестр каналов и их атрибутов.
- 03-operation-types.md — реестр operationType.
- 04-event-types.md — события intent (
intent.created,intent.settled, …). - 05-error-codes.md — справочник кодов ошибок.
- 06-service-keys.md — service-ключи, их роли и разрешения.
reference/database/¶
Схема pm.* в PostgreSQL: таблицы, связи, миграции через Drizzle.
- 01-schema-overview.md — общий обзор схемы
pm.*и search_path. - 02-intent.md — таблица
pm.intent. - 03-tx-history.md —
pm.tx_historyи связь с intent. - 04-payment-route.md —
pm.payment_routeи маршрутизация. - 05-fee-rule.md —
pm.fee_ruleи rule-engine для комиссий. - 06-tb-account-map.md — отображение userId/merchantId на TB account.
- 07-psp-tx-map.md — очередь PSP-операций (Phase 1).
- 08-auth-policies.md —
pm.auth_policyдля step-up. - 09-outbox-event.md —
pm.outbox_eventи transactional outbox. - 10-intent-event.md —
pm.intent_eventдля Redis pub/sub. - 11-service-key.md — service-ключи в БД и их permissions.
- 12-limit-rule.md —
pm.limit_ruleи движок лимитов. - 13-migrations.md —
drizzle-kit migrate, правила миграций.
reference/¶
- env-vars.md — справочник всех переменных окружения PM.
integrations/¶
Внешние зависимости PM. Старый closeloop — не используется, см. историю git.
- admin-panel.md — read-only-доступ Admin Panel к TigerBeetle.
- auth-center.md — JWT, вызовы
POST /intentsот Auth Center. - ipps.md — IPPS-драйвер и Phase 1 PSP-логика (
psp-worker+ PostgreSQL queue). - nginx.md — ingress, auth_request, проксирование
/api/pm/*. - redis.md — pub/sub для intent-статусов и (Phase 2B) Redis Streams.
- tigerbeetle.md — TB SDK, инварианты, two-phase transfers.
closeloop— не используется, см. историю git (старыйdocs/CLOSELOOP-INTEGRATION.mdудалён).
operations/¶
Эксплуатация PM: запуск, миграции, мониторинг, разбор инцидентов.
- deployment.md — Docker, окружения, выкат, конфиги.
- health-checks.md — endpoint'ы readiness/liveness и их семантика.
- monitoring.md — метрики, алёрты, дашборды.
- runbook.md — разбор инцидентов и восстановление застрявших intent.
- seed-and-migrations.md — seed-скрипты и порядок миграций.
- worker-roles.md — роли процессов (
api,outbox-worker,psp-worker, …).
cookbook/¶
Пошаговые рецепты под типовые задачи разработки.
- add-channel.md — как добавить новый платёжный канал.
- add-operation-type.md — как добавить новый operationType.
- add-payment-route.md — как добавить запись в
pm.payment_route. - add-service-key.md — как выпустить и зарегистрировать service-ключ.
- debug-stuck-intent.md — как отлаживать зависший intent.
- issue-merchant-invoice.md — как выписать мерчант-инвойс.
- run-locally.md — как поднять PM локально (DB, TB, Redis).
- run-tests.md — как прогонять Vitest и интеграционные тесты.
- write-auth-policy.md — как написать step-up-политику.
- write-fee-rule.md — как написать fee-rule.
- write-limit-rule.md — как написать limit-rule.
testing/¶
Как устроены тесты PM.
- examples.md — примеры тестов на типовые сценарии.
- overview.md — обзор тестовой стратегии PM.
- patterns.md — паттерны: fixtures, in-memory TB, мокирование PSP.