Files
veilix.app/docs/stages/stage-1d-billing.md
T
2026-10-21 03:30:38 +02:00

3.0 KiB

Этап 1d. Биллинг без эквайринга

Статус: не начат.

1. Цель

Деньги и заказы работают целиком: оформление заказа, оплата с баланса, ручные платежи, продления, льготный период — без внешних платёжных систем.

2. Входит

  1. Коллекции orders, payments, ledger-entries, payment-methods (структура), keys (поля и статусы), audit-log.
  2. core/billing: processPayment, оплата с баланса, задачи renewals, expiry, reminders, reconcile; блокировки и уникальные ограничения (04-billing.md).
  3. /order по макетам обоих брендов: шаг «Почта» из 1c, шаг «Оплата» (с баланса; «Заказ создан, ожидает оплаты», когда платёжных систем нет), согласие с условиями, сводка из тарифа, локации и валюты.
  4. /buy в кабинете: dedicated — сетка локаций с ценами, mass — «Месяц» и «Год».
  5. Админка: ручной платёж, корректировка баланса, возврат на баланс, продление вручную, блокировка, «Очередь выдачи»; всё — в журнал действий.
  6. Шаблоны писем на RU и EN: order_paid, key_provisioning, renewal_reminder, expiry_reminder, renewal_succeeded, renewal_failed, grace_started, key_expired, topup_succeeded, refund_issued, admin_new_order, admin_provisioning_needed.

3. Не входит

Подключения и выдача ключа (1e), реальные платёжные системы (этап 4). Для проверок ключ переводится в active вручную в админке.

4. Перед стартом

Этап 1c готов.

5. Готово, когда

Автотесты core/billing проходят сценарии:

  1. Ручное пополнение → оплата заказа с баланса → заказ оплачен → ключ provisioning.
  2. Частичный баланс + ручной платёж на разницу → заказ оплачен.
  3. Продление с баланса за 24 часа; денег нет → заказ ждёт → пополнение само оплачивает продление.
  4. Переходы в льготный период и «истёк» с письмами.
  5. Частичный и полный возврат на баланс, с отменой ключа и без.
  6. Повторный processPayment и параллельные запуски задач не списывают дважды.
  7. reconcile не находит расхождений.