Files
veilix.app/docs/stages/stage-1d-billing.md
T

36 lines
3.0 KiB
Markdown
Raw Normal View History

# Этап 1d. Биллинг без эквайринга
Статус: не начат.
## 1. Цель
Деньги и заказы работают целиком: оформление заказа, оплата с баланса, ручные платежи, продления, льготный период — без внешних платёжных систем.
## 2. Входит
1. Коллекции `orders`, `payments`, `ledger-entries`, `payment-methods` (структура), `keys` (поля и статусы), `audit-log`.
2. `core/billing`: `processPayment`, оплата с баланса, задачи `renewals`, `expiry`, `reminders`, `reconcile`; блокировки и уникальные ограничения ([04-billing.md](../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` не находит расхождений.