Skip to content
Son güncelleme

Hata Kodları

Bu sayfa, Yolcu360 Agency API'sinin döndürebileceği kapsamlı hata kodlarını ve açıklamalarını içerir. Her hata kodu HTTP durum kodunu, detaylı açıklamayı ve çözüm için önerilen eylemleri içerir.

Hata Yanıt Formatı

Bir hata oluştuğunda, API tutarlı bir hata yanıt formatı döndürür:

{
  "code": 1001,
  "description": "Payload ayrıştırma hatası",
  "details": {
    "field": "checkInDateTime",
    "message": "Gelecek bir tarih olmalı",
    "value": "2023-01-01T10:00:00Z"
  }
}

Yanıt Alanları

AlanTürAçıklama
codeintegerBenzersiz hata tanımlayıcısı
descriptionstringİnsan tarafından okunabilir hata açıklaması
detailsobjectEk hataya özgü bilgiler (isteğe bağlı)

Genel Hatalar (1000-1099)

KodHTTP DurumuAçıklamaÇözüm
1001400Payload ayrıştırma hatasıİstek gövdesi sözdizimini ve içerik türünü kontrol edin
1002400Doğrulama hatasıİstek verilerinin doğrulama kurallarını karşıladığını doğrulayın
1003400Parametre hatasıİstek parametrelerinin doğru olduğunu kontrol edin

Kimlik Doğrulama Hataları (2000-2099)

KodHTTP DurumuAçıklamaÇözüm
2001401YetkisizGeçerli kimlik doğrulama bilgileri sağlayın
2002403YasakKullanıcı izinlerini ve erişim haklarını kontrol edin
2003400Kullanıcının hiçbir organizasyonu yok, destek ile iletişime geçinOrganizasyon atamak için destek ile iletişime geçin
2004401Geçersiz kimlik bilgileriKullanıcı adı ve parolanın doğru olduğunu doğrulayın
2005400Geçersiz organizasyon türü. Lütfen destek ile iletişime geçinOrganizasyon türü sorunları için destek ile iletişime geçin

Konum Hataları (3000-3099)

KodHTTP DurumuAçıklamaÇözüm
3001404Konum bulunamadıKonum kimliğini kontrol edin veya geçerli konum arayın
3002400Geçersiz konum sorgusuKonum sorgu parametrelerinin doğru olduğunu doğrulayın

Arama Hataları (4000-4099)

KodHTTP DurumuAçıklamaÇözüm
4001404Kampanya bulunamadıMevcut kampanyalardan geçerli kampanya kimliği kullanın
4002400Geçersiz ürün koduÜrün kodu formatını ve kullanılabilirliğini doğrulayın
4003400Geçersiz arama kimliğiArama sonuçlarından geçerli arama kimliği kullanın
4004404Ürün bulunamadıÜrün kimliğini kontrol edin veya mevcut ürünleri arayın
4005400Geçersiz giriş zamanıGiriş için geçerli gelecek tarihi kullanın
4006400Geçersiz çıkış zamanıÇıkış için geçerli gelecek tarihi kullanın
4007400Geçersiz rezervasyon süresiÇıkış tarihinin giriş tarihinden sonra olduğundan emin olun
4008400Geçersiz komisyonKomisyon değerinin gereksinimleri karşıladığını kontrol edin
4009400Ofis tedarikçileri farklıAynı tedarikçiden ofisleri kullanın
4010400Geçersiz para birimi koduGeçerli ISO 4217 para birimi kodu kullanın

Sipariş Hataları (5000-5099)

KodHTTP DurumuAçıklamaÇözüm
5001404Acenta konfigürasyonu bulunamadı. Bazı konfigürasyonlar henüz ayarlanmamış olabilir. Lütfen destek ile iletişime geçin.Acenta konfigürasyonu için destek ile iletişime geçin
5002404Sipariş bulunamadıSipariş kimliğinin doğru olduğunu doğrulayın
5003400Organizasyonun birincil fatura adresi yokOrganizasyona birincil fatura adresi ekleyin
5004400Acenta bireysel fatura adresi ekleyemezAcenta siparişleri için kurumsal fatura adresi kullanın
5005400Sipariş açık değil. Kapalı veya iptal edilmiş olabilir.Değişiklikten önce sipariş durumunu kontrol edin
5006400Sipariş kalemi siparişe ait değilSipariş kaleminin belirtilen siparişe ait olduğunu doğrulayın
5007400Siparişin ödemesi yokSiparişe ödeme bilgisi ekleyin
5008404Kalem bulunamadıKalem kimliğinin doğru olduğunu doğrulayın
5009400Kalem durumu geçerli değilKalem durumunun istenen işleme izin verdiğini kontrol edin
5010400Yolcu kimlik numarası geçersizGeçerli kimlik numarası formatı sağlayın
5011400Yolcu pasaport numarası geçersizGeçerli pasaport numarası formatı sağlayın
5012500Rezervasyon başarısızRezervasyonu yeniden deneyin veya destek ile iletişime geçin
5013400Sipariş iptal edilemezSipariş durumunun iptale izin verdiğini kontrol edin
5014400Ürün miktarı geçersizİzin verilen sınırlar içinde geçerli miktar kullanın
5015400Geçersiz ürün koduMevcut ürünlerden geçerli ürün kodu kullanın
5016400Yolcu doğum tarihi geçersizGeçerli doğum tarihi formatı sağlayın
5017400Sınırlı kredi kullanılamazAcenta sınırlı kredi için yetkilendirilmemiş
5018400Tam kredi kullanılamazAcenta tam kredi için yetkilendirilmemiş
5019400Sipariş ödeme türü, tahsilat ödeme yöntemi ile eşleşmiyorÖdeme türünün tahsilat yöntemi ile eşleştiğini doğrulayın

