Válasz
Sikeres lekérés után a getPdf() egy InvoicePdf objektumot ad vissza. A pdf mező mindig ki van töltve: ha a Számlázz.hu válaszában nincs PDF, a kassza hibát dob. A többi mező a válasz XML-jéből jön, és ha ott hiányzik, a kassza a szlahu_* fejlécekből pótolja.
InvoicePdf#
| Mező | Típus | Forrás | Leírás |
|---|---|---|---|
pdf | Uint8Array | pdf | A bizonylat PDF-je. |
number | string | undefined | szamlaszam | A bizonylat száma. Rendelésszám vagy külső azonosító alapján ebből tudod meg, melyik bizonylatot kaptad. |
netTotal | number | undefined | szamlanetto | Nettó végösszeg. |
grossTotal | number | undefined | szamlabrutto | Bruttó végösszeg. |
outstanding | number | undefined | kintlevoseg | Hátralék. |
buyerAccountUrl | string | undefined | vevoifiokurl | A vevői fiók linkje, ha a fiókban be van kapcsolva. |
Letöltés Next.js route-ból#
Az alábbi route a bejelentkezett vevőnek letöltésként adja vissza a rendeléséhez tartozó számlát. Az auth() és a db a saját alkalmazásod moduljai, a számlaszámot a kiállításkor mentetted el a rendelés mellé.
- Más vevő rendelésére is 404-et ad, így a válaszból nem derül ki, hogy a rendelés létezik.
- A
new Uint8Array(pdf)csak a TypeScript miatt kell: a DOM típusok aResponsetörzsénélArrayBufferalapú tömböt várnak, apdftípusa pedig ennél általánosabb. - Ha a PDF a böngészőben nyíljon meg, az
attachmenthelyettinlineértéket adj. - Minden letöltés egy Számla Agent hívás. Ha a vevők gyakran töltik le a számlát, mentsd el egyszer tárhelyre, és onnan szolgáld ki.
Mentés tárhelyre#
Ha a számlát downloadPdf: false beállítással állítottad ki, vagy a PDF mentése a kiállításkor nem sikerült, egy háttérfeladat később is letöltheti és elmentheti. A kassza/storage modul S3-ba, Cloudflare R2-be és más tárhelyekre ment:
- Az
invoicePdfKey()a számlaszámból és a dátumból képez kulcsot, példáulszamlak/2026/09/WEB-2026-128.pdf. Adatenélkül a mai budapesti dátumot használja. Atypemezővel ('storno','proforma'stb.) a bizonylat külön mappába kerül. - A
storePdf()feltöltés előtt ellenőrzi, hogy a tartalom valóban PDF, és ha nem,StorageError-t dob. A visszaadottStoredFileakey,size,contentTypeés, ha a tárhely ad ilyet, azurlmezőt tartalmazza. - A többi tárhely (AWS SDK, R2 binding, Vercel Blob, UploadThing, Supabase, fájlrendszer, memória) ugyanígy használható, lásd PDF mentése tárhelyre.
Hibák#
| Kód | Kategória | Mikor fordul elő? |
|---|---|---|
| – | validation | Üres vagy többértelmű hivatkozás, például egyszerre invoiceNumber és orderNumber. Kérés nem megy ki. |
| 1 | maintenance | Karbantartás a Számlázz.hu oldalán. A kassza magától újrapróbálja. |
| 3 | auth | Hibás Agent kulcs. |
| 7 | not_found | Nincs bizonylat ezzel a számlaszámmal, rendelésszámmal vagy külső azonosítóval. Az error.isNotFound is true. |
| – | unexpected_response | A válasz sikeres, de nincs benne PDF, vagy a PDF nem érvényes base64. |
| – | network, timeout | Hálózati hiba, 5xx válasz vagy időtúllépés, és a próbálkozások elfogytak. Később nyugodtan próbáld újra, a lekérdezés nem hoz létre semmit. |
Az összes kódot a Hibakezelés, hibakódok oldal sorolja fel.
A kulcs ellenőrzése is ezt használja#
A kassza.verifyCredentials() egy biztosan nem létező számlaszám PDF-jét kéri le. Ha a Számlázz.hu 7-es hibát ad, a kulcs jó, csak a számla nincs meg, ezért az eredmény true. auth hibánál false, minden más hibát továbbdob.
Lásd A kulcs ellenőrzése.