Schnittstellen

Integration in das Kassensystem

Die Integration der TSE in ein Kassensystem erfolgt über ein SDK (Software Development Kit).

Ein SDK stellt eine Programmierschnittstelle für eine konkrete Programmiersprache bzw. Laufzeitumgebung dar. Demzufolge wählt der Systemintegrator das für jeweilige Kassensystem passende SDK, um die Funktionalität der TSE zu integrieren (Beispiel: für ein in Java implementiertes Kassensystem ist das Java SDK zu wählen).

Da ein SDK immer spezifisch für eine konkrete Programmiersprache ist, wird fiskaly mehrere Referenzimplementierungen für die gängigsten Sprachen und Laufzeitumgebungen Open-Source unter github.com/fiskaly zur Verfügung stellen. Aufgrund der freizügigen MIT-Lizenz können die SDKs beliebig modifiziert, erweitert und distribuiert werden.

Konzeptuell stellt ein SDK einen HTTP-Client dar, welcher explizit für die Kommunikation mit unserer REST API (KassenSichV-API) optimiert wurde. In der ersten Ausbaustufe liefert das SDK folgende Funktionalitäten:

  • Alle Belange rund um das Authentifizieren, d.h. das Abholen sowie das regelmäßige und im Fehlerfall notwendige Erneuern der für die Kommunikation mit unserer REST API benötigten JWT Authentication Token wird komplett abstrahiert. Konkret bedeutet das, dass der Integrator lediglich einen API-Key sowie das entsprechende API-Secret anzugeben hat.

  • Im Falle von Server-Fehlern seitens unserer REST API sowie etwaigen Verbindungs-Problemen (z.B. Timeout) kümmert sich das SDK unter Ausnutzung der Idempotenz-Eigenschaft unserer REST API selbstständig darum, die fehlgeschlagenen Anfragen (inklusive “exponential backoff”) erneut abzusetzen bzw. entsprechende Kompensationsmechanismen anzustoßen.

  • Das Serialisieren und Deserialisieren der Anfragen und Antworten in das verwendete JSON-Format passiert automatisch.

  • Im Falle von Offline-Szenarien (sprich: Filiale ist offline oder die fiskaly REST API ist offline) kümmert sich das SDK selbstständig und automatisch (sprich: kein manuelles Eingreifen ist notwendig) um die im Anwendungserlass zu § 146a AO in dieser Situation vorgesehene und nunmehr geregelten Protokollierung des Sachverhaltes. Dies inkludiert das lokale Persistieren und nachträgliche Übertragen bzw. Synchronisieren der offline persistierten Protokollierungen an die fiskaly REST API. Somit werden alle protokollierten Störungen zu einem späteren Zeitpunkt (sobald das System wieder online ist) auch zentralisiert gespeichert und damit von zentraler Stelle wieder nachvollziehbar auslesbar.

  • Konformität hinsichtlich der Anforderungen aus BSI CC-PP-0105-2019. Das vom BSI spezifizierte Protection Profile erfordert, dass eine lokal, im operational environment des Kassensystems ausgeführte SMA-Komponente die Inkrementierung des Transaktionszählers sowie den Aufbau des Trusted Channels zur fernverbundenen CSP-Komponente übernimmt. Aufgabe des SDKs ist es, die in binärer bzw. ausführbarer Form vorliegende SMA-Komponente anzusprechen und die Verwendung der benötigten Funktionalität für den Nutzer des SDKs (=Entwickler) möglichst komplett zu abstrahieren.

Github Übersicht

Last updated on