Ödeme Hataları (6000-6099)

KodHTTP DurumuAçıklamaÇözüm
6001400İstenen para birimi için kredi limiti bulunamadıİstenen para birimi için kredi limiti ayarlayın
6002400Ödeme başarısızÖdeme detaylarını kontrol edin ve tekrar deneyin
6003400Geçersiz ödeme türüDesteklenen ödeme türünü kullanın (kredi kartı veya limit)
6004400Araç zaten rezerve edilmişFarklı bir araç veya zaman dilimi seçin
6005400Geçersiz kart bilgisiKredi kartı detaylarının doğru olduğunu doğrulayın
6006400Geçersiz taksit sayısıGeçerli taksit seçeneği seçin
6007500İsteğiniz işlenirken bir hata oluştuLütfen daha sonra tekrar deneyin veya sorun devam ederse destek ile iletişime geçin
6008400Test ortamında ödemeler yalnızca "Yolcutest" tedarikçisi için desteklenmektedirTest ortamında Yolcutest tedarikçisini kullanın

Hata İşleme En İyi Uygulamaları

İstemci Uygulaması

async function handleApiResponse(response) {
    if (!response.ok) {
        const error = await response.json();

        switch (error.code) {
            case 2001: // Yetkisiz
                await refreshToken();
                return retryRequest();

            case 6002: // Ödeme başarısız
                showPaymentError('Ödeme başarısız. Lütfen detaylarınızı kontrol edip tekrar deneyin.');
                return;

            case 4004: // Ürün bulunamadı
                showSearchMessage('Ürün bulunamadı. Lütfen farklı bir arama deneyin.');
                return;

            case 1002: // Doğrulama hatası
                showValidationError(error.description, error.details);
                return;

            default:
                showGenericError(error.description);
        }
    }

    return response.json();
}

function getRetryDelay(headers) {
    const retryAfter = headers.get('Retry-After');
    return retryAfter ? parseInt(retryAfter) * 1000 : 5000;
}

Hata Sınıflandırması

Yeniden Denenebilir Hatalar

  • Rezervasyon başarısız (5012)
  • Ağ zaman aşımları
  • Servis kullanılamazlığı

Yeniden Denenemeyen Hatalar

  • Kimlik doğrulama hataları (2001-2005)
  • Doğrulama hataları (1001-1003)
  • Bulunamadı hataları (3001, 4001, 4004, 5002, 5008)
  • Ödeme hataları (6001-6008)

Yeniden Deneme Stratejisi

async function makeRequestWithRetry(url, options, maxRetries = 3) {
    for (let attempt = 1; attempt <= maxRetries; attempt++) {
        try {
            const response = await fetch(url, options);

            if (response.ok) {
                return response;
            }

            if (!isRetriableError(response.status) || attempt === maxRetries) {
                throw new Error(`İstek başarısız: ${response.status}`);
            }

            // Üstel geri çekilme
            const delay = Math.min(1000 * Math.pow(2, attempt - 1), 10000);
            await new Promise(resolve => setTimeout(resolve, delay));

        } catch (error) {
            if (attempt === maxRetries) {
                throw error;
            }
        }
    }
}

function isRetriableError(status, code) {
    // Yeniden denenebilir belirli hata kodlarını kontrol et
    if (code === 5012) return true; // Rezervasyon başarısız

    // Yeniden denenebilir HTTP durum kodlarını kontrol et
    return [500, 502, 503, 504].includes(status);
}

Hata Günlükleme

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

    // Günlükleme servisine gönder
    fetch('/api/logs/error', {
        method: 'POST',
        headers: {'Content-Type': 'application/json'},
        body: JSON.stringify(errorData)
    });

    // Geliştirme ortamında konsola logla
    if (process.env.NODE_ENV === 'development') {
        console.error('API Hatası:', errorData);
    }
}

Destek ve Sorun Giderme

İletişim Bilgileri

Kalıcı hatalar veya destek için:

Destek İçin Gerekli Bilgiler

Destek ile iletişime geçerken şunları ekleyin:

  1. Hata kodu ve açıklaması
  2. İstek zaman damgası
  3. İstek kimliği (yanıt başlıklarında mevcutsa)
  4. Yeniden üretme adımları
  5. API anahtarı (yalnızca son 4 karakter)

Yaygın Çözüm Adımları

  1. API Durumunu Kontrol Edin: Durum sayfasında servis durumunu doğrulayın
  2. İsteği Doğrulayın: İstek formatının dokümantasyonla eşleştiğinden emin olun
  3. Kimlik Bilgilerini Kontrol Edin: API anahtarının aktif ve izinlere sahip olduğunu doğrulayın
  4. Hız Sınırlarını Gözden Geçirin: Hız sınırlarının aşılıp aşılmadığını kontrol edin
  5. Test Ortamını Deneyin: İsteği test ortamında deneyin
  6. Entegrasyonu Güncelleyin: En son API sürümünü kullandığınızdan emin olun