Ana içeriğe geç

Hata Kodları

SignaPort API'de oluşabilecek tüm hata kodları ve çözüm yöntemleri.

Hata Formatı

Tüm hata yanıtları standart JSON formatında döner:

{
"success": false,
"message": "Hata açıklaması"
}

veya

{
"success": false,
"error": {
"code": "ERROR_CODE",
"message": "Hata açıklaması"
}
}

HTTP Status Kodları

KodAnlamKullanım
200OKİstek başarılı
400Bad RequestGeçersiz parametre
401UnauthorizedKimlik doğrulama hatası
404Not FoundKaynak bulunamadı
429Too Many RequestsRate limit aşıldı
500Internal Server ErrorSunucu hatası

Authentication Hataları

INVALID_REQUEST

HTTP Status: 400

Sebep: Eksik veya geçersiz parametreler

Response:

{
"success": false,
"error": {
"code": "INVALID_REQUEST",
"message": "Geçersiz istek parametreleri"
}
}

Çözüm: Request body'deki parametreleri kontrol edin (licenseKey, password, imzaTipi).


INVALID_CREDENTIALS

HTTP Status: 401

Sebep: Yanlış licenseKey veya password

Response:

{
"success": false,
"error": {
"code": "INVALID_CREDENTIALS",
"message": "Geçersiz lisans bilgileri"
}
}

Çözüm: Lisans anahtarı ve şifrenizi kontrol edin.


LICENSE_EXPIRED

HTTP Status: 401

Sebep: Lisans süresi dolmuş

Response:

{
"success": false,
"error": {
"code": "LICENSE_EXPIRED",
"message": "Lisans süresi dolmuş"
}
}

Çözüm: Lisansınızı yenileyiniz.


LICENSE_INACTIVE

HTTP Status: 401

Sebep: Lisans pasif durumda

Response:

{
"success": false,
"error": {
"code": "LICENSE_INACTIVE",
"message": "Lisans aktif değil"
}
}

Çözüm: Lisans yöneticinizle iletişime geçiniz.


Token Hataları

Token boş olamaz

HTTP Status: 400

Response:

{
"success": false,
"message": "Token boş olamaz"
}

Çözüm: Request body'de token parametresini gönderin.


Token süresi dolmuş

HTTP Status: 401

Sebep: Token'ın 5 dakikalık süresi dolmuş

Response:

{
"success": false,
"message": "Token süresi dolmuş"
}

Çözüm: /api/v1/auth/get-token endpoint'inden yeni token alın.


Geçersiz token

HTTP Status: 401

Sebep: Token formatı yanlış, signature geçersiz veya decode edilemiyor

Response:

{
"success": false,
"message": "Geçersiz token"
}

Çözüm: Yeni token alın.


TOKEN_ALREADY_USED

HTTP Status: 400

Sebep: Token daha önce kullanılmış (tek kullanımlık)

Response:

{
"success": false,
"message": "Bu token zaten kullanılmış. Yeni token alınız."
}

Çözüm: Her imzalama için yeni token alın.


Quota Hataları

INSUFFICIENT_QUOTA

HTTP Status: 400

Sebep: İmza kontörü yetersiz

Response:

{
"success": false,
"error": {
"code": "INSUFFICIENT_QUOTA",
"message": "İmza kotası yetersiz"
}
}

Çözüm: Yeni kontör paketi satın alın.


İmza kotası doldu

HTTP Status: 400

Sebep: Kalan kontör 0

Response:

{
"success": false,
"message": "İmza kotası doldu",
"remainingQuota": 0
}

Çözüm: Yeni kontör paketi satın alın.


Domain Hataları

Bu domain için yetki yok

HTTP Status: 401

Sebep: Origin header'daki domain izinli değil

Response:

{
"success": false,
"message": "Bu domain için yetki yok"
}

Çözüm: Domain'inizi lisansa ekletiniz veya izinli domain'den istek yapınız.


Kaynak Hataları

Lisans bulunamadı

HTTP Status: 404

Sebep: Girilen licenseKey sistemde yok

Response:

{
"success": false,
"message": "Lisans bulunamadı"
}

