Wie kann ich die Sandbox nutzen?

Die Sandbox hat exakt dieselben Funktionen wie das Live-System von fiskaltrust. Sie können mit der URL https://portal-sandbox.fiskaltrust.fr/ darauf zugreifen. Bei der Sandbox können Sie sich, wie im Echtsystem, mit ihren Firmendaten registrieren, der einzige Unterschied ist: Die fiskaltrust.Sandbox dient zum Lernen und Ausprobieren aller Funktionen des fiskaltrust.Portals, ohne rechtliche Verpflichtungen einzugehen.

Während der Kommunikation mit der Sandbox, wird vom fiskaltrust.Service eine zusätzliche Signatur für jeden Beleg gesendet. Diese Signatur muss auf jeden Beleg gedruckt werden und zeigt eindeutig, dass der Beleg mit der Sandbox erstellt wurde. 

Wie erstelle ich ein Outlet?

Damit der fiskaltrust.Service entsprechend den französischen Gesetzen eingerichtet werden kann, muss ein Outlet vorhanden sein. Sobald Sie das Unternehmen beim Portal registrieren, wird automatisch ein Outlet angelegt. Abhängig von den Daten, die Sie während der Registrierung eingegeben haben, müssen Sie das Outlet im fiskaltrust.Portal noch anpassen.

Stellen Sie zunächst sicher, dass Sie in den Stammdaten Ihres Unternehmens einen gültigen SIREN eingegeben haben. Sie können die Nummer überprüfen/ändern, indem Sie auf den Firmennamen in der linken Seitenleiste des fiskaltrust.Portal und dann auf die Unterkategorie Stammdaten klicken. Wenn Sie sich gerade angemeldet sind, können Sie diesem Link für die Sandbox https://portal-sandbox.fiskaltrust.fr/AccountProfile/Edit und diesem Link für das Livesystem https://portal.fiskaltrust.fr/AccountProfile/Edit folgen.

Nun müssen Sie das Feld SIREN überprüfen. Hier geben Sie die SIREN ihres Unternehmens ein und klicken auf die Schaltfläche Datenprüfung auf der rechten Seite, um sie zu bestätigen. Im Sandbox-Modus können Sie eine beliebige 9-stellige Nummer eingeben.

Der zweite Schritt ist der Befehl Outlets im Menü der Firma. Folgen Sie diesem Link für die Sandbox: https://portal-sandbox.fiskaltrust.fr/AccountOutlet oder diesem für das Live-System: https://portal.fiskaltrust.fr/AccountOutlet.

Zunächst sollten Sie das bereits vom System erstellte Outlet überprüfen. In einem zweiten Schritt können Sie mit der Schaltfläche oben rechts auf dem Bildschirm ein neues Outlet hinzufügen. Für jede Zweigstelle müssen Sie den SIRET des Outlets in das Datenfeld Standort-ID und die Adresse eingeben. Die Nummer des Outlets zählt hoch und sollte mit der im SIRET verwendeten übereinstimmen (Ziffer 10 bis 13). Die Outlet-Nummer muss eindeutig sein.

Beachten Sie, dass Sie die SIREN der Stammdaten als die ersten neun Ziffern verwenden Danach folgen 5 Ziffern, um die Nummer zu einer SIRET zu erweitern. Im fiskaltrust.Portal müssen Sie die von den französischen Behörden vergebenen Nummern verwenden. Im Sandbox-Modus können Sie die SIREN mit 5 beliebigen Ziffern erweitern.

Für die spätere Verwendung im fiskaltrust.Portal muss die SIRET mit dem Knopf Datenprüfung an der rechten Seite des Feldes überprüft werden. Sowohl SIREN als auch SIRET benötigen zur weiteren Verwendung das grüne Häkchen auf der rechten Seite.

Was ist ein Null-Beleg?

Ein Null-Beleg ist für den fiskaltrust.Service ein universeller Datenträger und Speichermedium. Die Registrierkasse sendet einen Beleg mit einem leeren Produktblock (ftChargeItem) und einem leeren Zahlungsblock (ftPayItem), die logischerweise einen Gesamtbetrag von „0,00“ enthalten.

Der fiskaltrust.SecurityMechanism sendet die erforderlichen Blöcke, z. B. den Belegkopf, den Produktblock und den Signaturblock in der Antwort. Diese Antwort wird entweder gedruckt oder elektronisch ausgegeben und muss archiviert werden.

