Ödeme webhook’larında çift kayıt sorununu nasıl önlüyorsunuz?

0 Yanıt 1 Görüntülenme
Puanlayanlar
Katılımcılar
Konuyu Açan #1
Bir ödeme sağlayıcısından gelen webhook isteğini işlerken, aynı olayın birden fazla kez ulaşması oldukça olağan. Sunucu yanıtı gecikirse sağlayıcı isteği yeniden gönderebilir; ilk işlem aslında tamamlanmış olsa bile siparişte iki kez işlem yapma riski doğar. Ben bu senaryoyu yalnızca uygulama kodunda “daha önce işlendi mi?” kontrolüyle çözmeye güvenmiyorum.

  • Olay kimliğini kalıcı olarak takip edin. İstek imzasını doğruladıktan sonra sağlayıcının olay kimliğini kaydedin ve bu alana veritabanında benzersizlik kısıtı koyun. Aynı olay tekrar gelirse ikinci kayıt eklenemez; uygulama bunu beklenen bir tekrar olarak ele alabilir.
  • Durum değişikliğini tek işlemde yapın. Olay kaydıyla siparişin ödeme durumunu mümkün olduğunca aynı veritabanı transaction’ında güncelleyin. Böylece biri kaydedilip diğeri yarım kalmaz. Sipariş zaten “ödendi” durumundaysa tekrar gelen bildirim yeni bir tahsilat işlemi başlatmamalı.
  • Yan etkileri ayrıca düşünün. E-posta gönderme veya stok düşme gibi işler işlem tekrarında yeniden çalışabilir. Bu işlemler için de sipariş kimliğiyle kontrol ya da kalıcı bir iş kuyruğu yaklaşımı kullanmak faydalı.


Bu yapıyı kurarken en çok zorlayan kısım genelde sağlayıcıya ne zaman başarılı yanıt verileceği oluyor. Siz tekrar gelen webhook’ları ve yarıda kesilen işlemleri nasıl yönetiyorsunuz; kullandığınız veritabanı veya framework’e göre farklı bir yönteminiz var mı?

Yanıt vermek için giriş yapmış olmalısınız.

0 alıntı seçildi