Skip to main content
Bu reçete, abonelik (örn. aylık SaaS, bağış, sigorta primi) gibi tekrarlayan ödeme senaryolarını gösterir. İlk işlemde kart bilgisi alınır ve token olarak Payven’e kaydedilir; sonraki dönemlerde kart bilgisi olmadan, yalnız bu token ile ödeme alınır (Card-on-File / Merchant-Initiated Transaction — MIT).

Akış

1. İlk işlem — kartı kaydet

İlk dönemde standart bir 3DS ödemesi başlatın ve store_card: true ile kartın saklanmasını isteyin. Tüketici akışında 3DS kullanın — chargeback sorumluluğu bankaya geçer ve banka sonraki MIT’leri bağlamak için CIT auth’unu kullanır.
3DS akışı tamamlandığında yanıt:
card_token’ı veritabanınıza, kullanıcı kimliğine bağlı olarak saklayın. Ham PAN’ı asla saklamayın — token zaten size bunu sağlıyor.
card_token zorunlu olarak ilgili kullanıcıya bağlı saklanır. Farklı bir kullanıcının abonelik ödemesinde başkasının token’ını kullanmayın — fraud kuralı tetiklenir ve Payven işlemi reddeder.

2. Sonraki dönemler — token ile çekim

Bir sonraki dönem geldiğinde (cron, billing event, manuel tetikleme):
Yanıt başarılı senaryoda:
Idempotency-Key’i ay+abonelik kimliğinden deterministik üretin (subscription-1001-month-2026-06). Cron iki kez çalıştığında aynı ay için ikinci ödeme oluşmaz.

3. Başarısız ödemenin yönetimi

MIT işleminde 3DS olmadığı için banka reddi olası — yetersiz bakiye, kart limit aşımı, kart süresi dolmuş vb. Webhook ile yakalayın:
Önerilen retry stratejisi: Üç başarısız retry sonrası dunning flow’a (e-posta + uygulama-içi bildirim) geçin.

4. Aboneliği iptal etme

Token’ı iptal etmek (kullanıcı aboneliği sonlandırdı):
Bu endpoint, ilk aboneliğin transaction_id’sini alır ve ona bağlı saklı kart token’ını iptal eder. Sonraki MIT denemesi 422 token_revoked döner.

Kontrol listesi (canlıya çıkmadan)

İlk işlem (CIT) 3DS ile yapıldı mı?
card_token veritabanında kullanıcı ID’si ile birlikte saklanıyor mu?
Recurring isteklerinde Idempotency-Key dönem-bazlı deterministik mi?
payment.failed webhook’u handler’ınız retry kuyruğuna yazıyor mu?
Kart süresi dolan kullanıcıya bildirim akışı kurulu mu?
Token iptal endpoint’i abonelik iptal akışına bağlı mı?

İlgili sayfalar