{"id":289545,"date":"2026-08-17T08:59:27","date_gmt":"2026-08-17T06:59:27","guid":{"rendered":"https:\/\/www.blumen-schwarz.de\/aktuell\/?p=289545"},"modified":"2026-08-27T14:34:00","modified_gmt":"2026-08-27T12:34:00","slug":"cashgenic-bezahlautomat-unter-linux-mit-curl-ansprechen","status":"publish","type":"post","link":"https:\/\/www.blumen-schwarz.de\/aktuell\/cashgenic-bezahlautomat-unter-linux-mit-curl-ansprechen\/2026\/08\/","title":{"rendered":"Cashgenic  Bezahlautomat unter Linux mit curl ansprechen"},"content":{"rendered":"<p>Wir haben lange nach einem Bezahlautomat (Bargeldeinzahlung an der Kasse mit Bargeldwechsler) gesucht. Da unsere Kassensystem unter Linux laufen und wir die Anbindung selbst machen wollten, war unsere erste Anfrage an einige Herstellter in Deutschland \/ Europa nach der Dokumentation, wie man den Bezahlautomaten ansprechen kann. Kurz: Wir haben nirgends eine brauchbare R\u00fcckmeldung erhalten. Das Ziel der deutschen Hersteller scheint immer zu sein, noch zus\u00e4tzlich das eigene Kassensystem zu verkaufen.<\/p>\n<p>Dann haben wir auf chinesischen B2B Plattformen das Suchen angefangen und nach kurzer Zeit hatten wir eine brauchbare API Beschreibung der Cashgenic Bezahlautomaten auf dem Tisch. Darauf hin haben wir das <a href=\"https:\/\/www.alibaba.com\/product-detail\/Payment-Kiosks-Manufacturer-Retail-Self-Checkout_1601250142696.html\">Ger\u00e4t (in China)<\/a> dort gekauft.<\/p>\n<p>curl ist manchmal etwas komplexer. Deswegen machen wir diese Seite als kurze Hilfe zum Einstieg (mehr holt man sich dann aus der Dokumentation).<\/p>\n<p><em><strong>Hinweis: Nat\u00fcrlich gibt es curl auch f\u00fcr andere Betriebssysteme. Es gibt fast kein Betriebssystem wo curl nicht l\u00e4uft. Daher gilt diese Anleitung nicht nur f\u00fcr Linux.<\/strong><\/em><\/p>\n<h3>erster Schritt<\/h3>\n<p>Bargeldautomaten auf API Zugriff umstellen. Damit werden die Bluetoothverbindungen abgeschaltet und der Automat muss \u00fcber Wlan oder Kabel verbunden sein. Laut Dokumentation sollte damit dann der Webeserver auf den Standard http und https Ports Informationen ausgeben - macht er bei uns nicht. Beide Ports sind zu. Das ist aber nicht wichtig. Bei der Aktivierung des API Zugriffes muss man einen Usernamen und ein Passwort vergeben.<\/p>\n<h3>jetzt geht es los<\/h3>\n<h4>Token erstellen.<\/h4>\n<p>Das Token ersetzt in den weiteren Schritten Username und Passwort. Soweit ich das auswendig wei\u00df, ist es einen Tag g\u00fcltig. Wichtig ist es, curl mit der Option --insecure zu starten. Damit akzeptiert er das selbstsignierte Webserverzertifikat.<\/p>\n<p>curl -X POST -H 'Content-Type: application\/x-www-form-urlencoded' --insecure \"https:\/\/IPADRESSE:44333\/token?grant_type=password&amp;username=USER&amp;password=PASSWORT\"<\/p>\n<p>Wir schreiben mit folgendem 3 Zeiler das Token auf die Festplatte des Kassensystemes:<\/p>\n<p>token=`curl -X POST -H 'Content-Type: application\/x-www-form-urlencoded' --insecure \"https:\/\/IPADRESSE\u200b:44333\/token?grant_type=password&amp;username=USER&amp;password=PASSWORT\" `<br \/>\ntoken=`echo $token|sed 's\/.*access_token\":\"\/\/'|sed 's\/\".*\/\/'`<br \/>\necho $token &gt;.token.txt<\/p>\n<h4>verschiedene Befehle<\/h4>\n<p>(alle setzten voraus, dass das Token in der Datei .token.txt im jeweiligen Verzeichnis liegt). Wichtig ist, dass die Betr\u00e4ge ohne Punkt und Komma immer mit 2 Nachkommastellen angegeben werden. Also 1\u20ac muss als 100 an den Bezahlautomaten gesendet werden (wie halt bei Kartenlesern auch).<\/p>\n<p><strong>Starten eines Kassiervorganges<\/strong><\/p>\n<p>curl -X POST --insecure -H 'Content-Type: application\/json' -H \"Authorization: Bearer <code>`cat .token.txt<\/code>`\" -d '{\"request\":\"PayAmount\",\"value\":BEZAHLBETRAG}' \"https:\/\/IPADRESSE:44333\/session\"<\/p>\n<p><strong>Kassiervorgang beenden (wenn er sauber fertig und abgeschlossen ist)<\/strong><\/p>\n<p>curl -X POST --insecure -H 'Content-Type: application\/json' -H \"Authorization: Bearer <code>`cat .token.txt<\/code>`\" -d '{\"request\":\"CloseSession\"}' https:\/\/IPADRESSE:44333\/session<\/p>\n<p>(das kann man auch zum Testen ob der Zahlvorgang schon abgeschlossen ist, verwenden)<\/p>\n<p>Ansonsten kann man auch (das ist etwas sauberer) mit der Session ID, die mit dem Start des Kassiervorganges zur\u00fcckgegeben wird, den Status abfragen:<\/p>\n<p>curl -X GET --insecure -H 'Content-Type: application\/json' -H \"Authorization: Bearer <code>`cat .token.txt<\/code>`\" https:\/\/IPADRESSE:44333\/status?transaction=IDKASSIERVORGANG<\/p>\n<p><strong>Kassiervorgang au\u00dferplanm\u00e4\u00dfig stoppen<\/strong><\/p>\n<p>curl -X POST --insecure -H 'Content-Type: application\/json' -H \"Authorization: Bearer <code>`cat .token.txt<\/code>`\" -d '{\"request\":\"stopPayment\"}' https:\/\/IPADRESSE:44333\/session<\/p>\n<p>Danach muss man noch ein CloseSession machen<\/p>\n<p><strong>Auszahlung aus der Kasse<\/strong><\/p>\n<p>curl -X POST --insecure -H 'Content-Type: application\/json' -H \"Authorization: Bearer `cat .token.txt`\"\" -d '{\"request\":\"RefundAmount\",\"value\":\"AUSZAHLUNGSBETRAG\"}' https:\/\/IPADRESSE:44333\/session<\/p>\n<p><strong>Einstellung, wieviel Scheine zum Wechseln bereitgestellt werden sollen<\/strong><\/p>\n<p>Bei uns war, nach einem Ausbau des Scheinwechslers auf einmal kein Schein zum Wechseln mehr in der graphischen Oberfl\u00e4che sichtbar und ausw\u00e4hlbar. Sprich: Der Automat h\u00e4tte nur noch mit M\u00fcnzen gewechselt.<\/p>\n<p>Per Api konnte man die Menge und Scheine neu definieren (und die sind danach auch in der GUI wieder aufgetaucht)<\/p>\n<p>curl -X POST --insecure -H 'Content-Type: application\/json' -H \"Authorization: Bearer\u00a0 `cat .token.txt`\" -d '{\"denominations\":[{\"country\":\"EUR\",\"value\":500,\"enabled\":true,\"route\":\"Payout\",\"floatLevel\":5,\"maxStoredLevel\":0}]}' https:\/\/IPADRESSE:44333\/denomination<\/p>\n<p>&nbsp;<\/p>\n<h1>Zum System<\/h1>\n<p>Der Cashgenic Bargeldautomat l\u00e4uft unter Android auf einem Tinkerboard. Tinkerboard ist die Raspberry PI Alternative von Asus.\u00a0 Das Board kommt mit anschaltbaren ADB Zugriff. Damit ist es m\u00f6glich eine Shell auf dem Automaten zu starten und zus\u00e4tzliche Programme zu installieren.\u00a0 Das gibt viel Freiheit und macht Spa\u00df.<\/p>\n<p>Generell tut der Cashgenic einfach das was es machen soll: Geld kassieren und Wechseln.<\/p>\n<p>Es gibt aber ein paar Einschr\u00e4nkungen, die nicht optimal sind.<\/p>\n<ul>\n<li>Das Geh\u00e4use ist nicht so stabil, wie es f\u00fcr einen \"Tresor\" geh\u00f6rt. Wir haben hab daher zus\u00e4tzliche Sensoren, die an die Alarmanlage angeschlossen sind, verbaut. Zus\u00e4tzlich entleeren wir relativ oft.<\/li>\n<li>Der M\u00fcnzz\u00e4hler hat Einschr\u00e4nkungen: Wenn man beim Bef\u00fcllen die M\u00fcnzen \"handvoll\" einwirft, kommt es dazu dass die nicht sauber einzeln erfasst werden. Das Problem daraus: Er gibt zuviel Wechselgeld heraus. Das gleiche Problem trifft beim Sch\u00fcttel, umkippen oder ruppigen Umtragen des Ger\u00e4tes auf.<\/li>\n<li>Wir haben unsere Selbstbedienungskasse mehrsprachig. Obwohl der Cashgenic auch mehrere Sprachen kann, lassen sich diese nicht per API umschalten ...<\/li>\n<li>Der Schein- und der M\u00fcnzwechsler sind so eng nebeneinander verbaut, dass man, wenn das Ger\u00e4t verstopft ist, immer den jeweiligen Wechlser komplett ausbauen muss. D.h. pro Wechlser muss man 4 Schrauben l\u00f6sen und die Kabel abziehen. Dann kann der komplette Wechsler aus dem Geh\u00e4use entfernt werden und man kommt an alle Bereiche (ist auch zum periodischem S\u00e4ubern so n\u00f6tig).<\/li>\n<li>Die Pulverbeschichtung enstpricht nicht dem deutschen Standard. Ich wei\u00df nicht, ob die deutschen Distributoren das Teil nachlackieren. Unsere Chinaversion hatte jedenfalls gravierende M\u00e4ngel.\u00a0 Ist nicht schlimm. Daf\u00fcr haben wir nur weniger als 1\/3 des deutschen Verkaufspreises bezahlt. Daf\u00fcr kann man schon mal Fehler ignorieren oder nachlackieren.<\/li>\n<li>Nach einem Stromausfall und anschlie\u00dfenden Neustart hat der Cashgenic zwar die IP Adresse im Netzwerk angezeigt, war aber im Netzwerk unauffindbar. Ein sauberer Softwarereboot hat das Problem dann gel\u00f6st.<\/li>\n<li>Wir h\u00e4tten gerne den Bildschirm des Geldwechsler zum Abschalten oder so, dass wir hier eigene Inhalte anzeigen k\u00f6nnen. Leider geht das aktuell mit der vorhandenen Software nicht. Vielleicht r\u00fcsten wir das nach.<\/li>\n<\/ul>\n<h3>Hintergrundinfos<\/h3>\n<p>Cashgenic ist ein Markenname f\u00fcr ein Komplettpaket f\u00fcr Bezahlsysteme. Diese wird von der englischen Firma Innovative Technology entwickelt und verkauft. Die API Dokumentation und weitere Infos bekommt man von deren Webseite: <a href=\"https:\/\/www.innovative-technology.com\">https:\/\/www.innovative-technology.com<\/a><\/p>\n<p>Allerdings muss man sich einmalig mit Emailadresse anmelden um Zugriff auf die Supportdokumente zu erhalten. Das lohnt sich aber, weil man damit auch die Reinigungstipps f\u00fcr den Geldschein- und M\u00fcnzwechsler bekommt. Innovative Technology bietet auch viele Ersatzteile auf deren Homepage an (englische Firma: Der Einkauf dort ist \u00e4hnlich komplex wie in China, England ist halt nicht mehr Teil der EU).<\/p>\n<p>Dann gibt es zig Hersteller, die diese cashgenic Komponenten in ein eigenes Geh\u00e4use packen (auch einige deutsche Firmen). Auch eine Heidelberger Firma (Produktname PerfectMoney) macht dies. Nur haben die einen kleineren Bildschirm und die Positionen von Schein- und M\u00fcnzwechsler sind bei unseren Ger\u00e4ten genau anders ... und die Lackierung schaut auf den Bildern besser aus, als unsere.<\/p>\n<p>Damit ist unser Bargeldwechsler ein typisches \"Weltprodukt\". Software, wichtige Hartware Teile kommen mit englischen KnowHow und teilweise aus England. Asus (Tinkerboard) ist eine taiwanesische Firma. Zusammengeschraubt und mit Geh\u00e4use versehen wird das Zeug in China ...<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Einbindung eines Cashgenic Bezahlautomaten in unsere Kassensysteme mit curl.<\/p>\n","protected":false},"author":2,"featured_media":289555,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[3496],"tags":[3617,3616,3619,3618],"class_list":["post-289545","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technik-blog","tag-bezahlautomat","tag-cashgenic","tag-curl","tag-linux","thunk-woo-product-list","open-woo-hover-zoom","open-single-product-tab-horizontal","open-shadow-","open-shadow-hover-"],"_links":{"self":[{"href":"https:\/\/www.blumen-schwarz.de\/aktuell\/wp-json\/wp\/v2\/posts\/289545","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.blumen-schwarz.de\/aktuell\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blumen-schwarz.de\/aktuell\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blumen-schwarz.de\/aktuell\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blumen-schwarz.de\/aktuell\/wp-json\/wp\/v2\/comments?post=289545"}],"version-history":[{"count":10,"href":"https:\/\/www.blumen-schwarz.de\/aktuell\/wp-json\/wp\/v2\/posts\/289545\/revisions"}],"predecessor-version":[{"id":289579,"href":"https:\/\/www.blumen-schwarz.de\/aktuell\/wp-json\/wp\/v2\/posts\/289545\/revisions\/289579"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.blumen-schwarz.de\/aktuell\/wp-json\/wp\/v2\/media\/289555"}],"wp:attachment":[{"href":"https:\/\/www.blumen-schwarz.de\/aktuell\/wp-json\/wp\/v2\/media?parent=289545"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blumen-schwarz.de\/aktuell\/wp-json\/wp\/v2\/categories?post=289545"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blumen-schwarz.de\/aktuell\/wp-json\/wp\/v2\/tags?post=289545"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}