PayTR Entegrasyonu ile Sitenizde Kartlı Ödeme Almak
PayTR entegrasyonunda en kritik parça, ödeme sonucunu bildiren arka plan çağrısını doğru karşılamaktır. Akışı ve dikkat noktalarını anlatıyorum.
İçindekiler
“Müşteri ödemeyi yaptı, kartından para çekildi ama sitede sipariş hâlâ beklemede görünüyor.” Ödeme altyapısı kuran işletmelerden en sık duyduğum şikâyetlerden biri budur ve sorunun kaynağı çoğu zaman ödeme kuruluşu değil, entegrasyonun kendisidir. PayTR entegrasyonu, sitenize kartlı ödeme eklemenin yaygın yollarından biridir; ancak sorunsuz çalışması için ödeme sonucunu bildiren arka plan çağrısının doğru karşılanması gerekir. Bu yazıda PayTR akışının nasıl işlediğini, teknik olarak hangi noktaların kritik olduğunu ve canlıya geçmeden neleri test etmeniz gerektiğini anlatıyorum.
PayTR nedir, kimler için uygundur?
PayTR, işletmelerin internet üzerinden kartlı ödeme almasını sağlayan bir ödeme kuruluşudur. Bankayla doğrudan sanal POS sözleşmesi yapmak yerine tahsilatı onların altyapısı üzerinden yaparsınız. Hangi modelin size uygun olduğunu genel hatlarıyla sanal POS entegrasyonu yazısında karşılaştırdım. Benzer bir ödeme kuruluşu olan iyzico’nun akışını merak ediyorsanız iyzico entegrasyonu yazısına da bakabilirsiniz.
Komisyon, ödeme vadesi, desteklenen taksit seçenekleri ve başvuru belgeleri zaman içinde değişebilir. Bu bilgileri her zaman PayTR’nin güncel sitesinden kontrol edin; burada yalnızca teknik işleyişi anlatıyorum.
PayTR entegrasyonunda ödeme akışı
Teknik açıdan tipik bir PayTR ödemesi iki ayrı kanaldan ilerler. Bunu anlamak, sonradan çıkacak sorunların çoğunu baştan önler.
Birinci kanal: müşterinin gördüğü ekran
- Müşteri sepeti onaylar, siteniz sunucu tarafında sipariş kaydını oluşturur.
- Sunucunuz sipariş numarası, tutar, sepet içeriği ve müşteri bilgileriyle PayTR’den bir ödeme oturumu ister. Bu istek, size özel gizli anahtarlarla imzalanır.
- Dönen bilgiyle ödeme ekranı sitenizde (genellikle gömülü bir çerçeve içinde) açılır.
- Müşteri kart bilgilerini girer, bankasının 3D Secure doğrulamasını tamamlar.
- Müşteri başarılı veya başarısız ödeme sayfanıza yönlendirilir.
İkinci kanal: sunucudan sunucuya bildirim
Asıl önemli kısım burasıdır. Ödeme sonuçlandığında PayTR, sizin önceden tanımladığınız bir bildirim adresine arka planda istek gönderir. Bu istek, sipariş numarasını, ödeme durumunu ve bir doğrulama imzasını içerir. Siteniz bu imzayı kendi gizli anahtarıyla yeniden hesaplar, eşleşirse siparişi “ödendi” olarak işaretler ve PayTR’ye başarıyla aldığını bildirir.
Müşterinin yönlendirildiği “başarılı” sayfası yalnızca bilgilendirme amaçlıdır; siparişi onaylamak için kullanılmamalıdır. Müşteri sayfayı kapatabilir, bağlantısı kopabilir ya da adresi elle yazabilir. Güvenilir kaynak her zaman imzalı arka plan bildirimidir. Bu tür bildirimlerin genel mantığını webhook nedir yazısında ayrıntılı anlattım.
Kritik teknik noktalar
| Konu | Doğru uygulama | Yanlış uygulamanın sonucu |
|---|---|---|
| İmza doğrulama | Her bildirimde imza yeniden hesaplanır | Sahte bildirimle sipariş onaylanabilir |
| Tutar kontrolü | Bildirimdeki tutar, veritabanındaki siparişle karşılaştırılır | Eksik ödemeli sipariş kabul edilebilir |
| Tekrarlanan bildirim | Aynı sipariş ikinci kez işlenmez | Stok iki kez düşer, iki e-posta gider |
| Bildirim adresinin erişilebilirliği | Güvenlik duvarı ve önbellek bu adresi engellemez | Ödeme alınır ama sipariş beklemede kalır |
| Gizli anahtarlar | Sunucuda gizli ayar dosyasında tutulur | Anahtar sızarsa sahte istek üretilebilir |
Tablodaki dördüncü satır, pratikte en sık karşılaştığım sorundur. Sayfa önbelleği eklentileri, bakım modu eklentileri veya sunucu güvenlik kuralları bildirim adresine gelen isteği engelleyebilir. Para tahsil edilmiştir ama siteniz bunu hiç öğrenmemiştir. Bu yüzden bildirim adresinin önbellekten ve erişim kısıtlamalarından muaf tutulması gerekir.
WooCommerce ve özel yazılımlarda PayTR
WooCommerce kullanan sitelerde PayTR’nin sağladığı eklentiyle temel kurulum yapılabilir. Bu durumda yine bildirim adresinin panelde doğru tanımlanması, önbellek ayarlarının kontrolü ve test modunda tüm senaryoların denenmesi gerekir.
Rezervasyon, üyelik, bağış veya randevu sistemi gibi özel yazılımlarda entegrasyon doğrudan API ile yazılır. Burada ödeme yalnızca bir adımdır; ödeme sonrası randevunun takvimde kesinleşmesi, üyeliğin aktifleşmesi ya da biletin oluşturulması gibi işler de bildirim akışına bağlanır.
Bazı işletmelerin sitesi yoktur ya da tek seferlik tahsilat yapmak ister. Bu durumda ödeme kuruluşlarının sunduğu bağlantıyla ödeme gibi seçenekler de değerlendirilebilir; ancak sipariş takibi ve raporlama açısından entegre çözüm kadar düzenli değildir.
Mutabakat: panel ile siteniz aynı şeyi söylüyor mu?
Entegrasyon kurulduktan sonra bile ay sonunda PayTR panelindeki işlemlerle sitenizdeki ödenmiş siparişlerin birbirini tutup tutmadığını kontrol etmek iyi bir alışkanlıktır. Her siparişe benzersiz bir sipariş numarası verilmesi ve bu numaranın ödeme isteğinde aynen kullanılması, bu eşleştirmeyi dakikalar içinde yapmanızı sağlar. Uyuşmayan bir kayıt varsa, sorun büyümeden fark edilir.
Canlıya geçmeden önce test listesi
- Başarılı ödeme sonrası siparişin otomatik onaylanması
- Reddedilen kartla siparişin beklemede veya iptal kalması
- Müşterinin 3D Secure ekranında vazgeçmesi
- Ödeme sonrası tarayıcının kapatılması (sipariş yine de onaylanmalı)
- Aynı bildirimin iki kez gelmesi
- Taksitli ödemede tutarın doğru kaydedilmesi
- İade sonrası sipariş durumunun güncellenmesi
Bu işi nasıl birlikte yaparız?
PayTR ile ödeme almak istiyorsanız ya da mevcut kurulumunuzda siparişler askıda kalıyorsa şöyle ilerliyorum:
- Mevcut durumu dinleme: Sitenizin altyapısını, ne sattığınızı ve yaşadığınız sorunları konuşuyoruz; varsa mevcut kurulumun kayıtlarına bakıyorum.
- Kapsam ve teklif: Eklentiyle mi, doğrudan API ile mi ilerleyeceğimizi ve ödeme sonrası hangi işlerin otomatikleşeceğini yazılı hâle getiriyorum.
- Test modunda geliştirme: Yukarıdaki listedeki tüm senaryoları tek tek deniyorum.
- Canlıya geçiş ve takip: İlk gerçek siparişlerde bildirim kayıtlarını birlikte izliyor, sonrasında destek veriyorum.
Durumunuzu anlatmak için iletişim sayfasından bana yazabilirsiniz.
Sık sorulan sorular
Ödeme alındı ama sipariş beklemede kaldı, neden?
En yaygın sebep, PayTR’nin arka plan bildiriminin sitenize ulaşamaması veya imza doğrulamasının başarısız olmasıdır. Önbellek, güvenlik duvarı ve bildirim adresi ayarları kontrol edilmelidir.
PayTR entegrasyonu için SSL sertifikası şart mı?
Evet, ödeme alan her sitenin HTTPS ile çalışması gerekir. Bu hem müşteri güveni hem de ödeme kuruluşlarının beklentisi açısından temel bir şarttır.
Test modunda yapılan işlemler gerçek para çeker mi?
Hayır. Test modunda yalnızca test kartlarıyla deneme yapılır, gerçek para hareketi olmaz. Canlıya geçişte anahtarlar ve mod değiştirilir.
PayTR’den başka bir ödeme kuruluşuna geçebilir miyim?
Evet. Entegrasyon düzgün katmanlara ayrılmışsa ödeme kuruluşunu değiştirmek, siparişler ve raporlar bozulmadan yapılabilir.
Sonuç
PayTR entegrasyonunun sağlığı, büyük ölçüde imzalı arka plan bildiriminin doğru karşılanmasına ve tüm ödeme senaryolarının test edilmesine bağlıdır. Sitenizde kartlı ödemeyi güvenle kurmak isterseniz benimle iletişime geçebilirsiniz.
