E-ticaret ödeme akışlarında en sık karşılaşılan kriz senaryosu; müşterinin kartından provizyon alınıp paranın çekilmesi ancak e-ticaret panelinde siparişin oluşmamasıdır. Bu durum %99 oranında Callback (Bildirim URL / Webhook) iletişim hatasından kaynaklanır.
Sorunun Temel Sebepleri ve Çözüm Adımları:
- WAF ve Güvenlik Duvarı (Cloudflare / ModSecurity) Engeli: Banka veya ödeme kuruluşunun (PayTR, İyzico vb.) sunucusu, işlem tamamlandığında sitenizin bildirim adresine (örn:
/api/payment/callback) arka plandan bir HTTP POST isteği gönderir. Eğer sitenizde Cloudflare 'Under Attack Mode', Captcha veya katı Bot Fight Mode devredeyse, bankanın sunucusu 403 Forbidden veya challenge ile karşılaşır ve bildirim sitenize ulaşamaz. Çözüm: Ödeme kuruluşunun IP bloklarını Cloudflare WAF 'Whitelisting / İzin Verilenler' listesine ekleyin. - Bildirim URL'sinin 'OK' Yanıtı Dönmemesi: Ödeme kuruluşları POST isteğini gönderdikten sonra sitenizden
HTTP 200 OK durum kodu ve yanıt gövdesinde 'OK' ifadesi bekler. Eğer sitenizdeki PHP/Python betiği fatal error (500) verirse veya 5 saniye içinde yanıt dönmezse, banka bildirimi başarısız sayar ve işlemi beklemeye alır. - Kullanıcının 3D Ekranını Kapatması: Kullanıcı banka SMS şifresini girdikten sonra 'Sitenize Geri Dönülüyor' ekranını beklemeden tarayıcı sekmesini kapatırsa yönlendirme (redirect) başarısız olabilir. Ancak doğru kurulmuş bir sistemde yönlendirmeden bağımsız olarak sunucudan sunucuya (server-to-server) arka plan webhook çalıştığı için sipariş her halükarda onaylanmalıdır.
- Sorgulama (Status Query) Cron Görevi Kurun: Olası sunucu kesintilerinde askıda kalan siparişleri kurtarmak için ödeme kuruluşunun 'İşlem Durumu Sorgulama API'sine bağlanan 5 dakikalık bir cron servisi kurun. Sistem askıdaki siparişleri otomatik sorgulayıp tahsil edilmişse sipariş durumunu 'Onaylandı'ya çekmelidir.