Fiatside

Developers

Hata kataloğu

Her hata, kararlı, makine tarafından okunabilir bir kod ve tutarlı bir HTTP durumu taşır. Entegrasyonunuzun dallanması gereken şey koddur: metin gelişebilir, kod gelişmez.

01

Bir hatanın şekli

Mevcut şekil kasıtlı olarak minimaldir. Kararlıdır ve önemli olan da budur: bir kod ve iç ayrıntıyı sızdıran hiçbir şey.

Mevcut şekil — gerçek yanıtjson
{ "error": "rate_stale" }
İnsan tarafından okunabilir bir nedenle — gerçek yanıtjson
{
  "error": "rail_not_open",
  "reason": {
    "fr": "La retenue TDS de 1 % et l’enregistrement FIU-IND exigent une entite locale…",
    "en": "The 1% TDS withholding and FIU-IND registration require a local entity…"
  }
}

Bazı hatalar, kullanıcıya olduğu gibi gösterilmesi amaçlanan iki dilli bir neden nesnesi taşır. Kapalı bir kanal bunlardan biridir: neden, adlandırılmış bir düzenleyici kısıtlamayı açıklar, bir kesinti değil ve bunu göstermek bir destek talebini kurtarır. Sürümlü API bu zarfa bir istek kimliği ekleyecektir, böylece bizi günlüklerimizde kesin bir satıra yönlendirebilirsiniz.

02

Yürürlükteki kodlar

Bu kodlar bugün teklif uç noktası tarafından döndürülür.

Yürürlükteki kodlar
codeHTTPNe anlama gelirNe yapmalı
invalid_request400İstek gövdesi şema doğrulamasında başarısız olur: eksik alan, yanlış tür, izin verilen sınırların dışında değer.Tutarın bir sayı değil bir string olduğunu ve yönün tam olarak "sell" veya "receive" olduğunu kontrol edin.
invalid_amount400Tutar ayrıştırılamıyor veya varlığın veya para biriminin kabul ettiğinden daha fazla ondalık basamak içeriyor.Birim hassasiyetine yuvarlayın: USDT için 6 ondalık, BTC için 8, euro için 2, CFA frangı için 0.
unknown_asset_or_rail404Varlık veya kanal tanımlayıcısı katalogda mevcut değil.Tanımlayıcılar sabittir ve asla yeniden atanmaz. Bunları tahmin etmek yerine kataloğu yeniden yükleyin.
rail_not_open409Kanal mevcut ancak açık değil. Yanıt, kesin nedeni her iki dilde de taşır.Nedeni olduğu gibi gösterin: bir kesintiyi değil, düzenleyici bir kısıtlamayı açıklar. Aynı ülkede açık bir kanal önerin.
asset_not_offered409Varlık katalogda ancak sunulmuyor — gelişmiş anonimlik varlıkları durumu.Bunu seçicinizde sunmayın. Katalog, açıklayabilmeniz için nedeniyle birlikte döndürür.
rate_stale503Bilinen son fiyat, izin verilen maksimum yaşı aşıyor. Motor, bayat bir fiyatı sabit bir fiyat olarak sunmak yerine fiyat teklifi vermeyi reddeder.Birkaç saniye sonra yeniden deneyin. Boşluğu doldurmak için son başarılı fiyat teklifini önbelleğe almayın: bu, bu kodun önlediği hatanın ta kendisi olur.
rate_unavailable503Bu varlık / para birimi çifti için fiyat mevcut değil.Bir tahmin göstermek yerine çifti arayüzünüzde devre dışı bırakın. Görüntülenen bir tahmin, bir beklentiye dönüşür.
quote_failed500Hesaplama sırasında beklenmeyen hata. Fiyat teklifi döndürülmez.Bir kez yeniden deneyin; hata devam ederse, çağrının tam zaman damgasıyla bize yazın.
03

Yayınlanan sözleşmeden kodlar

Bu kodlar henüz açık olmayan uç noktalara eşlik eder. Hata işlemeniz bir kez yazılsın diye yayınlanırlar.

Yürürlükteki kodlar
codeHTTPNe anlama gelirNe yapmalı
unauthorized401Anahtar eksik, iptal edilmiş veya yanlış ortamda kullanılmış.Bir sk_test_ anahtarı üretimde çalışmaz ve tersi de geçerli değildir: bu bilinçli bir tasarımdır.
idempotency_conflict409Aynı idempotency anahtarı zaten farklı bir istek gövdesiyle kullanılmış.Bir anahtar tek bir niyete aittir. İçerik değişirse anahtar değişir; aksi takdirde iki siparişten hangisinin tekrarlanacağı bilinemez.
quote_expired409Teklif, kilit penceresini geçti.Yeniden teklif alın ve yeni tutarın kabul edilmesini sağlayın. Müşteriye karşı asla sessizce yeniden fiyatlandırma yapmayız.
beneficiary_rejected422Lehdar bilgileri, havale hattı doğrulamasını geçemiyor: geçersiz sağlama toplamı, uygun olmayan biçim veya doğrulanmış kimlikle eşleşmeyen bir isim.Yanıt, hataya neden olan alanı belirtir. Lehdar adı, doğrulanmış kimlik olmalıdır: üçüncü taraf ödemesi mümkün değildir.
country_not_served451Hedef ülke hizmet verilen ülkeler arasında değil: yaptırımlar, kısıtlayıcı önlemler veya yerel bir çerçevenin bulunmaması.451 kodu, 404 yerine bilinçli olarak seçilmiştir: reddettiğimizde, bunun bir ret olduğunu ve nedenini söyleriz.
rate_limited429Kayan pencere içinde çok fazla çağrı yapıldı.Retry-After başlığına uyun. Teklifler kuyruğa alınmak için ucuzdur, ancak tekrar tekrar göndermek pahalıdır.
not_found404Kaynak mevcut değil veya anahtarınıza ait değil.Her iki durum da aynı kodu döndürür: bunları ayırt eden bir yanıt, herkesin başkalarının referanslarını listelemesine olanak tanır.
04

Hata olmayan şey

Kanal sınırlarının dışındaki bir tutar, limitError nesnesiyle geçerli bir teklif döndürür. Bu bir başarısızlık değildir: arayüzünüzün görüntülemesi gereken bilgidir.

Yanıt alıntısıjson
"limitError": { "code": "below_min", "limit": "20.00" }

Bu durumu bir HTTP hatası olarak ele almak, hesaplanan tutardan ve dolayısıyla kullanıcıya “bu ödeme yöntemi için minimumun 16,53 EUR altındasınız” deme yeteneğinden sizi mahrum bırakır. Sınır, net tutara, yani alıcının aldığı tutara uygulanır.

05

Yeniden dene, ya da değil

Üç aile, üç davranış. Bir doğrulama hatasını döngüde yeniden denemek yalnızca günlüklerinizi doldurur.

Asla yeniden deneme

invalid_request, invalid_amount, unknown_asset_or_rail, asset_not_offered, unauthorized. İstek hatadadır: değiştirmeden yeniden denemek aynı sonucu verir. Düzeltin veya nedeni görüntüleyin.

Geri tepmeli yeniden dene

rate_stale, rate_unavailable, quote_failed ve herhangi bir hız sınırlaması. Birkaç saniye bekleyin, denemeler arasında artan bir boşluk bırakın. Boşluğu önbelleğe alınmış bir teklifle doldurmayın.

Karar isteyin

rail_not_open, quote_expired, beneficiary_rejected, country_not_served. Durum insan seçimi gerektirir: başka bir kanal, yeni bir teklif, düzeltilmiş bilgiler sunun.