IHS Strategic
Tüm Blog Yazıları
HowTo09 Eylül 2026•2 dk okuma

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.

S

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ışı:

  1. Kullanıcı arayüzde kart bilgilerini girer.
  2. İstemci JS kütüphanesi sağlayıcıya istek atar: stripe.createPaymentMethod() veya İyzico JS SDK.
  3. Sağlayıcı istemciye payment_token döndürür.
  4. İ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-signature header değeri ve endpoint secret ile stripe.webhooks.constructEvent() doğrulaması yapılır.
  • PayTR: Gelen POST verisindeki hash alanı; merchant_key, merchant_salt, merchant_oid, status ve total_amount parametreleriyle SHA256 HMAC hesaplanarak karşılaştırılır. Eşleşirse OK yanıtı dönülür.
  • İyzico: Webhook imza doğrulama anahtarı kontrol edilir. Sipariş durumu PAID olarak 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.