Problem
Bir ödeme ekranının sorumluluğu, formu gösterip kullanıcıyı yönlendirmekle bitmiyor. Ödeme dönüşünün doğrulanması, kaydın doğru duruma geçirilmesi ve CRM/finans sistemlerinin sonuçtan haberdar edilmesi gerekiyor.
Yaklaşım
Vanity ödeme uygulaması, ziyaretçinin bilgilerini ve ödeme tercihini çok dilli bir arayüzde topluyor. Kredi kartı seçeneğinde ödeme sağlayıcısının ortak ödeme sayfasına yönlendiriyor; banka havalesinde gerekli referans ve hesap bilgisini sunuyor.
Teknik Mimari
Laravel backend üzerinde ödeme kaydı, sağlayıcı yönlendirmesi ve sonuç doğrulaması bulunuyor. Doğrulanan sonuçlar ilgili kayda işleniyor; entegrasyon bildirimleri outbox yapısıyla ele alınıyor. Böylece ödeme sonucu ile dış sisteme bildirim ayrı adımlar olarak izlenebiliyor.
Kullandığım Teknolojiler
Laravel, PHP, MySQL, Blade, JavaScript, Bootstrap, SCSS ve Vite. Kart ödeme akışında ortak ödeme sayfası ve 3D Secure entegrasyonları bulunuyor.
Teknik Odak
- Çok dilli kart ve banka havalesi akışları.
- Sağlayıcı callback ve işlem sonucu doğrulaması.
- CRM kişi/işlem doğrulaması.
- Idempotent outbox ve otomatik yeniden deneme.
- Teknik servis hatalarında kontrollü sağlayıcı değişimi.
Çözümler
Outbox yaklaşımı, ödeme işleme ile entegrasyon bildiriminin birbirine sıkı şekilde bağlanmasını azaltıyor. Yeniden deneme ve idempotency, aynı sonucun tekrar ele alınabildiği durumlar için kullanılıyor. Sağlayıcı değişimi, ödeme sonucunun belirsiz olabileceği durumları gözeten kontrollü bir akış olarak ele alınıyor.
Tasarım Notu
Kullanıcının ekranda gördüğü başarı mesajı ile backend’in doğruladığı sonuç aynı anlama gelmeli. Bu yüzden akıştaki belirleyici an, sağlayıcıdan dönüşün kendisi değil, o dönüşün doğrulanıp kayda işlendiği an oldu. Kullanıcıyı geri getiren yönlendirme bir bildirimdir; ödemenin gerçekleştiğinin kanıtı değildir.