Beispielsweise ist ein Start- oder Stoppbeleg ein Sonderfall eines Null-Belegs.

Was ist ein Start-Beleg?

Der Start-Beleg muss als erster Beleg an den fiskaltrust.SecurityMechanism gesendet werden. Dadurch wird die entsprechende Queue initialisiert und alle weiteren Belege entsprechend den Gesetzen gesichert. Dieser Beleg erhält nur beim ersten Mal eine aussagekräftige Antwort vom fiskaltrust.SecurityMechanism, alle weiteren Start-Belege werden ignoriert und nicht beantwortet.

Was ist ein Stopp-Beleg

Der Stopp-Beleg ist für die geplante Außerbetriebnahme von Sicherheitsmechanismen und/oder Registrierkassen erforderlich. Mit diesem Beleg wird die Verkettung der Belege, das Summieren der Umsatzzähler und die fortlaufende Belegnummerierung angehalten. Er schließt auch das Datenerfassungsprotokoll ab.

Dieser Beleg erhält nur beim ersten Mal eine aussagekräftige Antwort vom fiskaltrust.SecurityMechanism. Nach Erhalt eines Stopp-Belegs wird die Queue endgültig und unwiderruflich geschlossen. Falls eine Quittung an eine geschlossene Warteschlange gesendet wird, sendet der fiskaltrust.SecurityMechanism keine positive Antwort.

Eine geschlossene Warteschlange kann mit einem Start-Beleg nicht mehr erneut eröffnet werden. Stattdessen muss eine neue Warteschlange erzeugt und mit einem eigenen Start-Beleg initialisiert werden.

Wie erstelle ich eine CashBox (lokal)

Für die Erstellung einer CashBox müssen einige Voraussetzungen erfüllt sein.

Zunächst muss eine gültige SIREN in die Stammdaten des Unternehmens eingetragen und eingecheckt werden. Der zweite Schritt ist eine gültige Verkaufsstelle (Outlet). Dazu muss die Adresse des Outlets und eine SIRET eingegeben und überprüft werden.

Erster Schritt:
Erstellen Sie im Konfigurationsmenü eine Signaturerstellungseinheit (SCU). Während der Erstellung müssen Sie die richtige Verkaufsstelle auswählen.

Zweiter Schritt:
Gehen Sie zum Konfigurationsmenü und öffnen Sie den Befehl Queue. Durch Klicken auf die Schaltfläche Neu anlegen starten Sie die Erstellung. Akzeptieren Sie das vorausgewählte SQLite-Paket. Die Package Version sollte das neueste 1.2-Paket sein (ohne das Postfix „-dev„). Die Standort ID muss mit der im vorherigen Schritt ausgewählten identisch sein. Fügen Sie eine eindeutige CashBox Identifikation hinzu.

Speichern Sie diese Konfiguration und fügen Sie im folgenden Fenster eine http-URL hinzu, ohne einen der anderen Werte zu ändern. Speichern Sie die Konfiguration.

Dritter Schritt:
Suchen Sie die kürzlich erstellte Warteschlange in der Liste. Auf der rechten Seite befinden sich vier Konfigurationsschaltflächen. Klicken Sie auf das erste (das Rechteck mit dem Pfeil). Wählen Sie die SCU aus, die Sie im ersten Schritt erstellt haben, und klicken Sie auf Speichern und schließen.

Seien Sie vorsichtig bei diesem Schritt, die SCU kann für diese Warteschlange nachträglich nicht mehr geändert werden.

Vierter Schritt:
Im CashBox-Befehl des Konfigurationsmenüs müssen Sie auf die Schaltfläche + Hinzufügen klicken. Geben Sie eine Beschreibung ein und wählen Sie erneut dieselbe Verkaufsstelle wie in den vorherigen Schritten. Nachdem Sie auf Speichern geklickt haben, finden Sie eine neue CashBox in der Liste. Klicken Sie auf die Schaltfläche mit dem Hand-Symbol. Ziehen Sie nun die kürzlich erstellte Warteschlange von links nach rechts. Überprüfen Sie, ob die richtige Verkaufsstelle ausgewählt ist, und klicken Sie auf Speichern.

