recurr.
Core API

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ız

PayTR, 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

On this page