Abonelik Faturalama
Eksiksiz bir tekrarlayan faturalama motoru: kataloğunuzu bir kez modelleyin, müşterilerinizi planlara abone edin; platform faturaları üretsin, kayıtlı kartları çeksin, başarısız çekimleri dunning takvimiyle yeniden denesin ve her durum değişikliğini webhook ile size bildirsin. Tüm yaşam döngüsünü API üzerinden programatik yönetebilir — ya da pricing & portal SDK'sını kendi web sitenize gömüp ziyaretçilerin sayfanızdan hiç ayrılmadan abone olmasını sağlayabilirsiniz.
Tüm tutarlar minor-unit (kuruş) integer'dır: "price": 49900 = ₺499,00. Bu kural subscription API'sindeki her istek ve yanıt için geçerlidir.
Nesne modeli
Her şey basit bir zincire oturur — her nesne bir sonrakinin sahibidir:
| Nesne | Nedir | Nasıl oluşturulur |
|---|---|---|
| Product | Sattığınız şey ("Pro", "Enterprise"). Varsayılan fiyat-değişikliği politikasını ve çevirileri taşır. | POST /api/v1/subscriptions/products |
| Plan | Bir ürünün fiyatı + faturalama ritmi: tutar, para birimi, deneme günleri, billing kuralı, dunning ayarları. | POST /api/v1/subscriptions/plans |
| Customer | Son kullanıcınız; kendi externalId'nizle upsert edilir — çifte kayıt derdi yok. | PUT /api/v1/subscriptions/customers |
| Card | Müşteriye bağlı kayıtlı ödeme yöntemi (3DS ile doğrulanmış vault token'ı). | POST /api/v1/subscriptions/cards |
| Subscription | Müşteri × plan. Durumu (deneme, aktif, duraklatılmış, iptal) ve faturalama saatini taşır. | POST /api/v1/subscriptions/subscriptions |
| Invoice | Her faturalama döneminde otomatik üretilir; tahsilat yöntemine göre çekilir, yeniden denenir veya gönderilir. | motor tarafından üretilir |
Tahsilat yöntemleri
Abonelik oluştururken her faturanın nasıl tahsil edileceğini seçersiniz:
collectionMethod | Davranış |
|---|---|
AUTO_CHARGE | Fatura vadesi geldiğinde platform müşterinin kayıtlı kartını otomatik çeker. Başarısız çekimler planın dunning takvimine girer (dunningScheduleDays, maxDunningAttempts, gracePeriodDays). |
SEND_INVOICE | Fatura kesilir ve ödemesi için müşteriye iletilir — otomatik kart çekimi yapılmaz. |
MANUAL | Fatura oluşturulur ve açık bırakılır; tahsilatı kendi kanalınızdan yapar, API üzerinden mutabakat sağlarsınız. |
Kendi sitenizden satın
Öne çıkan özellik: pricing sayfanızı kendi web sitenizde kurun ve doğrudan abone alın. Publishable-key'li catalog API'si plan, ürün ve marka bilgilerinizi doğrudan tarayıcıya sunar; portal JS SDK'sı ziyaretçiyi "plan seç"ten "kart kaydedildi, abonelik aktif"e taşır — hazır UI olarak, tamamen headless ya da ikisinin hibriti. Harici checkout'a yönlendirme yok, pricing tablonuzun etrafında iframe duvarları yok.
Uçtan uca entegrasyon için Pricing & Portal SDK sayfasına bakın.
Dört yüzey
| Yüzey | Auth | Kim çağırır | Ne için |
|---|---|---|---|
Merchant API — /api/v1/subscriptions/* | Bearer (at_live_…) | Sizin backend'iniz | Tam CRUD: ürün, plan, müşteri, kart, abonelik, fatura, kullanım |
Public Catalog — /api/public/v1/subscription/* | Publishable key (mk_live_pk_…) + Origin allow-list | Tarayıcı | Pricing sayfanız için salt-okunur plan / ürün / branding |
Customer Portal — /api/portal/v1/* | Portal token → OTP → session JWT | Son müşteriniz | Self-servis: fatura görüntüleme, plan değişikliği, kart güncelleme, iptal |
Portal JS SDK — cdn.lunixi.com | Publishable key veya backend'den bootstrap edilen session | Tarayıcı | Pricing tabloları, gömülü portal UI, headless abonelik akışları |
Yaşam döngüsü & webhook'lar
Her geçiş bir webhook üretir — subscription.created, subscription.activated, subscription.paused, subscription.canceled, subscription.trial_will_end, invoice.created, invoice.paid, invoice.payment_failed, card.expiring_soon ve daha fazlası. Provizyon ve entitlement mantığınızı polling yerine bu event'lerle yürütün.