Letzter Schritt:
Klicken Sie in der Zeile der CashBox auf die Schaltfläche Rebuild Configuration (Kreispfeile).
Jetzt können Sie einen der drei Launcher herunterladen und den fiskaltrust.Service auf Ihrem lokalen Computer installieren.

Wie erstelle ich eine CashBox (cloud)?

Der Service für die Cloud-Lösung ist nicht kostenlos, aber Sie können dies kostenlos in der Sandbox ausprobieren.

Für die Erstellung einer CashBox müssen einige Voraussetzungen erfüllt sein.

Zunächst muss eine gültige SIREN in den Stammdaten des Unternehmens eingetragen und geprüft werden. Der zweite Schritt ist eine gültige Verkaufsstelle (Outlet). Dazu muss die Adresse und eine SIRET beim Outlet eingegeben und überprüft werden.

Erster Schritt:
Öffnen Sie den Shop-Bereich in der linken Seitenleiste im fiskaltrust.Portal. Klicken Sie hier auf Produkte. Wählen Sie die Verkaufsstelle im Feld Standort-ID aus, für die Sie ChaîneCloud verwenden. Dies ist wichtig, denn die Verkaufsstelle kann danach nicht mehr verändert werden!

Fügen Sie eine ChaîneCloud (Produkt-Nr. 4652-201) dem Warenkorb hinzu. Jetzt finden Sie oben im Fenster ein Symbol für einen Einkaufswagen, indem Sie die Bestellung mit einem Klick auf Checkout durchführen können.

Zweiter Schritt:
Wählen Sie die gewünschte Zahlungsoption. (Wählen Sie im Sandbox-Modus SEPA Lastschrift.) Klicken Sie anschließend auf die grüne Schaltfläche Verbindlich bestellen. Nach erfolgreicher Bestellung erhalten Sie eine E-Mail mit der Bestellung und der Rechnung.
Den Status der Bestellung können Sie jederzeit mit dem Menüpunkt Bestellungen und/oder Rechnung überprüfen.

Dritter Schritt:
Die CashBox wird innerhalb weniger Minuten nach der Bestellung automatisch erstellt. Sie finden es im in der Liste des Menüpunkts CashBox im Konfigurationsmenü. Der Name beginnt mit fiskaltrust.ChaîneCloud und hat am Ende eine fortlaufende Nummer.

Letzter Schritt:
Klicken Sie in der Zeile der kürzlich erstellten CashBox auf die graue Schaltfläche zum erneuten Erstellen der Konfiguration (Rebuild Configuration, Kreispfeile).

Tipp:
Zur leichteren Identifizierung können Sie die Beschreibung der CashBox und/oder Warteschlange im Konfigurationsmenü ändern.

Wie behandle ich den Request/Response des fiskaltrust.Services?

Wenn ein Beleg an fiskaltrust.Service gesendet wird, werden alle Daten vom fiskaltrust.SecurityMechanism gesichert. Daher wird die Anfrage verarbeitet und einige Sicherheitsdaten oder Daten, die nach nationalem Recht erforderlich sind, als Antwort zurückgesendet.

Zunächst muss der Beleg vom POS-System erstellt werden. Dazu müssen einige Informationen aus dem POS-System selbst und einige Header-Informationen der Quittung und Verkaufsdaten in einem JSON-Format gesammelt und übertragen werden. Nehmen wir an, es wird ein Kaffee und ein Käsekuchen an einen Kunden in einem Restaurant verkauft und mit Bargeld bezahlt.

1) Der Header einer Quittung:
Dies ist eine allgemeine Information der Quittung. Die hier gezeigten Felder sind der minimal erforderliche Datensatz. Alle möglichen Felder sind in der Middleware Dokumentation beschrieben.

{
  "ftCashboxId": "487b7a77-fbc3-414f-8b3a-57930fb58f97",
  "ftPosSystemId": "058c4299-1657-5ad2-8ce3-fbbeb317a7b3",
  "cbTerminalId": "term01",
  "cbReceiptReference": "ticket 2020-4456",
  "cbReceiptMoment": "2020-04-05 10:49:20",
  "ftReceiptCase": "5067112530745229313",

2) Die Liste der verkauften Produkte:
Dies ist eine Reihe von Produktzeilen auf einem Beleg, im fiskaltrust.Universum werden dies als ChargeItems bezeichnet. Der gezeigte Datensatz ist das absolut notwendige Minimum, um den französischen Gesetzen zu entsprechen. Alle Felder und möglichen Werte sind in der Middleware Dokumentation ausführlich beschrieben.

