Ugrás a fő tartalomhoz

Számla Agent válasz feldolgozása

Alapok

A kérés elküldése után a szerver válaszában megkapjuk a kért művelet végrehajtásának eredményét (sikeres vagy sikertelen), illetve a válasz sémája szerinti adatokat (lásd. a csomagban a SzamlaAgentRequest::XML_SCHEMA_CREATE_ kezdetű konstansoknál).

// A kérés sikerességét az alábbi módon ellenőrizhetjük:
$agent = SzamlaAgentAPI::create('agentApiKey');
...
...
if ($result->isSuccess()) {
...
}

// A válaszból lekérdezhetjük a bizonylat sorszámát:
echo $result->getDocumentNumber();

// Az összes adatot a következőképpen kaphatjuk meg:
$data = $result->getData();

// A számla kérésre adott válaszból lekérdezhető adatokat
// a következő osztály tartalmazza: `InvoiceResponse`,
// a nyugta esetében ez a következő: `ReceiptResponse`.

//Ha az adatokat tartalmazó objektumot szeretnénk használni:
$data = $result->getDataObj();

// Ha a válaszban megkapott PDF dokumentumra van szükségünk:
$pdfFile = $result->toPdf();

// Ha a választ XML formátumban szeretnénk megkapni és feldolgozni:
$xmlData = $result->toXML();

// Ha a választ JSON formátumban szeretnénk megkapni és feldolgozni:
$jsonData = $result->toJson();

A kérés legenerálásának folyamatában a megadott adatok, a Számla Agent elvárt sémájának megfelelően XML dokumentummá konvertálódnak és elmentésre kerülnek a csomag xml mappájába az alábbi elnevezési konvenciók szerint: {request|response}-{xml-schema}-{text|xml}-{object-name}-{current-timestamp}.xml

pl. response-xmlszamla-text-invoice-2021031012301712345.xml

Egyedi hibák kezelése

Előfordulhat, hogy egy számla kiállítása sikeres, azonban a számlaértesítőt valamilyen ok miatt nem sikerül kézbesítenie a Számlázz.hu rendszerének.

A számla sikeres kiállítását továbbra is a $result->isSuccess() metódussal ellenőrizhetjük. Ez esetben a számlaértesítő sikertelenségét a $result->hasInvoiceNotificationSendError() metódussal kérdezhetjük le. Az értesítő kiküldésének sikertelenségét az API logolja, így a naplófájlban is megtalálható lesz.

Nézzük a konkrét példát a válasz kezelésére:

if ($result->isSuccess()) {
echo 'A számla sikeresen elkészült. Számlaszám: ' . $result->getDocumentNumber();
}
// ha sikertelen az számlaértesítő kézbesítése
if ($result->hasInvoiceNotificationSendError()) {
var_dump($result->getDataObj());
}