Files
veilix.app/docs/decisions/D-009-billing-model.md
T
2026-10-21 03:30:38 +02:00

1.9 KiB

D-009. Заказы, платежи, движения по счёту; всё через баланс

Статус: принято, 20.10.2026.

Контекст

У пользователя есть счёт. Заказ можно оплатить картой, с баланса или частично. Нужна ручная оплата из админки, которая запускает те же действия, что и настоящая.

Решение

  1. Три сущности: Заказ (что покупают), Платёж (деньги извне), Движение по счёту (неизменяемые записи «+» и «−»).
  2. Любой успешный платёж зачисляется на баланс, любой заказ списывается с баланса.
  3. Одна точка проведения processPayment, идемпотентная.
  4. Ручная оплата — платёжная система manual. Платёж проводится, когда получает статус succeeded. Галочки «провести как реальную» нет.
  5. Корректировка баланса — отдельная операция: только движение, без цепочки действий.

Рассмотренные варианты

  1. Одна сущность «транзакция» — смешивает коммерческий документ, деньги провайдера и баланс; сложно с частичной оплатой и повторами вебхуков.
  2. Галочка «провести как реальную оплату» — не нужна: проведение запускает смена статуса.

Последствия

Правило «списывается только разница с балансом» получается само. Подробно — 04-billing.md.