Files

39 lines
3.0 KiB
Markdown
Raw Permalink Normal View History

# Этап 1e. Счёт и оплата
Статус: не начат.
## 1. Цель
Покупка ключа и пополнение баланса работают целиком на демо-оплате, без эквайринга.
## 2. Входит
1. Коллекции `orders`, `payments`, `ledger-entries`, `payment-methods`.
2. `core/billing`: `processPayment`, оплата с баланса, блокировки и уникальные ограничения ([04-billing.md](../04-billing.md), разделы 1–5 и 14).
3. Платёжная система «Демо» ([D-027](../decisions/D-027-demo-payments.md)): страница демо-оплаты, демо-привязка карты, доступ по списку IP. `manual` — для администраторов.
4. `/order` по макетам обоих брендов: шаг «Почта» (вход из 1c), шаг «Оплата» (с баланса, демо-оплатой, демо-картой; «Заказ создан, ожидает оплаты», если платёжных систем нет), согласие с условиями, сводка из тарифа, локации и валюты.
5. Кабинет:
a. `/buy`: dedicated — сетка локаций с ценами, mass — «Месяц» и «Год»;
b. «Счёт и платежи»: баланс, пополнение (пресеты и своя сумма), привязанная карта и «Отвязать карту», история;
c. смена валюты аккаунта ([04-billing.md](../04-billing.md), раздел 2).
6. После оплаты ключ создаётся в статусе `provisioning` и выдаётся вручную (1d); автоматически — с 1f.
7. Админка: ручной платёж, корректировка баланса, возврат на баланс; всё — в журнал действий.
8. Шаблоны на 5 языках: `order_paid`, `key_provisioning`, `topup_succeeded`, `refund_issued`, `admin_new_order`, `admin_provisioning_needed`.
## 3. Не входит
Продления (1g), реальные платёжные системы (3b, 4a, 4b).
## 4. Перед стартом
Этап 1d готов.
## 5. Готово, когда
1. С разрешённого IP ключ покупается демо-оплатой и с баланса; отказ демо-оплаты виден пользователю.
2. Демо-карта привязывается и отвязывается.
3. Автотесты `core/billing` проходят сценарии:
a. пополнение → оплата заказа с баланса → заказ оплачен → ключ `provisioning`;
b. частичный баланс и оплата разницы → заказ оплачен;
c. частичный и полный возврат на баланс, с отменой ключа и без;
d. повторный `processPayment` не списывает дважды.