Ağ kesintisi, timeout veya istemci tarafı hata durumlarında bir isteği iki kez göndermiş olabilirsiniz. Idempotency, aynı işlemin iki kez gerçekleştirilmemesini garanti eder.Documentation Index
Fetch the complete documentation index at: https://docs.payven.com.tr/llms.txt
Use this file to discover all available pages before exploring further.
Nasıl çalışır?
Yazma işlemi yapan tüm endpoint’ler (POST, PUT, PATCH, DELETE) bir Idempotency-Key header’ı kabul eder. Aynı anahtarla gönderilen ikinci istek, ilk yanıtın birebir aynısını döner — yeni bir işlem başlatmaz.
Anahtar gereksinimleri
| Kural | Değer |
|---|---|
| Format | UUID v4 önerilir, herhangi bir string kabul edilir |
| Maksimum uzunluk | 128 karakter |
| Saklama süresi | 24 saat |
| Eşsiz olma kapsamı | Aynı API anahtarı + endpoint kombinasyonu içinde |
Örnek senaryolar
Başarılı istek + tekrar deneme
Başarılı istek + tekrar deneme
- İstemci
POST /paymentsisteği gönderir,Idempotency-Key: ABC123. - Payven işlemi başarıyla gerçekleştirir,
200 OKdöner. - İstemci timeout aldığını sanıp aynı isteği aynı anahtarla tekrar gönderir.
- Payven, yeni bir ödeme oluşturmaz; ilk yanıtın aynısını döner.
Eşzamanlı tekrar istek
Eşzamanlı tekrar istek
- İki istek aynı anda atılır, ikisinde de
Idempotency-Key: ABC123. - Birinci istek işlenmeye başlar.
- İkinci istek, ilkinin tamamlanmasını bekler ve aynı yanıtı alır.
Aynı anahtar farklı payload ile
Aynı anahtar farklı payload ile
- İstemci
Idempotency-Key: ABC123ile15000kuruş ödeme atar. - Aynı anahtarla
25000kuruş ödeme atar. - Payven
409 Conflictdöner — anahtar zaten farklı bir payload için kullanılmış.
24 saat sonrası
24 saat sonrası
- 24 saat önce
ABC123anahtarıyla bir ödeme yapılmış. - Aynı anahtar tekrar kullanılırsa yeni bir işlem oluşturulur (eski kayıt silinmiş).
Önerilen kullanım
Hangi endpoint’lerde zorunlu?
| Endpoint kategorisi | Idempotency kullanımı |
|---|---|
Ödeme oluşturma (POST /payments) | Önerilir |
3D init (POST /payments/3d/init) | Önerilir |
İade (POST /payments/{id}/refund) | Zorunlu |
İptal (POST /payments/{id}/void) | Zorunlu |
Capture (POST /payments/{id}/capture) | Zorunlu |
| Webhook abonelik oluşturma | Opsiyonel |
Liste/sorgu (GET) endpoint’leri | İhtiyaç yok |