integracja z kasami fiskalnymi

Integracja z kasami fiskalnymi

Przy realizacji systemów on-line, które opisują rzeczywistą obsługę klienta napotykamy odmienne wyzwania od spotykanych przy tworzeniu aplikacji typowo desktopowych. Integracja z kasami fiskalnymi systemów on-line jest jednym z tych problemów.

W czym problem?

Typowo wytwarzane systemy on-linie działają w pełni na serwerze, gdzieś w internecie. Tam przechowywane są dane, tam dzieje się logia aplikacji. System wysyłana efekty do przeglądarki internetowej i wyświetla je użytkownikowi. Problem pojawia się gdy chcemy podpiąć do komputera użytkownika fizyczne urządzenie i chcemy komunikować pracę tego urządzenia z aplikacją zainstalowaną na serwerze, w internecie. Technologia WWW wytworzona wiele lat temu w swym projekcie nie przewidywała takich zastosowań. Jednak biznes nie lubi ograniczeń. Gdy wdrażaliśmy kolejne systemy: zarządzania salonem fryzjerskim, wytwarzania listów Mikołaja czy zarządzania domem pogrzebowym, zawsze była dyskusja na temat podpięcia zewnętrznych urządzeń do aplikacji.

Podepnijmy kasę fiskalną

W trakcie uruchomienia systemu zarządzania domem pogrzebowym klient zlecił podpięcie kasy fiskalnej. Najpierw zaczęliśmy rozważać czy podpiąć drukarkę bezpośrednio pod Raspberry Pi, następnie komunikować RPi bezpośrednio z serwerem aplikacji. Jednak ten pomysł szybko upadł z powodu potrzeby wdrożenia dodatkowej warstwy sprzętowej i dodatkowej warstwy programowej. Następnie rozważaliśmy napisanie programu na Windowsa, który będzie obsługiwał drukarkę i komunikował się z serwerem aplikacji.

Prototyp komunikacji z drukarką fiskalną

W przeciwności do zastosowania RPi uniknęlibyśmy dodatkowej warstwy sprzętowej, pozostałaby tylko dodatkowa warstwa programowa. Jednak bardzo chcieliśmy uniknąć pisania dodatkowego oprogramowania, dbania o zgodność, aktualizacji wydań komunikacji pomiędzy drukarką a naszą aplikacją. Podnoszenie skomplikowania systemu podnosi koszty utrzymania, a tego żaden klient nie lubi.

WebUSB API z pomocą

Przeszukując źródła w internecie okazało się, że już w 2017 roku pojawiły się pierwsze próby komunikacji przeglądarki internetowej bezpośrednio z portem USB w komputerach. Natomiast w sierpniu 2019 szkic standardu WebUSB API został wdrożony w jednej z przeglądarek internetowych.

WebUSB API i komunikacja z drukarkami fiskalnymi

Dzięki interfejsowi WebUSB API drukarkę fiskalną obsługujemy bezpośrednio z aplikacji w technologii Javascript. Bez dodatkowej warstwy sprzętowej, bez dodatkowej warstwy programowej. I wszystko nie wychodząc poza technologię WWW! W tym wypadku przeglądarka internetowa realizuje obsługę urządzenia USB i udostępnia nam interfejs.

Jak to działa w praktyce?

Rozważaliśmy nakręcenie krótkiego filmu z efektem wdrożenia. Ale to po prostu działa ;-) Do tego jest to na tyle bezinwazyjne i proste w obsłudze, że film byłby nieimponujący więc pozostaniemy w sferze opisu. Co dalej? Teoretycznie jeżeli protokół komunikacji urządzenia jest dobrze opisany to jesteśmy w stanie podłączyć i obsłużyć dowolne urządzenie USB.

W projekcie systemu zarządzania salonem fryzjerskim również urządzenie przez USB. Jednak to było w 2015 roku, gdy jeszcze nie istniało WebUSB API i wtedy padło na obsługę przez RPi. Może pora przepiąć się na komunikację bezpośrednią?

Grafiki ikon wykorzystane w schematach są darmowe i rozpowszechniane na licencji Creative Commons:
Wireframe by Justin Blake from the Noun Project
servers by Justin Blake from the Noun Project
back-end development by Justin Blake from the Noun Project
point of sale by Aiden Icons from the Noun Project