Stripe, PayTR ve İyzico ile Güvenli Online Ödeme Entegrasyonu Rehberi
Modern web mimarilerinde Stripe, PayTR ve İyzico sanal POS sistemlerinin güvenli entegrasyonu, webhook mimarisi ve 3D Secure 2.0 standartları rehberi.
Sistem Yöneticisi
Kıdemli Yazılım Mimarı
Modern Web İçin Ödeme Ağ Geçitleri ve Mimari
Dijital ajans ve e-ticaret projelerinde ödeme katmanı doğrudan ciro ve güvenlikle ilişkilidir. Kart verilerini backend sunucularına değdirmeden PCI-DSS SAQ-A seviyesinde kalmak temel kuraldır. Stripe global ölçekleme, PayTR ve İyzico ise yerel taksit ve Türkiye BDDK uyumluluğu için standart tercihlerdir.
Güvenlik Standartları: Temel Gereksinimler
- Tokenization: Kart bilgileri doğrudan sağlayıcı iframe veya JS SDK (Stripe Elements, İyzico Checkout Form, PayTR iFrame) üzerinden tokenize edilir. Ham PAN verisi asla sunucuya ulaşmaz.
- 3D Secure 2.0: Risk tabanlı kimlik doğrulama. Sürtünmesiz akış (frictionless) veya zorunlu SMS/OTP tetikleme.
- Webhook Doğrulama: İstemci yönlendirmelerine (callback URL) güvenilmez. Sipariş durumu sadece imzalı webhook payload ile güncellenir.
- Idempotency: Ağ kopmalarında çift tahsilatı önlemek için idempotency anahtarları (UUIDv4) kullanılır.
Adım Adım Entegrasyon Süreci
Adım 1: İstemci Tarafı Tokenization (Client-side)
Form backend sunucunuza `POST` edilmez. Sağlayıcı SDK ile kart verisi şifrelenir ve tek kullanımlık token döner.
Modern web akışı:
- Kullanıcı arayüzde kart bilgilerini girer.
- İstemci JS kütüphanesi sağlayıcıya istek atar:
stripe.createPaymentMethod()veya İyzico JS SDK. - Sağlayıcı istemciye
payment_tokendöndürür. - İstemci sadece bu token ve sepet ID'sini backend API'sine iletir.
Adım 2: Sunucu Tarafı Ödeme Başlatma
Sunucu, gelen token ile birlikte tutar, para birimi ve müşteri bilgilerini imzalayarak sağlayıcı API'sine iletir.
Güvenlik Uyarısı: Tutar, indirim ve para birimi hesabı asla istemci tarafında (frontend) yapılmaz. Backend sepet veritabanından doğrulanarak istek gövdesine eklenir.
Adım 3: Webhook Doğrulama ve Sipariş Tamamlama
İstemci tarafı tarayıcıyı kapatabilir veya bağlantı kopabilir. Asenkron işlem doğruluğu için sağlayıcının webhook event'i dinlenir.
- Stripe:
stripe-signatureheader değeri ve endpoint secret ilestripe.webhooks.constructEvent()doğrulaması yapılır. - PayTR: Gelen POST verisindeki
hashalanı;merchant_key,merchant_salt,merchant_oid,statusvetotal_amountparametreleriyle SHA256 HMAC hesaplanarak karşılaştırılır. EşleşirseOKyanıtı dönülür. - İyzico: Webhook imza doğrulama anahtarı kontrol edilir. Sipariş durumu
PAIDolarak güncellenir.
Dijital Ajanslar İçin Mimari Trendler: Akıllı Yönlendirme (Smart Routing)
Modern e-ticaret altyapılarında tek ağ geçidine bağımlılık risk oluşturur. Çoklu gateway mimarisinde:
- Yurt dışı kartlar: Stripe API.
- Yerel kredi kartları (Taksitli): Kart BIN numarasına göre PayTR veya İyzico.
- Fallback Mekanizması: Sağlayıcı API 5xx döndüğünde veya rate limit aşıldığında alternatif ağ geçidine otomatik geçiş.
En Sık Yapılan Hatalar
- Webhook endpoint'inde CSRF korumasını açık bırakıp sağlayıcı bildirimini engellemek.
- Başarılı ödeme bildirimini aldığında DB transaction kullanmamak (Race condition riski).
- API gizli anahtarlarını (secret keys) istemci bundle dosyalarına dahil etmek.