İdempotent İşlem (Idempotency) Nedir?
İdempotent işlem (idempotency), aynı isteğin bir ya da birden fazla kez gönderilmesinin sonucu değiştirmediği işlemdir; bağlantı koptuğunda yeniden gönderilen ödeme isteğinin ikinci bir tahsilat oluşturmasını önler.
Diğer Adları: Idempotency, Idempotent Request
İdempotent İşlem Nasıl Çalışır?
İstemci, bir kaydı oluşturan ya da güncelleyen isteğe benzersiz bir idempotency anahtarı ekler. Sunucu aynı anahtarla gelen sonraki istekleri aynı isteğin yeniden denemesi olarak tanır. Stripe’ın birinci sürüm API’sinde ilk isteğin durum kodu ve yanıtı kaydedilir; aynı anahtarla yapılan yeniden denemeler, bir 500 hatası da olsa kaydedilmiş yanıtı döner ve işlem ikinci kez yapılmaz.
Anahtarı istemci üretir. Stripe, çakışmayacak kadar rastgele değerler (4. sürüm UUID gibi) önerir; anahtar en çok 255 karakterdir ve e-posta adresi gibi kişisel bilgiler anahtar olarak kullanılmaz. Aynı anahtar farklı parametrelerle gönderilirse istek hata verir. Anahtarlar en az 24 saat sonra sistemden silinebilir; silinen anahtar yeniden kullanılırsa yeni bir istek sayılır.
Hangi İstekler İdempotent İşlem Sayılır?
Okuma (GET) ve silme (DELETE) istekleri tanımı gereği idempotenttir: aynı kaydı iki kez okumak ya da silmek sonucu değiştirmez. Ödeme almak, sipariş ya da müşteri kaydı oluşturmak gibi POST istekleri ise kendiliğinden idempotent değildir; bu isteklere anahtar eklenerek güvenli yeniden deneme sağlanır. Stripe’ın birinci sürüm API’sinde bütün POST istekleri anahtar kabul eder, GET ve DELETE isteklerine anahtar göndermenin etkisi yoktur.
İdempotent İşlem ile Webhook Tekilleştirmesi Farkı
İdempotent işlem, mağazanın gönderdiği isteğin karşı tarafta iki kez işlenmesini önler. Webhook’ta yön terstir: sağlayıcı aynı bildirimi birden fazla kez gönderebilir ve mağaza, işlediği olay kimliklerini kaydederek aynı bildirimi ikinci kez işlemez. İkisi de tek işlemin tek sonuç üretmesini amaçlar, ama farklı tarafta uygulanır.
Örnek: Müşteri ödeme düğmesine bastığında bağlantı kesilir ve mağaza yanıt alamaz. Mağaza isteği aynı idempotency anahtarıyla yeniden gönderir; ödeme kuruluşu ilk isteği zaten işlemişse ikinci tahsilatı yapmaz, ilk sonucu döner. Anahtar kullanılmasaydı müşteri aynı sipariş için iki kez ücretlendirilebilirdi.
İdempotent İşlem Hakkında Sık Sorulan Sorular
İdempotency anahtarı her istekte yeniden mi üretilir?
Her yeni işlem için yeni anahtar üretilir; aynı işlemin yeniden denemesinde aynı anahtar kullanılır. Yeniden denemede yeni anahtar üretilirse işlem iki kez yapılabilir.
Her ödeme sağlayıcısı idempotency anahtarı destekler mi?
Desteklemeyebilir; destek ve kurallar sağlayıcıya göre değişir. Desteklenmiyorsa aynı sipariş için ikinci ödeme isteği gönderilmeden önce ilk isteğin sonucu sorgulanır.