Preskoči na sadržaj

Povezivanje sa ESIR-om

Krajnji korisnik povezuje ESIR (ili drugi POS) sa L-PFR-om preko lokalnog HTTP API-ja. L-PFR mora biti pokrenut u okviru AnyBiz desktop aplikacije; BE kartica ubačena i otključana PIN-om.

http://127.0.0.1:8989/api/v3/

API je dostupan samo na lokalnoj petlji (127.0.0.1), ne na mreži.

MetodPutanjaOpis
GET/api/v3/attentionProvera dostupnosti (HTTP 200)
GET/api/v3/statusStatus uređaja (GSC, PIN, audit, stope, make/model…)
POST/api/v3/pinUnos PIN-a; telo = JSON string npr. "1234"; odgovor = string koda (0100, 2100…)
POST/api/v3/invoicesPotpisivanje računa
GET/api/v3/invoices/{requestId}Preuzimanje sačuvanog odgovora po RequestId
GET/api/v3/environment-parametersParametri okruženja (zahteva prisutnu karticu)
ZaglavljeUpotreba
RequestIdIdempotentnost za POST /invoices i kasniji GET /invoices/{requestId}
Accept-LanguageJezik journal-a: sr… → ćirilica; inače engleski
Acceptapplication/json (podrazumevano) ili text/plain; charset=utf-8 — vidi „Format odgovora”

Kod u telu odgovora nosi značenje; HTTP status ga prati tako da ESIR može da reaguje i bez parsiranja tela.

StatusKada
200Uspeh — potpisan račun, prihvaćen PIN (0100), status pročitan
400Zahtev odbijen sa PURS kodom: 1300 (nema kartice), 1500 (potreban PIN), 2310 (nepoznata poreska oznaka), 2210 (potrošen limit BE-a), 2400 (uređaj nije konfigurisan)
423POST /pin sa pogrešnim PIN-om (2100) ili na zaključanoj kartici (2110)
404GET /invoices/{requestId} — nema sačuvanog odgovora za taj RequestId
500SDC_ERROR — interna greška L-PFR-a ili BE-a

Podrazumevano je application/json. ESIR-i pisani prema PURS specifikaciji mogu tražiti golu tekstualnu vrednost koda — pošaljite Accept: text/plain i L-PFR odgovara sa text/plain; charset=utf-8 i kodom bez navodnika:

POST http://127.0.0.1:8989/api/v3/pin
Accept: text/plain
Content-Type: application/json
"1234"
0100
{
"ErrorCode": "1300",
"ErrorMessage": "Smart Card is not present"
}

Provera da L-PFR radi:

GET http://127.0.0.1:8989/api/v3/attention

Status:

GET http://127.0.0.1:8989/api/v3/status

Unos PIN-a:

POST http://127.0.0.1:8989/api/v3/pin
Content-Type: application/json
"1234"

Odgovor (primer): "0100".

Potpis računa (skraćeno — stvarno telo prati InvoiceData šemu):

POST http://127.0.0.1:8989/api/v3/invoices
Content-Type: application/json
RequestId: 550e8400-e29b-41d4-a716-446655440000
Accept-Language: sr-RS
{ "invoiceType": 0, "transactionType": 0, "payment": […], "items": […] }

Uspešan odgovor uključuje broj računa, journal i verificationQRCode.