Ana içeriğe geç

Idempotency

Idempotency (eşgüçlülük), aynı isteğin birden fazla kez gönderilmesi durumunda aynı sonucu garanti eden mekanizmadır. Ağ hataları veya timeout durumlarında mükerrer işlemleri önler.

Neden Gerekli?

Bir ödeme isteği gönderdiniz ama yanıt alamadınız. İstek başarılı mıydı? Tekrar göndermeli misiniz?

SenaryoIdempotency OlmadanIdempotency ile
Timeout sonrası tekrar denemeMükerrer ödeme riskiAynı sonuç döner
Ağ hatası sonrası retryİki kez çekim yapılabilirTek çekim garantisi

Nasıl Kullanılır?

İsteklerinize Idempotency-Key header'ı ekleyin:

curl -X POST https://api.jetcheckout.com/api/v1/embedded/session \
-H "Content-Type: application/json" \
-H "Idempotency-Key: unique-request-id-12345" \
-d '{ ... }'

Kurallar

KuralAçıklama
Benzersiz olmalıHer farklı işlem için farklı key kullanın
TekrarlanabilirAynı işlemi tekrar denemek için aynı key'i kullanın
FormatUUID önerilir (örn: 550e8400-e29b-41d4-a716-446655440000)
Geçerlilik24 saat boyunca geçerlidir

Önerilen Uygulama

const crypto = require('crypto');

async function createSession(data) {
const idempotencyKey = crypto.randomUUID();

const response = await fetch("https://api.jetcheckout.com/api/v1/embedded/session", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Idempotency-Key": idempotencyKey
},
body: JSON.stringify(data)
});

return response.json();
}
import uuid
import requests

def create_session(data):
idempotency_key = str(uuid.uuid4())

response = requests.post(
"https://api.jetcheckout.com/api/v1/embedded/session",
json=data,
headers={"Idempotency-Key": idempotency_key}
)

return response.json()
ipucu

Retry mekanizması ile birlikte kullanın. İstek başarısız olduğunda aynı idempotency key ile tekrar gönderin.