"cbChargeItems": [
    {
      "Quantity": 1.0,
      "Description": "Café, espresso double",
      "Amount": 5.2,
      "VATRate": 20.0,
      "VATAmount": 0.87,
      "ftChargeItemCase": "5067112530745229315",
      "Moment": "2020-04-05 10:49:50",
"ftChargeItemCaseData": "{\"NetAmount\": 4.33}"
    },
    {
      "Quantity": 1.0,
      "Description": "Cheescake",
      "Amount": 7.9,
      "VATRate": 20.0,
      "VATAmount": 1.32,
      "ftChargeItemCase": "5067112530745229315",
      "Moment": "2020-04-05 10:49:50",
      "ftChargeItemCaseData": "{\"NetAmount\": 6.58}"
    }
  ],

3) Wie der Beleg bezahlt wird:
Im fiskaltrust.Universum heißt dieses Array PayItems. Dies ist eine Liste aller vom Kunden verwendeten Zahlungsmittel. Auch hier wird nur der obligatorische Datensatz angezeigt, weitere Informationen finden Sie in der Middleware Dokumentation.

  "cbPayItems": [
    {
      "Quantity": 1.0,
      "Description": "Cash",
      "Amount": 13.1,
      "ftPayItemCase": "5067112530745229313",
      "Moment": "2020-04-05 10:50:20"
    }
  ]
}

Je nach verwendetem Protokoll wird die gesamte Quittung als JSON-String mit SOAP oder REST im Payload gesendet. Der Protokolltyp definiert, welche Anmeldeinformationen Sie im Header der Anforderung senden müssen. Normalerweise ist es die CashBoxID und ein AccessToken. Beide finden Sie im Konfigurationsmenü im fiskaltrust.Portal.

Der fiskaltrust.Service beantwortet diese Anfrage mit einer Antwort als JSON-String wie folgt:

{
  "ftCashBoxID": "487b7a77-fbc3-414f-8b3a-57930fb58f97",
  "ftQueueID": "0f68a617-c0cd-4249-9c48-c48da217ff77",
  "ftQueueItemID": "d4bfd2b0-973f-4e1a-90de-c63884cde8db",
  "ftQueueRow": 298886,
  "cbTerminalID": "term01",
  "cbReceiptReference": "posAction444",
  "ftCashBoxIdentification": "RueHelder_1(2)",
  "ftReceiptIdentification": "ft48F82#T293614",
  "ftReceiptMoment": "2020-04-05T11:03:58.4319402Z",
  "ftSignatures": [
    {
      "ftSignatureFormat": 3,
      "ftSignatureType": 5067112530745229313,
      "Caption": "www.fiskaltrust.fr",
      "Data": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9...MEQCIC7YDBVwEoBqGtlMfUznu4ExAYZ3t6qph5_nIJXuOelHAiBge_EPSeCirPma881ElrNvGf2sGYfCPo5nkYZujs1P4w"
    },
    {
      "ftSignatureFormat": 1,
      "ftSignatureType": 5067112530745229312,
      "Caption": "S A N D B O X",
      "Data": "0f68a617-c0cd-4249-9c48-c48da217ff77"
    }
  ],
  "ftState": 5067112530745229312
}

Die meisten dieser Informationen (fett gedruckt) müssen auf dem Beleg gedruckt werden. Es wird jedoch empfohlen, alle Informationen auszugeben. Jede vom fiskaltrust.Service zurückgesendete Signatur muss gedruckt werden. Daher müssen die Felder Caption und Data auf der Quittung angegeben werden. Es kann mehr als eine Signatur übermittelt werden, in diesem Fall muss jede gedruckt werden. Die Signatur mit Typ 3 enthält einen JWT als bereits codierten QR-Code im Datenfeld Data, der vor der Fußzeile des Belegs gedruckt werden muss.

Wie kann ein Beleg storniert werden?

An fiskaltrust.Service gesendete Daten können anschließend nicht mehr gelöscht werden. Hierzu müssen alle Änderungen durch Senden eines neuen Belegs vorgenommen werden. In diesem Beispiel wird ein Kassenbon (Ticket) zum Stornieren verwendet, dieses Beispiel kann jedoch für jede Art von Beleg adaptiert werden. Wenn Sie beispielsweise einem Kunden einen einfachen Kaffee in Rechnung stellen, müssen Sie einen Kassenbon an den fiskaltrust.Service senden:

