Hata Yönetimi
API'den dönebilecek hatalar ve bunların nasıl yönetileceği.
HTTP Hata Kodları
| Kod | Anlamı | Ne Yapmalı? |
|---|---|---|
400 | Geçersiz istek | İstek gövdesini kontrol edin |
401 | Yetkisiz | API key'inizi kontrol edin |
404 | Bulunamadı | Session ID'nin doğru ve geçerli olduğunu kontrol edin |
422 | Validasyon hatası | Zorunlu alanları kontrol edin |
429 | Rate limit | Bir süre bekleyin, istekleri azaltın |
500 | Sunucu hatası | Destek ekibiyle iletişime geçin |
Hata Yanıt Formatı
{
"detail": "Session not found or expired"
}
Ödeme Hataları
Ödeme işleminde dönebilecek hatalar:
{
"success": false,
"order_id": "ORD-xxx",
"status": "error",
"message": "Yetersiz bakiye"
}
Yaygın Hatalar ve Çözümleri
"Session not found or expired"
- Session ID doğru mu kontrol edin
- Session oluşturulduktan sonra 1 saat geçmişse yeni session oluşturun
"Invalid merchant API key"
- API key'in doğru olduğundan emin olun
- Odoo'da merchant'ın aktif olduğunu kontrol edin
CORS Hatası
- API'nin CORS ayarlarında sitenizin domain'i ekli olmalı
httpvehttpsfark eder, doğru protokolü kullandığınızdan emin olun
3D Secure Timeout
- Müşteri 3D Secure sayfasında çok beklemiş olabilir
- Yeni bir ödeme denemesi başlatın
Retry Stratejisi
async function payWithRetry(data, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
const result = await makePayment(data);
return result;
} catch (error) {
if (error.response?.status === 429) {
// Rate limit - bekle ve tekrar dene
await new Promise(r => setTimeout(r, 2000 * (i + 1)));
continue;
}
if (error.response?.status >= 500) {
// Sunucu hatası - bekle ve tekrar dene
await new Promise(r => setTimeout(r, 1000 * (i + 1)));
continue;
}
// Diğer hatalar - tekrar deneme
throw error;
}
}
throw new Error("Maximum retry limit reached");
}