Биллинг (ЮKassa / Stripe)¶
Разовая годовая оплата тарифов Pro и Business. Enterprise — без онлайн-checkout (только контакт).
Включение¶
В .env:
BILLING_ENABLED=true
BILLING_PROVIDER=yookassa # или stripe
BILLING_SUCCESS_URL=https://agentops.com.ru/settings?billing=success
BILLING_CANCEL_URL=https://agentops.com.ru/settings?billing=cancel
PLAN_PRO_PRICE_YEARLY=29900
PLAN_BUSINESS_PRICE_YEARLY=99900
ЮKassa¶
URL уведомлений в кабинете ЮKassa:
https://<ваш-домен>/api/v1/billing/webhooks/yookassa
События: payment.succeeded, payment.canceled.
Stripe¶
BILLING_PROVIDER=stripe
STRIPE_SECRET_KEY=sk_...
STRIPE_WEBHOOK_SECRET=whsec_...
PLAN_PRO_PRICE_YEARLY_USD=299
PLAN_BUSINESS_PRICE_YEARLY_USD=999
Webhook:
https://<ваш-домен>/api/v1/billing/webhooks/stripe
Подписка на checkout.session.completed (опционально checkout.session.expired).
Поток¶
- Admin открывает Settings → Подписка и нажимает Upgrade.
- API создаёт запись
payments(pending) и сессию оплаты у провайдера. - Пользователь оплачивает на стороне провайдера.
- Webhook помечает платёж
succeededи пишет вtenant.settings:
- Через 365 дней
resolve_planсчитает tenant free, пока не будет нового платежа.
API¶
| Метод | Путь | Заметки |
|---|---|---|
GET |
/api/v1/billing/plans |
Каталог + флаг enabled |
GET |
/api/v1/billing/status |
Текущий план / опционально payment_id |
POST |
/api/v1/billing/checkout |
Body { "plan": "pro" } — Admin+ |
POST |
/api/v1/billing/webhooks/yookassa |
Публичный |
POST |
/api/v1/billing/webhooks/stripe |
Публичный + подпись |
Чеклист¶
- Миграция
018_billing_payments. - Держите
BILLING_ENABLED=false, пока не настроены ключи и webhooks. - Сначала sandbox / Stripe test mode.
- После деплоя:
GET /api/v1/billing/plans(с авторизацией).