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());
}