Printare bonuri prin server HTTP

Cum pornești serverul web al driverului DxPrint și cum trimiți bonuri și comenzi către casa de marcat prin HTTP, din browser sau din rețea.

Când driverul rulează în modul rezident și opțiunea httpServerActiv este activă, driverul pornește un server web prin care primește comenzi direct prin HTTP.

Adresa serverului web este formată din adresa IP a calculatorului pe care rulează driverul și portul din opțiunea httpPort. De exemplu, dacă acest calculator are IP-ul 192.168.1.23, iar portul ales este 8080, interfața web a driverului se deschide în browser la adresa http://192.168.1.23:8080.

Cel mai probabil, sistemul de operare îți va cere permisiunea să accepte conexiuni pe portul ales. Permite conexiunile, altfel serverul nu poate primi bonuri. Serverul nu este securizat cu certificat SSL: este gândit pentru rețele interne, cu mai multe calculatoare și un singur echipament fiscal.

Exemplele de mai jos folosesc adresa http://192.168.1.23:8080. Adresa IP a calculatorului tău va fi aproape sigur alta.

Adresa IP se află astfel:
Windows: în Command Prompt rulează comanda ipconfig și caută în rezultat rândul IPv4 Address.
Linux, macOS: în Terminal rulează comanda ifconfig și caută rândul inet de la eth0 sau en0, în funcție de plăcile de rețea instalate.

După pornirea driverului cu serverul HTTP activ, verifici că funcționează deschizând în browser adresa http://192.168.1.23:8080. Pagina afișată conține toate detaliile pentru a tipări un bon de pe alt calculator din rețea. Dacă opțiunea httpPermiteListareDirBonuri este activă, poți deschide din ea și directoarele de bonuri executate și de răspuns.

Ca să tipărești un bon prin HTTP, trimite o cerere POST la adresa http://192.168.1.23:8080/bonuri, cu liniile de comandă din fișierul de bon în body. Numele bonului se poate trimite în parametrul nume din query. Exemplul de mai jos trimite bonul bon.inp, cu un produs și un discount de 10%:

RequestFără autentificare
POST http://192.168.1.23:8080/bonuri?nume=bon.inp HTTP/1.1
Content-Type: text/plain; charset=utf-8
Content-Length: 200

S,1,______,_,__;Produs cu denumire 1;10.00;1.000;1;1;1;0;0;buc;
C,1,______,_,__;1;10.00;;;;
W,1,______,_,__;ic;Reducere client fidelizare: 10%;
W,1,______,_,__;ic;Va multumim!;
T,1,______,_,__;0;;;;;

Dacă autentificarea este activă, trimite cererea cu headerul Authorization, ca în exemplul de mai jos. Autentificarea este de tip Basic Auth.

RequestCu Basic Auth
POST http://192.168.1.23:8080/bonuri?nume=bon.inp HTTP/1.1
Content-Type: text/plain; charset=utf-8
Authorization: Basic dXNlcjpwYXJvbGE=
Content-Length: 200

S,1,______,_,__;Produs cu denumire 1;10.00;1.000;1;1;1;0;0;buc;
C,1,______,_,__;1;10.00;;;;
W,1,______,_,__;ic;Reducere client fidelizare: 10%;
W,1,______,_,__;ic;Va multumim!;
T,1,______,_,__;0;;;;;

Răspunsul conține numele fișierului generat pentru tipărire. Serverul web nu validează comenzile: din ele driverul construiește un fișier de bon, îl copiază în directorul de bonuri setat în opțiunea directorBonuri și îl execută ca pe orice alt bon.

Body-ul răspunsului conține numele fișierului generat de driver și trimis către echipamentul fiscal. La numele bonului primit se adaugă _HTTP_ip_client_port_client_datetime, ca să vezi rapid, în fișierele executate sau de răspuns, de la ce calculator a venit bonul, prin ce protocol și la ce dată și oră. În exemplul de mai jos, bonul a venit de la calculatorul cu IP-ul 192.168.1.50, pe 12.09.2018, la ora 13:20:36.

ResponseBon acceptat
HTTP/1.1 200 OK
Content-Type: text/html
Date: Wed, 12 Sep 2018 10:20:36 GMT
Content-Length: 52

bon_inp_HTTP_192_168_1_50_59936_2018_09_12_13_20_36_124.inp

Dacă ai nevoie de ajutor la scrierea unui client HTTP pentru această integrare, scrie-ne la suport@dxprint.ro.

Driverul poate servi în același timp și o aplicație de vânzare locală care scrie bonurile în același director. Primirea bonurilor prin HTTP nu afectează funcționarea locală a driverului. Poți folosi, tot în același timp, și preluarea bonurilor din directorul FTP.