Dönüş nasıl işlenir
Sıra önemlidir:- Çift POST zararsızdır. Jeton daha önce kullanılmışsa mevcut durum döner; banka aynı sonucu iki kez gönderdiğinde ikinci istek hiçbir şeyi değiştirmez. Yakalanan bir isteğin yeniden oynatılması da aynı nedenle sonuçsuz kalır.
- Form + query birleştirilir, form öncelikli — bazı protokoller (ör.
VakıfBank PayFlex) sonucu
GETquery’siyle döndürür. - Konnektörün başlatma sırasında sakladığı gizli durum (örneğin Adyen’in ödeme bağlantısı kimliği) forma harmanlanır; çakışmada bankanın gönderdiği alan kazanır.
- Sipariş eşleşmesi: dönüşteki sipariş numarası, denemenin kimliğiyle
(
att_…) birebir aynı olmalıdır. Değilse400 callback.order_mismatch— imzası geçerli ama başka bir siparişe ait bir dönüş kabul edilmez.
İmza doğrulama protokole göre değişir
Her konnektör dönüşü kendi yöntemiyle doğrular; iki ana ailesi vardır: Yerel imza doğrulaması — dönüşteki alanlardan hash yeniden hesaplanır ve sabit-zamanlı karşılaştırmayla denetlenir:
Sunucu sorgusu — dönüşteki alanlara güvenilmez, sonuç bankaya/sağlayıcıya
sorulur:
Sonucun yazılması
Doğrulama olumluysa denemecaptured, intent succeeded olur; payment.succeeded
olayı deftere düşer ve webhook kuyruğa girer. Olumsuzsa birleşik hata kodu ve
bankanın ham kodu denemeye yazılır, intent failed olur. Her iki durumda da webhook
tesliminin gecikmesini düşürmek için kuyruk anında dürtülür; dakikalık süpürücü
zaten güvencedir — ayrıntı Webhook’lar sayfasında.
Son adım müşteriyi return_url’e taşımaktır:
Müşteri hiç dönmezse: 3DS zaman aşımı
Müşteri banka sayfasını kapatabilir, SMS beklerken vazgeçebilir, banka hiç dönüş göndermeyebilir. Ödeme sonsuza dekrequires_action’da kalmasın diye beş dakikada
bir çalışan bir iş, süresi dolmuş ve kullanılmamış jetonları tarar:
- Jeton kullanılmış işaretlenir — bundan sonra çok geç gelen banka dönüşü
410alır; durum makinesi tutarlı kalır. - Deneme
three_ds_timeoutkoduylafailed, intentfailedyapılır. payment.failedolayı ve webhook’u üretilir.
Kart bizde toplanıp 3DS bankada yapılan akış
Posnet OOS gibi protokollerde kart veriniz Poyra üzerinden bankaya iletilir, ama doğrulama yine bankanın sayfasında olur (confirm-direct + useThreeDs=true).
Banka formuna kart verisi yazılmaz — yalnızca bankanın ürettiği imzalı paket
taşınır. Dönüş, bu sayfadaki akışın aynısıyla işlenir; tek fark başlangıçta kartın
sizden gelmiş olmasıdır.