Rate Limiting
Paylox API, kötüye kullanımı önlemek ve tüm kullanıcılara adil hizmet sunmak için rate limiting uygular.
Limitler
| Endpoint Grubu | Limit | Pencere |
|---|---|---|
| Session oluşturma | 100 istek | Dakika |
| Ödeme işlemleri | 60 istek | Dakika |
| Durum sorgulama | 300 istek | Dakika |
| BIN / Taksit sorgulama | 200 istek | Dakika |
| Genel (tüm endpoint'ler) | 1000 istek | Dakika |
Rate Limit Aşıldığında
HTTP 429 yanıtı döner:
{
"detail": "Rate limit exceeded. Try again in 30 seconds."
}
Yanıt header'ları:
| Header | Açıklama |
|---|---|
X-RateLimit-Limit | Toplam izin verilen istek sayısı |
X-RateLimit-Remaining | Kalan istek sayısı |
X-RateLimit-Reset | Limitin sıfırlanacağı zaman (Unix timestamp) |
Retry-After | Tekrar denemeden önce beklenecek süre (saniye) |
Retry Stratejisi
Rate limit aşıldığında exponential backoff uygulayın:
async function requestWithRetry(url, options, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
const response = await fetch(url, options);
if (response.status === 429) {
const retryAfter = parseInt(response.headers.get("Retry-After") || "5");
await new Promise(r => setTimeout(r, retryAfter * 1000));
continue;
}
return response;
}
throw new Error("Rate limit exceeded after max retries");
}
import time
import requests
def request_with_retry(url, json_data, max_retries=3):
for i in range(max_retries):
response = requests.post(url, json=json_data)
if response.status_code == 429:
retry_after = int(response.headers.get("Retry-After", 5))
time.sleep(retry_after)
continue
return response
raise Exception("Rate limit exceeded after max retries")
Best Practices
| Uygulama | Açıklama |
|---|---|
| Cache kullanın | BIN ve taksit sorgulama sonuçlarını kısa süreliğine cache'leyin |
| Batch işlemler | Mümkünse istekleri gruplayın |
| Retry-After'a uyun | Header'daki bekleme süresine uyun |
| Monitoring | 429 yanıtlarını izleyin ve gerekirse limit artışı talep edin |
ipucu
İş hacminiz mevcut limitleri aşıyorsa, [email protected] adresine ulaşarak limit artışı talep edebilirsiniz.