Erori și coduri

    Ce înseamnă fiecare cod.

    Ramifică după codul de stare și după `code`, unde există, niciodată după text: textele se pot schimba, iar unele vin de la casă, în limba ei.

    API local

    Forma erorii: { "statusCode": …, "message": "…" }, plus code unde un singur cod de stare acoperă două refuzuri. Niciodată HTML. Excepție: /api/Receipt răspunde mereu 200 (vezi „Treci de pe FiscalNet sau Fisco”).

    StatusCheie în surseDescriere
    200—Succes.
    400—Cererea încalcă o regulă (interval, lungime, obiect lipsă), sau casa a refuzat comanda („Receipt printing error: …”). Un bon deschis e anulat întâi.
    400INVALID_SEPARATING_LINE_TYPETipul liniei de separare nu e 1–4, sau e 4 pe o casă Datecs.
    401LICENSE_REQUIREDCasa conectată nu are licență.
    403COMMERCE_LICENSE_REQUIREDRutele Shopify fără licența Commerce.
    404—Resursa nu există.
    424—Transport: nicio casă conectată, sau legătura cu casa a căzut.
    500—Casa n-a răspuns la timp: aplicația o marchează „nu răspunde”, iar următorul succes șterge marcajul. Sau o eroare neașteptată în aplicație.

    Coloana „Cheie în surse” numește refuzul în documentația noastră. Câmpul code apare în corp doar pe rutele unde un cod de stare acoperă două refuzuri.

    json
    {
      "statusCode": 500,
      "message": "Internal server error occurred - if you see this, please contact the developer"
    }

    API Cloud

    Mesajele de eroare sunt text simplu: text/plain fără antet Accept, sau un șir JSON cu Accept: application/json. O cerere care nu se poate citi deloc răspunde application/problem+json, cu o hartă errors.

    StatusDescriere
    202Comanda e în coadă.
    400Validarea a eșuat; corpul e mesajul.
    401Fără cheie, sau cheie necunoscută, revocată ori expirată. Corp gol.
    403Cheie de alt tip sau a altei organizații. Corp gol.
    404Nu există în organizația ta; corpul e mesajul.
    409Conflict cu date existente, de exemplu un nume de client deja folosit.
    500Eșec neașteptat. Corpul poate fi gol.

    Rezultatul unei comenzi

    O comandă răspunde 202 imediat; rezultatul casei îl citești apoi cu „Starea unei comenzi”: codul în statusCode, textul în message. Un rezultat reușit e StatusCode 200 cu răspunsul în Data; o eroare a casei e un obiect cu statusCode și message.

    statusCodeDescriere
    200Succes.
    400Casa a refuzat, sau corpul încalcă o regulă a aplicației FiscalLink. Majoritatea regulilor se verifică înainte de deschiderea bonului; un bon care eșuează după deschidere e anulat, iar mesajul se termină cu | Receipt cancelled successfully.
    404unknown_command: aplicația FiscalLink de pe casă e prea veche pentru această comandă.
    409La citirea cotelor TVA: verificarea cotelor e oprită pe casă.
    424Transport: imprimanta nu e conectată sau n-a răspuns la timp.
    499client_cancelled: comanda a fost anulată în timp ce rula.
    500Eroare neașteptată în aplicație; mesajul numește excepția. Un bon fiscal deja deschis e anulat.

    Erorile pe care aplicația le dă înainte să ajungă la casă au corpuri fixe:

    json
    { "error": "unknown_command", "commandType": "cashRegister.printFiscalReceipt" }
    json
    { "error": "invalid_payload", "detail": "<detail>" }
    json
    { "error": "internal_error" }
    json
    { "error": "client_cancelled" }

    Înainte să retrimiți

    • `400`: cererea a fost refuzată înainte să plece ceva spre casă, sau bonul a fost anulat. Corectează cererea și trimite-o din nou.
    • `424` și timeout (`500`) la un bon fiscal: nu dovedesc că nu s-a tipărit nimic; un document poate exista. Nu retrimite automat. Un bon se trimite din nou doar când știi sigur că nu s-a tipărit, pentru că un bon fiscal dublat nu se mai poate repara.
    • API-ul Cloud: fiecare trimitere e o comandă nouă și un bon nou. Când răspunsul unei trimiteri se pierde, interoghează lista comenzilor („Istoricul casei” sau „Toate comenzile”) înainte să trimiți din nou.

    Erori frecvente

    #EroareCe faci
    1401 pe API-ul localCasa nu are licență. Clientul o activează din FiscalLink Cloud (pașii: /app/docs).
    2424Casa nu e conectată sau legătura a căzut. Clientul verifică conexiunea în aplicația FiscalLink (pașii: /app/docs).
    3500 la timeoutCând legătura merge, un timeout înseamnă aproape mereu că, de fapt, casa e în alt mod de lucru. Verifică pe casă, apoi citește „Înainte să retrimiți”.
    4400 vânzare liberă pe DaisyPornește „Vânzare liberă pe Daisy” (în aplicație sau, ca integrator, în Setări → Date companie) sau vinde articole PLU.
    5400 grupă TVAFolosește o grupă pe care casa o are și care poartă 21%, 11% sau 0%: Tremol 1–6, Datecs 1–7; un Datecs neplătitor de TVA doar 5 și 6.
    6Casa refuză bonurile după 24 de oreCasa blochează vânzările la 24 de ore de la prima vânzare fără raport Z (Datecs -111024, Tremol 1100, Daisy 82 „DEPASIT 24h”); pe Datecs, aplicația avertizează după 20 de ore. Trimite raportul Z.
    7409 la citirea cotelor TVAVerificarea cotelor TVA e oprită în aplicația de pe casă. Clientul o pornește din setările aplicației (/app/docs).
    8404 la trimiterea unei comenzi CloudCasa nu poate primi comenzi: verifică cu „Citește o casă” că e Active, că awaitingClientConsent e false și că abonamentul e activ.
    9403 pe API-ul CloudCheia e de alt tip (comenzi, administrare, sandbox) sau tenantId nu e organizația cheii.
    10unknown_commandAplicația FiscalLink de pe casă e prea veche. Clientul o actualizează (/download).
    11Fără hârtiePe API-ul Cloud, bonul se reîncearcă singur la 60 de secunde; interoghează ID-ul inițial. După ce clientul pune hârtie, bonul pleacă.
    12Amount must be between 0.01 and 9999999.99. | Receipt cancelled successfullyPlată automată la un total de 0 sau mai mic, pe Datecs. Verifică liniile bonului.