Ödeme Webhook’u İki Kez Geldiğinde Çift Sipariş Nasıl Önlenir?
Aynı ödeme webhook’u yeniden teslim edildiğinde sipariş oluşturma işlemi tekrar çalışmamalıdır. Sağlayıcı olay kimliği ve iş kuralına ait benzersiz anahtar birlikte kullanılmalı; işlem durumu…
Bu yazıda neler var?
Kısa yanıt
Aynı ödeme webhook’u yeniden teslim edildiğinde sipariş oluşturma işlemi tekrar çalışmamalıdır. Sağlayıcı olay kimliği ve iş kuralına ait benzersiz anahtar birlikte kullanılmalı; işlem durumu veritabanında atomik olarak tutulmalıdır. Webhook’a başarılı yanıt vermek ile siparişin gerçekten tamamlanması farklı aşamalardır.
Olay kimliği ve sipariş kimliği ayrı korumalardır
Sağlayıcı olay kimliği aynı bildirimin yeniden teslimini tanımaya yardımcı olur. Ancak aynı ödeme için farklı olay türleri de gelebilir. Bu yüzden yalnızca “bu event daha önce geldi mi?” kontrolü yeterli olmayabilir. Siparişin hangi ödeme ve iş anahtarına bağlı olduğu da benzersiz kural ile korunmalıdır. Tekrarlı teslim, meşru bir beklenen hata senaryosu olarak tasarlanmalıdır.
Veritabanına önce bakıp ardından kayıt eklemek eşzamanlı iki istekte yarışa açıktır. Benzersiz kısıt ve uygun transaction sınırıyla işlem korunmalıdır. Bir olayın alındı, işleniyor, tamamlandı ve hata durumları ayrılmalıdır. Tamamlanmamış bir kaydın varlığı, işin başarıyla bittiği anlamına gelmez.
İmza kontrolü ve güvenli kuyruk
İş kuralına geçmeden sağlayıcının imza doğrulama yöntemini uygulayın. Doğrulamanın hangi gövde biçimini gerektirdiği resmî dokümandan kontrol edilmelidir. Geçersiz bir isteği normal ödeme olayı gibi kuyruğa almayın. Geçerli olay kalıcı olarak kaydedildikten sonra, uzun işlemler kontrollü bir kuyrukta yürütülebilir. Günlüklerde hassas ödeme ayrıntıları tutulmamalıdır.
Stripe dokümanındaki teslim davranışı, Stripe kullanan entegrasyon için referanstır; başka sağlayıcıların tekrar deneme süresi veya imza biçimi aynı kabul edilmemelidir. Proje teklifinde seçilen sağlayıcı, olay türleri, yeniden deneme kuralları ve başarısız işlerin sorumlusu açıkça belirtilmelidir. İdempotent API isteği de webhook işleme korumasından ayrı bir katmandır.
Mutabakat çift sipariş kadar önemlidir
Testte aynı olayın iki kez, aynı anda ve işlem yarıda kaldıktan sonra yeniden gelmesini deneyin. Ödeme tamamlanıp sipariş oluşmadığında mutabakat görevi açılmalıdır. Operasyon ekranı ödeme ile siparişi ilişkilendirmeli, yeniden işlemenin neyi değiştireceğini göstermelidir. Testin hedefi yalnızca çift kayıt olmaması değil, kayıp siparişin de fark edilmesidir.
Uygulama kontrol listesi
- Webhook imzası doğrulanıyor mu?
- Olay kimliğinde benzersiz kısıt var mı?
- Ödemeye bağlı sipariş anahtarı ayrı korunuyor mu?
- Yarım kalan işlem tekrar işlenebilir mi?
- Ödeme-sipariş mutabakatı görünür mü?
Sık sorulan sorular
Başarılı HTTP yanıtı siparişin bittiğini gösterir mi?
Hayır. Teslim kabulü ile iş akışı tamamlanması farklı kayıtlardır.
Her sağlayıcının retry kuralı aynı mı?
Hayır. Seçilen sağlayıcının resmî sözleşmesi ve dokümanı esas alınmalıdır.
Kapsam ve sınırlar
Bu yaklaşım sağlayıcıya özgü entegrasyon testinin yerine geçmez. Ödeme ve iade akışları canlıya alınmadan önce ilgili sağlayıcının test ortamında doğrulanmalıdır.
Kaynaklar ve güncellik
Kaynak kontrolü: 7 Ekim 2026. Bağlantılı dokümanların sürümü ve sağlayıcı koşulları değişebilir. Uygulamadan önce ilgili kaynağın güncel sürümünü kontrol edin.