Çözüm: License key'inizi kontrol edin.


Rate Limiting Hataları

Çok fazla istek

HTTP Status: 429

Sebep: Dakikalık istek limiti aşıldı

Response:

{
"success": false,
"message": "Çok fazla istek. Lütfen bekleyiniz.",
"retryAfter": 45
}

Çözüm: retryAfter saniye bekleyip tekrar deneyin.


Sunucu Hataları

Internal Server Error

HTTP Status: 500

Sebep: Sunucu tarafında beklenmeyen hata

Response:

{
"success": false,
"message": "Sunucu hatası oluştu"
}

Çözüm: Tekrar deneyin. Sorun devam ederse destek ile iletişime geçin.


Hata Yönetimi Stratejileri

Retry Mekanizması

async function apiCallWithRetry(fn, maxRetries = 3) {
const nonRetryableErrors = [
'Token süresi dolmuş',
'zaten kullanılmış',
'kotası doldu',
'Geçersiz token',
'Geçersiz lisans'
];

for (let i = 0; i < maxRetries; i++) {
try {
return await fn();
} catch (error) {
// Retry yapılmaması gereken hatalar
if (nonRetryableErrors.some(e => error.message.includes(e))) {
throw error;
}

// Son deneme
if (i === maxRetries - 1) {
throw error;
}

// Exponential backoff
await new Promise(r => setTimeout(r, 1000 * Math.pow(2, i)));
}
}
}

Kullanıcıya Mesaj Gösterme

function getUserFriendlyMessage(error) {
const messages = {
'Token süresi dolmuş': 'İşlem süresi doldu. Lütfen tekrar deneyin.',
'zaten kullanılmış': 'Bu işlem zaten yapılmış.',
'kotası doldu': 'İmza hakkınız bitmiştir. Yeni paket satın alınız.',
'Geçersiz token': 'Kimlik doğrulama hatası. Lütfen tekrar giriş yapın.',
'domain için yetki yok': 'Bu işlem için yetkiniz yoktur.',
'Çok fazla istek': 'Çok hızlı işlem yapıyorsunuz. Lütfen bekleyin.',
'Geçersiz lisans': 'Lisans bilgileriniz hatalı. Lütfen kontrol edin.'
};

for (const [key, msg] of Object.entries(messages)) {
if (error.message.includes(key)) {
return msg;
}
}

return 'Bir hata oluştu. Lütfen tekrar deneyin.';
}

Hata Loglama

function logError(context, error) {
const log = {
timestamp: new Date().toISOString(),
context: context,
error: {
message: error.message,
code: error.code,
stack: error.stack
},
userAgent: navigator.userAgent,
url: window.location.href
};

// Backend'e gönder
fetch('/api/logs/error', {
method: 'POST',
body: JSON.stringify(log)
});

console.error('SignaPort Error:', log);
}

Özet Tablo

HataHTTPEndpointRetryÇözüm
INVALID_REQUEST400get-tokenHayırParametreleri düzelt
INVALID_CREDENTIALS401get-tokenHayırKimlik bilgileri kontrol
INSUFFICIENT_QUOTA400get-tokenHayırKontör satın al
LICENSE_EXPIRED401get-tokenHayırLisans yenile
LICENSE_INACTIVE401get-tokenHayırDestek ile iletişim
TOKEN_ALREADY_USED400validateHayırYeni token al
Token süresi dolmuş401validateHayırYeni token al
Geçersiz token401validateHayırYeni token al
Domain yetkisi yok401validateHayırDomain ekle
Kontör doldu400validateHayırKontör satın al
Lisans bulunamadı404check-quotaHayırLicense key kontrol
Rate limit429TümüEvetBekle ve tekrar dene
Server error500TümüEvetTekrar dene

Destek

Hata çözümünde yardım için:

E-posta: support@akareisg.com

Telefon: +90 XXX XXX XX XX

Çalışma Saatleri: Hafta içi 09:00 - 18:00

Destek talebinde belirtiniz:

  • Endpoint URL
  • Request body (şifreler hariç)
  • Response (tam hata mesajı)
  • Tarih ve saat
  • License key