Yükseltme
Endpoint
POST /api/v1/billing/checkout bir checkout oturumu başlat (auth, admin, çalışma alanı kapsamlı)
GET /api/v1/billing/subscription mevcut aboneliği çek
POST /api/v1/billing/cancel-subscription periyot sonunda iptal etSağlayıcı nasıl seçilir
BILLING_PROVIDER env'i (veya Options override) checkout'u hangi adaptörün yöneteceğine karar verir:
| Sağlayıcı | Eylem |
|---|---|
stripe | Bir Stripe Checkout oturum URL'si döner — kullanıcıyı oraya yönlendirirsin. |
iyzico | Iyzico hosted-page URL'sini döner. |
paytr | Sayfa içi checkout için bir iframe URL'si döner. |
manual | Varsayılan — harici processor yok. Akış, admin onayı için bir ödeme isteği oluşturur. |
Abonelik modeli
typescript
{
workspace_id: ObjectId,
plan_code: string,
status: "trialing" | "active" | "past_due" | "canceled" | "expired",
trial_end: Date | null,
current_period_start: Date | null,
current_period_end: Date | null,
billing_currency: "TRY" | "USD",
billing_period: "monthly" | "yearly",
cancel_at_period_end: boolean,
provider: string, // "stripe" | "iyzico" | "paytr" | "manual"
provider_subscription_id: string | null,
provider_customer_id: string | null,
}İptal
POST /billing/cancel-subscription cancel_at_period_end'i true'ya çevirir — hizmet current_period_end'e kadar devam eder, sonra status canceled'a hareket eder.