Akış
1. İlk işlem — kartı kaydet
İlk dönemde standart bir 3DS ödemesi başlatın vestore_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.
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.
2. Sonraki dönemler — token ile çekim
Bir sonraki dönem geldiğinde (cron, billing event, manuel tetikleme):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:
Üç 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ı):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ı?