Über Web, Tech, Games, Art,
Code & Design

22. März 2023

Integration eines QR-Code-Scanners in eine Web-Anwendung

Mit folgender JavaScript-Library lassen sich QR-Codes scannen und interpretieren – sowohl auf einem Smartphone, als auch an einem Desktop-Rechner. Das ganze passiert Client-seitig und erfordert nur ein winzig kleines JavaScript (< 60 kb). Das ist nicht nur aus technischer Sicht sehr beeindruckend.

https://github.com/nimiq/qr-scanner

Da es sehr einfach in Anwendungen integrierbar ist, eröffnet diese Library fantastische Möglichkeiten. Der große Vorteil ggü. den meisten gängigen Systemen: Es muss keine spezielle Hardware zum Scannen angeschafft werden. Ein Smartphone oder ein Rechner mit Kamera ist ausreichend um die QR-Codes auszulesen.

Mögliche Anwendungsbereiche sind z.B.:

  • Ticketsysteme
  • Wertgutscheine
  • Mitgliedskarten
  • Zeiterfassungssyteme
  • digitale Bonuskarten / Treuekarten
  • u.v.m.

Ein solches System könnte ich mir z.B. folgendermaßen vorstellen:

Ein Ticket-System generiert nach dem Kauf eines Tickets eine Unique-ID. Diese ID, wird in einer Datenbank, zusammen mit anderen Informationen zum Ticketkauf, und einer Status-ID gespeichert. Außerdem wird aus dieser ID ein QR-Code generiert und per Mail verschickt oder gedruckt.

Sollte jemand diesen QR-Code scannen, sieht er zwar die ID, kann aber nichts damit anfangen.

Derjenige, den Code überprüft, loggt sich in eine passwort-geschützte Web-App ein. Wird der QR-Code gescannt, wird in der Datenbank nachgeschaut, ob die ID existiert. Ist die ID vorhanden, wird eine positive Rückmeldung gegeben und die Status-ID aktualisiert. Somit ist der Code, bzw. das Ticket entwertet und kann kein zweites Mal genutzt werden.

Oder alternativ, ja nach Anwendung, wird ein Timestamp gesetzt und dem User zugeordnet – z.B. bei einer Zeiterfassungs-Anwendung. Oder die Anzahl der „gesammelten Bonuspunkte“ wird erhöht.

Eine kleine Demo habe ich hier zusammengebaut: https://www.fbnfrtg.de/tools/qr-scanner/


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert