Kdysi jsem implementoval terminál od brněnského SONETu, už je to docela dávno, takže ještě nebyl bezkontaktní, ale neřekl bych, že to bude velký rozdíl. Komunikovalo se s tím přes seriový port (fungovalo i pár USB-COM konverterů), protokol by jednoduchý, ale umožňoval docela dost věcí. Každý příkaz měl přesně definovanou hlavičku + volitelně nějaké tělo. Neměl by to být problém implementovat na jakémkoliv OS.
Platba v podstatě spočívala v tom, že se poslal příkaz kolik se má zaplatit, pak terminál posílal nějaké informační zprávy, jako zadej pin, zadána jedna číslice pinu, a podobně, a na konci poslal jestli to proběhlo ok nebo ne.
Pak se tam myslím ještě musela dělat denní inventura nebo tak něco, to už si přesně nepamatuju, ale šlo myslím o to, že terminál sice komunikoval s bankou online při ověřování platby, ale jako skutečně zadaná se platba brala právě až po té inventuře (ale je možné, že si to s něčím pletu, dělal jsem toho v té době víc podobného a už je to pár let...)