{
  "ftCashboxId": "cashbox-identification",
  "ftPosSystemId": "pos-system-identification",
  "cbTerminalId": "terminal-identification",
  "cbReceiptReference": "pos-action-identification",
  "cbReceiptMoment": "receipt-moment",
  "ftReceiptCase": "0x4652000000000001",
  "cbChargeItems": [
    {
      "Quantity": 1.0,
      "Description": "Café",
      "Amount": 2.2,
      "VATRate": 10.0,
      "VATAmount": 0.2,
      "ftChargeItemCase": "0x4652000000000002",
      "Moment": "moment-chargeitem",
      "ftChargeItemCaseData": "{\"NetAmount\": 2}"
    }
  ],
  "cbPayItems": [
    {
      "Quantity": 1.0,
      "Description": "Cash",
      "Amount": 2.2,
      "ftPayItemCase": "0x4652000000000001",
      "Moment": "moment-payitem"
    }
  ]
}

Dies ist eine normale Anfrage mit einem ChargeItem für den Kaffee und einem PayItem für die Barzahlung. Bitte beachten Sie, dass alle sicherheitsrelevanten Daten mit allgemeinen Wörtern ersetzt wurden (z. B. ftCashBoxId, ftPosSystemId, …).
Jetzt verlässt der Kunde das Restaurant ohne Bezahlung. Sie müssen diesen Kassenbon stornieren, da Sie keine Zahlung erhalten haben. Dazu senden Sie das gleiche Ticket mit negativen Werten an den fiskaltrust.Service.

{
  "ftCashboxId": "cashbox-identification",
  "ftPosSystemId": "pos-system-identification",
  "cbTerminalId": "terminal-identification",
  "cbReceiptReference": "pos-action-identification",
  "cbReceiptMoment": "receipt-moment",
  "ftReceiptCase": "0x4652000000040001",
  "cbPreviousReceiptReference": "number of voided ticket",
  "cbChargeItems": [
    {
      "Quantity": -1.0,
      "Description": "Café",
      "Amount": -2.2,
      "VATRate": 10.0,
      "VATAmount": -0.2,
      "ftChargeItemCase": "0x4652000000000002",
      "Moment": "moment-chargeitem",
      "ftChargeItemCaseData": "{\"NetAmount\": -2}"
    }
  ],
  "cbPayItems": [
    {
      "Quantity": -1.0,
      "Description": "Cash",
      "Amount": -2.2,
      "ftPayItemCase": "0x4652000000000001",
      "Moment": "moment-payitem"
    }
  ]
}

Zwei Dinge müssen auf der Quittung geändert werden. Der Inhalt des Felds ftReceiptCase bleibt der gleiche wie beim Originalbeleg, erhält jedoch das Flag für einen stornierten Beleg. (Der Wert 4 auf Position 12).
Und das Feld cbPreviousReceiptReference sollte hinzugefügt werden. Der Wert ist die Nummer der Original-Quittung.

Wie reagiere ich auf den Offline-Modus?

Wenn der Beleg nicht vom fiskaltrust.SecurityMechanism signiert werden kann, muss das POS-System mode dégradé auf den Beleg drucken.

Wenn der fiskaltrust.Service die Belege wieder signieren kann, müssen alle diese nicht-signierten Belege (manuell oder automatisch) eingegeben, an den fiskaltrust.SecurityMechanism gesendet und erneut als reguläre Belege gedruckt werden. Dann müssen die nicht-signierten und die signierten Belege zusammen archiviert werden.

Es empfiehlt sich, im technischen Protokoll eine Nachricht mit folgendem Inhalt zu senden:

{
  "code": 70,
  "description": "Start of degraded mode",
  "moment": "2020-03-22T06:10:52.6395741Z"
}

Damit wird der Beginn des Offline-Modus dokumentiert. Wenn die normale Funktion wieder hergestellt ist, sollte die folgende Nachricht an das technische Protokoll gesendet werden, um dies ebenfalls zu dokumentieren.
{
  "code": 120,
  "description": "End of degraded mode",
  "moment": "2020-03-22T09:23:22.6015741Z"
}