Billing kurmak, "yeni başlayanlar için Stripe Checkout" tutorial'ından daha karmaşık. Production'a giden yolda 4 hata bizim de canımızı yaktı. Sırayla.
1) Webhook idempotency
Stripe aynı eventi birden fazla gönderebilir. event.id'yi DB'de kaydetmeden işlemeye başlarsanız, kullanıcılara çift fatura çıkarmış olursunuz. events_processed tablosu, ilk satırınız olsun.
2) Prorasyon doğru kullanım
Aylık plandan yıllığa geçişte Stripe otomatik prorate ediyor — ama davranış proration_behavior parametresine göre değişiyor. Test etmeden production'a almayın.
Bir CFO'nun "fatura niye böyle?" maili, üç günlük debug demektir.
3) Free trial bitince ne oluyor?
Default davranış: kullanıcı ödeme bilgisi vermediyse abonelik incomplete kalır, ama uygulama erişimi açık olabilir. Trial bitiminde customer.subscription.updated webhook'unda erişimi kapatmazsanız bedava SaaS dağıtırsınız.
4) Customer Portal'ı vakitlice ekleyin
Stripe Customer Portal, kullanıcıya plan değiştirme, kart güncelleme, fatura indirme verir. Kendiniz yazmaya çalışmayın — Stripe'ın hazır portalı 5 dakikada açılır, 2 ay zaman kazandırır.