SubscriptionManager
Abonelik yaşam döngüsünü yöneten ana sınıf
Başlatma
import { SubscriptionManager } from '@vinenastudio/recurr'
const manager = new SubscriptionManager({
adapter, // BetterPurchaseAdapter implementasyonunuz
client, // PayTRClient
})Metodlar
activate(email, planId, utoken)
Yeni bir abone oluşturur. Planda trialDays varsa trial durumuyla, yoksa active durumuyla başlar.
const subscriber = await manager.activate(
'user@example.com',
'plan_pro_monthly',
'paytr_utoken_value'
)processDuePayments(serverIp)
Bugün ödemesi gelen tüm aboneleri bulur ve tekrarlayan ödeme gerçekleştirir. Cron endpoint'i tarafından çağrılır.
const result = await manager.processDuePayments('1.2.3.4')
// result.processed → toplam işlenen
// result.succeeded → başarılı
// result.failed → başarısızPayTR, Non-3D işlemlerde sunucunun gerçek public IP'sini doğrular. serverIp parametresini mutlaka doğru şekilde geçin. Test modunda "127.0.0.1" kullanabilirsiniz.
cancel(subscriberId)
Aboneliği iptal eder. Durum cancelled olarak güncellenir.
pause(subscriberId)
Aboneliği duraklatır. Durum paused olarak güncellenir.
resume(subscriberId)
Duraklatılmış aboneliği yeniden aktif eder. Durum active olarak güncellenir.
handleWebhookResult(payload)
Recurring ödeme webhook'unu işler. Başarılı ödemede nextBillingDate ilerletilir; başarısız ödemede failedAttempts artar ve gerekirse abonelik iptal edilir.
Durum Makinesi
activate() (trial yok)
──────────────▶ active
│
│ processDuePayments() — başarılı
▼
active (nextBillingDate ilerler)
activate() (trial var)
──────────────▶ trial ──── trial biter ──▶ active
│
ödeme başarısız
▼
past_due
(failedAttempts++)
│
failedAttempts < maxRetries
yeniden deneme
│
failedAttempts >= maxRetries
▼
cancelled
pause() → paused → resume() → active
cancel() → cancelled