BMF-RKSV-Technik / at-registrierkassen-mustercode

111 stars 39 forks source link

Fehler bei der FinanzOnline Registrierung #565

Open SencerC opened 7 years ago

SencerC commented 7 years ago

Sehr geehrte Damen und Herren,

wir sind Entwickler von Kassensoftware, und haben uns natürlich auch mit der RKSV sehr intensiv beschäftigt. Nun machen wir alle Updates bei unseren Kunden. Nach 250 erfolgreich aktualisierten Kassensystemen gibts nun bei einem unserer Kunden einen gravierenden Fehler: Die FON Registrierung schlägt fehl, und das hat offensichtlich keinen Grund. Ausgangssituation: Bei der Übermittlung des Startbeleges wird dieser als Fehlerhaft gekennzeichnet. Begründung:

"Die Prüfung des Beleges ergab einen Fehler, da der übermittelte Beleg keinem der nachfolgenden Belegtypen zugeordnet werden kann"

Naheliegenste Vermutung: Der AES Schlüssel wurde falsch übermittelt, somit wird der Umsatzzähler nicht richtig entschlüsselt und es erscheint ein Betrag über 0.

Prüfung des AES Schlüssel ergab aber keine Fehler, da der AES Schlüssel auch einfach durch Copy&Paste ins FON übertrage wurde. Nächster Step: Manuelle Nachprüfung des Startbeleges mit dem Prüftool. Ergebnis: PASS -> Beleg wird richtig als Startbeleg erkannt.

Weitere (mehr oder weniger nutzlose) Prüfungen:

@pteufl Können Sie sich einen Reim darauf machen? Und wie sollen wir jetzt weiterfahren? Unglücklicherweise hat unsere werte Kundin nach dem Update und vor der FON Registrierung schon Belege erstellt.

daten der registrierkasse

Registrierte Daten der Registrierkasse im FON

fehlermeldung fon

Fehlermeldung im FON

{ "verificationId" : "VERIFICATION_FROM_CASHBOX", "version" : 1, "verificationName" : "Prüfergebnis - Kasse", "verificationTextualDescription" : "Bei der Belegprüfung wird untersucht, ob die Vorgaben der RKSV in Bezug auf den maschinenlesbaren Code am Beleg und auf die meldepflichtigen Metadaten der Sicherheitseinrichtung befolgt werden. Im Fehlerfall sind die genauen Fehlerinformationen nachfolgend angeführt.", "verificationState" : "PASS", "verificationResultDetailedMessage" : "Die Registrierung Ihrer Registrierkasse und der Signatur-/Siegelerstellungseinheit war erfolgreich. Der vorliegende Startbeleg wurde gesetzeskonform erstellt. Bundesministerium für Finanzen.", "verificationTimestamp" : "2017-04-13T00:49:22.345+02:00", "verificationResultList" : [ { "verificationId" : "CONSTRAINTS_PRE_DB", "version" : 1, "verificationName" : "Minimalanforderungen an den maschinenlesbaren Code vor Detailprüfungen", "verificationTextualDescription" : "In diesem Modul und den dazugehörigen Submodulen werden verschiedene Minimalanforderungen an den maschinenlesbaren Code überprüft bevor weitere Detailprüfungen durchgeführt werden.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.906+02:00", "verificationResultList" : [ { "verificationId" : "BASICCONSTRAINTS", "version" : 1, "verificationName" : "Minimale Formatanforderungen an den maschinenlesbaren Code", "verificationTextualDescription" : "In diesem Modul und den dazugehörigen Submodulen werden die minimalen Formatanforderungen an den maschinenlesbaren Code überprüft.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.906+02:00", "verificationResultList" : [ { "verificationId" : "BASICCONSTRAINTS_RECEIPT_LENGTH", "version" : 1, "verificationName" : "Formatprüfung: Länge des maschinenlesbaren Codes", "verificationTextualDescription" : "Es wird überprüft ob der maschinenlesbare Code eine Länge von minimal 100 bis maximal 1000 Zeichen hat.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.906+02:00" }, { "verificationId" : "BASICCONSTRAINTS_NUMBER_OF_ELEMENTS", "version" : 1, "verificationName" : "Formatprüfung: 13 Elemente im maschinenlesbaren Code vorhanden", "verificationTextualDescription" : "Es wird überprüft ob 13 Elemente (Trennung durch _) im maschinenlesbaren Code vorhanden sind.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.906+02:00" } ] }, { "verificationId" : "RKSUITE", "version" : 1, "verificationName" : "Überprüfung des Registrierkassenalgorithmuskennzeichen", "verificationTextualDescription" : "Es wird überprüft ob das erste Element des maschinenlesbaren Codes - das Registrierkassenalgorithmuskennzeichen - korrekt formatiert ist.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.906+02:00", "verificationResultList" : [ { "verificationId" : "FORMAT_RK_STRING", "version" : 1, "verificationName" : "Formatprüfung: Registrierkassenalgorithmuskennzeichen", "verificationTextualDescription" : "Es wird überprüft ob das erste Element des maschinenlesbaren Codes - das Registrierkassenalgorithmuskennzeichen - korrekt formatiert ist.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.906+02:00" } ] }, { "verificationId" : "FORMAT_SERIAL_NUMBER", "version" : 1, "verificationName" : "Formatprüfung: Seriennummer/Ordnungsbegriff im maschinenlesbaren Code", "verificationTextualDescription" : "Es wird das Format der im maschinenlesbaren Code angegeben Seriennummer des Zertifikats oder des angegebenen Ordnungsbegriffs des Unternehmens/Key-ID (geschlossenes System) überprüft.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.906+02:00", "verificationResultList" : [ { "verificationId" : "FORMAT_HEX_CHARS", "version" : 1, "verificationName" : "Formatprüfung: Für die Seriennummer des Zertifikats wurde die korrekte Hexadezimaldarstellung verwendet.", "verificationTextualDescription" : "Es wird überprüft ob die Seriennummer des Zertifikats mit der korrekten Hexadezimaldarstellung kodiert ist. Diese Prüfung wird nur durchgeführt, wenn es sich um kein geschlossenes Gesamtsystem handelt.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.906+02:00" } ] }, { "verificationId" : "FORMAT_CHECK_TIMEANDDATE", "version" : 1, "verificationName" : "Formatprüfung: Format des Belegerstellungszeitpunktes", "verificationTextualDescription" : "Es wird überprüft ob der Belegerstellungszeitpunkt im korrekten Format im maschinenlesbaren Code abgebildet ist.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.906+02:00" }, { "verificationId" : "TIMEOFRECEIPT_WITHIN_PERIOD", "version" : 1, "verificationName" : "Belegerstellungzeitpunkt innerhalb des gültigen Prüfzeitraums", "verificationTextualDescription" : "Es wird überprüft ob der Belegerstellungszeitpunkt innerhalb des gültigen Prüfzeitraums liegt. Der Belegerstellungszeitpunkt muss größer oder gleich dem 01.09.2015 sein und darf nicht in der Zukunft liegen.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.906+02:00" } ] }, { "verificationId" : "MATCH_COMPANY", "version" : 1, "verificationName" : "Überprüfung ob angemeldetes Unternehmen mit Unternehmen des Belegs übereinstimmt", "verificationTextualDescription" : "Es wird überprüft ob das angemeldete Unternehmen mit dem Unternehmen, das den Beleg ausgestellt hat, übereinstimmt. Das Ergebnis sagt aus ob das angemeldete Unternehmen berechtigt ist den vorliegenden Beleg zu prüfen.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.906+02:00" }, { "verificationId" : "RECEIPT_FULL", "version" : 1, "verificationName" : "Detailprüfung des maschinenlesbaren Codes", "verificationTextualDescription" : "Dieses Modul und die dazugehörigen Submodule überprüfen die Gültigkeit des Belegs. Dabei werden sowohl Formatprüfungen, kryptographische Prüfungen (verschlüsselter Umsatzzähler, Signatur) als auch Prüfungen im Zusammenhang mit dem Status der Kasse bzw. der Signatur-/Siegelerstellungseinheit durchgeführt.", "verificationState" : "FAIL", "verificationTimestamp" : "2017-04-13T00:49:21.921+02:00", "verificationResultList" : [ { "verificationId" : "FORMAT", "version" : 1, "verificationName" : "Detailformatprüfung des maschinenlesbaren Codes", "verificationTextualDescription" : "Dieses Modul und die dazugehörigen Submodule überprüfen die Korrektheit des Formats der Elemente des maschinenlesbaren Codes.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.921+02:00", "verificationResultList" : [ { "verificationId" : "RKSUITE", "version" : 1, "verificationName" : "Überprüfung des Registrierkassenalgorithmuskennzeichen", "verificationTextualDescription" : "Es wird überprüft ob das erste Element des maschinenlesbaren Codes - das Registrierkassenalgorithmuskennzeichen - korrekt formatiert ist.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.921+02:00", "verificationResultList" : [ { "verificationId" : "FORMAT_RK_STRING", "version" : 1, "verificationName" : "Formatprüfung: Registrierkassenalgorithmuskennzeichen", "verificationTextualDescription" : "Es wird überprüft ob das erste Element des maschinenlesbaren Codes - das Registrierkassenalgorithmuskennzeichen - korrekt formatiert ist.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.921+02:00" } ] }, { "verificationId" : "FORMAT_CHECK_TIMEANDDATE", "version" : 1, "verificationName" : "Formatprüfung: Format des Belegerstellungszeitpunktes", "verificationTextualDescription" : "Es wird überprüft ob der Belegerstellungszeitpunkt im korrekten Format im maschinenlesbaren Code abgebildet ist.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.921+02:00" }, { "verificationId" : "FORMAT_TAX_SET", "version" : 1, "verificationName" : "Formatprüfung: Steuersatz", "verificationTextualDescription" : "Es wird überprüft ob der jeweilige Steuersatz im maschinenlesbaren Code im korrekten Format gespeichert wurde.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.921+02:00" }, { "verificationId" : "FORMAT_TAX_SET", "version" : 1, "verificationName" : "Formatprüfung: Steuersatz", "verificationTextualDescription" : "Es wird überprüft ob der jeweilige Steuersatz im maschinenlesbaren Code im korrekten Format gespeichert wurde.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.921+02:00" }, { "verificationId" : "FORMAT_TAX_SET", "version" : 1, "verificationName" : "Formatprüfung: Steuersatz", "verificationTextualDescription" : "Es wird überprüft ob der jeweilige Steuersatz im maschinenlesbaren Code im korrekten Format gespeichert wurde.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.921+02:00" }, { "verificationId" : "FORMAT_TAX_SET", "version" : 1, "verificationName" : "Formatprüfung: Steuersatz", "verificationTextualDescription" : "Es wird überprüft ob der jeweilige Steuersatz im maschinenlesbaren Code im korrekten Format gespeichert wurde.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.921+02:00" }, { "verificationId" : "FORMAT_TAX_SET", "version" : 1, "verificationName" : "Formatprüfung: Steuersatz", "verificationTextualDescription" : "Es wird überprüft ob der jeweilige Steuersatz im maschinenlesbaren Code im korrekten Format gespeichert wurde.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.921+02:00" }, { "verificationId" : "FORMAT_ENCRYPTED_TURN_OVER_VALUE_BASE64", "version" : 1, "verificationName" : "Formatprüfung: verschlüsselter Umsatzzähler (BASE64-Kodierung)", "verificationTextualDescription" : "In diesem Modul und den dazugehörigen Submodulen werden unterschiedliche Prüfungen im Zusammenhang mit der BASE64-Kodierung (gültige Zeichen, Länge) des Umsatzzählers durchgeführt.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.921+02:00", "verificationResultList" : [ { "verificationId" : "FORMAT_BASE64_DECODE_ENCODE", "version" : 1, "verificationName" : "Formatprüfung: BASE64 Dekodierung/Kodierung", "verificationTextualDescription" : "In diesem Modul wird überprüft ob die Dekodierung eines BASE64-Werts und die anschließende Kodierung wieder den Ausgangswert ergibt.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.921+02:00", "verificationResultList" : [ { "verificationId" : "FORMAT_BASE64_CHARS", "version" : 1, "verificationName" : "Formatprüfung: Gültige BASE64-Zeichen", "verificationTextualDescription" : "Es wird in diesem Modul überprüft ob die gegebene Zeichenkette nur Zeichen beinhaltet die für die BASE64-Kodierung verwendet werden dürfen.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.921+02:00" } ] } ] }, { "verificationId" : "FORMAT_SERIAL_NUMBER", "version" : 1, "verificationName" : "Formatprüfung: Seriennummer/Ordnungsbegriff im maschinenlesbaren Code", "verificationTextualDescription" : "Es wird das Format der im maschinenlesbaren Code angegeben Seriennummer des Zertifikats oder des angegebenen Ordnungsbegriffs des Unternehmens/Key-ID (geschlossenes System) überprüft.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.921+02:00", "verificationResultList" : [ { "verificationId" : "FORMAT_HEX_CHARS", "version" : 1, "verificationName" : "Formatprüfung: Für die Seriennummer des Zertifikats wurde die korrekte Hexadezimaldarstellung verwendet.", "verificationTextualDescription" : "Es wird überprüft ob die Seriennummer des Zertifikats mit der korrekten Hexadezimaldarstellung kodiert ist. Diese Prüfung wird nur durchgeführt, wenn es sich um kein geschlossenes Gesamtsystem handelt.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.921+02:00" } ] }, { "verificationId" : "FORMAT_CHAIN_VALUE_PREVIOUS_RECEIPT_BASE64", "version" : 1, "verificationName" : "Formatprüfung: Verkettungswert", "verificationTextualDescription" : "In diesem Modul und den dazugehörigen Submodulen werden unterschiedliche Prüfungen im Zusammenhang mit der BASE64-Kodierung (gültige Zeichen, Länge) des Verkettungswerts durchgeführt.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.921+02:00", "verificationResultList" : [ { "verificationId" : "FORMAT_BASE64_DECODE_ENCODE", "version" : 1, "verificationName" : "Formatprüfung: BASE64 Dekodierung/Kodierung", "verificationTextualDescription" : "In diesem Modul wird überprüft ob die Dekodierung eines BASE64-Werts und die anschließende Kodierung wieder den Ausgangswert ergibt.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.921+02:00", "verificationResultList" : [ { "verificationId" : "FORMAT_BASE64_CHARS", "version" : 1, "verificationName" : "Formatprüfung: Gültige BASE64-Zeichen", "verificationTextualDescription" : "Es wird in diesem Modul überprüft ob die gegebene Zeichenkette nur Zeichen beinhaltet die für die BASE64-Kodierung verwendet werden dürfen.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.921+02:00" } ] } ] }, { "verificationId" : "FORMAT_SIGNATURE_BASE64", "version" : 1, "verificationName" : "Formatprüfung: Signaturwert", "verificationTextualDescription" : "In diesem Modul und den dazugehörigen Submodulen werden unterschiedliche Prüfungen im Zusammenhang mit der BASE64-Kodierung (gültige Zeichen, Länge) des Signaturwerts durchgeführt.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.921+02:00", "verificationResultList" : [ { "verificationId" : "FORMAT_BASE64_DECODE_ENCODE", "version" : 1, "verificationName" : "Formatprüfung: BASE64 Dekodierung/Kodierung", "verificationTextualDescription" : "In diesem Modul wird überprüft ob die Dekodierung eines BASE64-Werts und die anschließende Kodierung wieder den Ausgangswert ergibt.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.921+02:00", "verificationResultList" : [ { "verificationId" : "FORMAT_BASE64_CHARS", "version" : 1, "verificationName" : "Formatprüfung: Gültige BASE64-Zeichen", "verificationTextualDescription" : "Es wird in diesem Modul überprüft ob die gegebene Zeichenkette nur Zeichen beinhaltet die für die BASE64-Kodierung verwendet werden dürfen.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.921+02:00" } ] } ] } ] }, { "verificationId" : "CRYPTO", "version" : 1, "verificationName" : "Kryptographische Prüfungen", "verificationTextualDescription" : "In diesem Modul und den dazugehörigen Submodulen werden die kryptographische Validität des Umsatzzählers und des Signaturwerts überprüft. Für den Umsatzzähler kann eine detaillierte Prüfung nur beim Startbeleg durchgeführt werden, da nur in diesem Fall der entschlüsselte Wert bekannt ist (Umsatzzähler = 0).", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.921+02:00", "verificationResultList" : [ { "verificationId" : "CRYPTO_SIGNATURE", "version" : 1, "verificationName" : "Kryptographie: Überprüfung der kryptographischen Gültigkeit der Signatur", "verificationTextualDescription" : "In diesem Modul wird die kryptographische Gültigkeit der Signatur mit Hilfe des öffentlichen Schlüssels überprüft.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:21.921+02:00" }, { "verificationId" : "CRYPTO_TURNOVER_COUNTER", "version" : 1, "verificationName" : "Kryptographie: Entschlüsselung des Umsatzzählers", "verificationTextualDescription" : "Es wird die Entschlüsselung des Umsatzzählers überprüft. Eine Aussage über die Korrektheit kann nur beim Startbeleg durchgeführt werden, da nur in diesem Fall der entschlüsselte Wert bekannt ist (Umsatzzähler = 0).", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.031+02:00" } ] }, { "verificationId" : "TYPE_OF_RECEIPT", "version" : 1, "verificationName" : "Feststellen des Belegtyps", "verificationTextualDescription" : "Dieses Modul und die dazugehörigen Submodule überprüfen unterschiedliche Eigenschaften des maschinenlesbaren Codes und leiten anhand dieser Eigenschaften den Belegtyp ab: Start-, Normal-, Training-, Storno- oder Nullbeleg.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.329+02:00", "verificationResultList" : [ { "verificationId" : "TYPE_OF_RECEIPT_START", "version" : 1, "verificationName" : "Belegtyp: Startbeleg", "verificationTextualDescription" : "Es werden folgende Eigenschaften überprüft: Entschlüsselter Umsatzzähler gleich 0, Verkettungswert zeigt auf die Kassen-ID, alle Werte der Steuersätze sind 0, Signatureinrichtung darf nicht ausgefallen sein.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.345+02:00" }, { "verificationId" : "TYPE_OF_RECEIPT_STANDARD", "version" : 1, "verificationName" : "Belegtyp: Standardbeleg", "verificationTextualDescription" : "Es werden folgende Eigenschaften überprüft: Mindestens ein Steuersatz-Wert muss ungleich 0 sein, es muss ein Umsatzzähler im maschinenlesbaren Code vorhanden sein (es dürfen nicht die BASE64-kodierten Zeichenketten von \"TRA\" oder \"STO\" statt dem Umsatzzähler vorhanden ein), der Verkettungswert darf nicht auf die Kassen-ID zeigen.", "verificationState" : "FAIL", "verificationResultDetailedMessage" : "Der Verkettungswert ist von der Kassen-ID abgeleitet.", "verificationTimestamp" : "2017-04-13T00:49:22.345+02:00" }, { "verificationId" : "TYPE_OF_RECEIPT_TRA", "version" : 1, "verificationName" : "Belegtyp: Trainingsbeleg", "verificationTextualDescription" : "Es werden folgende Eigenschaften überprüft: BASE64-kodierter Wert \"TRA\" steht im Umsatzzähler, der Verkettungswert darf nicht auf die Kassen-ID zeigen.", "verificationState" : "FAIL", "verificationResultDetailedMessage" : "Der Verkettungswert ist von der Kassen-ID abgeleitet.", "verificationTimestamp" : "2017-04-13T00:49:22.345+02:00" }, { "verificationId" : "TYPE_OF_RECEIPT_STO", "version" : 1, "verificationName" : "Belegtyp: Stornobeleg", "verificationTextualDescription" : "Es werden folgende Eigenschaften überprüft: BASE64-kodierter Wert \"STO\" steht im Umsatzzähler, der Verkettungswert darf nicht auf die Kassen-ID zeigen.", "verificationState" : "FAIL", "verificationResultDetailedMessage" : "Der Verkettungswert ist von der Kassen-ID abgeleitet.", "verificationTimestamp" : "2017-04-13T00:49:22.345+02:00" }, { "verificationId" : "TYPE_OF_RECEIPT_NULL", "version" : 1, "verificationName" : "Belegtyp: Nullbeleg", "verificationTextualDescription" : "Es werden folgende Eigenschaften überprüft: Die Werte für alle Steuersätze müssen 0 sein, es muss ein Umsatzzähler im maschinenlesbaren Code vorhanden sein (es dürfen nicht die BASE64-kodierten Zeichenketten von \"TRA\" oder \"STO\" statt dem Umsatzzähler vorhanden ein), der Verkettungswert darf nicht auf die Kassen-ID zeigen.", "verificationState" : "FAIL", "verificationResultDetailedMessage" : "Der Verkettungswert ist von der Kassen-ID abgeleitet.", "verificationTimestamp" : "2017-04-13T00:49:22.345+02:00" } ] }, { "verificationId" : "STATE_CONSOLIDATED", "version" : 1, "verificationName" : "Statusprüfung der Kasse und Signatur-/Siegelerstellungseinheit", "verificationTextualDescription" : "In diesem Modul und den dazugehörigen Submodulen werden die Zustände der Kasse und der verwendeten Signatur-/Siegelerstellungseinheit und die Ergebnisse der zuvor durchgeführten Prüfungen (vor allem der Belegtyp) ausgewertet. Handelt es sich um einen Startbeleg, wird überprüft ob eine Inbetriebnahme der Kasse möglich ist.", "verificationState" : "FAIL", "verificationTimestamp" : "2017-04-13T00:49:22.345+02:00", "verificationResultList" : [ { "verificationId" : "STATE_CASHBOX", "version" : 1, "verificationName" : "Statusprüfung der Kasse", "verificationTextualDescription" : "Es wird der Status der Kasse zum Belegerstellungszeitpunkt und zum Prüfzeitpunkt ausgewertet. Die extrahierten Informationen werden im Zusammenhang mit weiteren Beleginformationen betrachtet.", "verificationState" : "FAIL", "verificationTimestamp" : "2017-04-13T00:49:22.345+02:00" }, { "verificationId" : "STATE_SIGDEVICE", "version" : 1, "verificationName" : "Statusprüfung der Signatur-/Siegelerstellungseinheit", "verificationTextualDescription" : "Es wird der Status der Signatur-/Siegelerstellungseinheit zum Belegerstellungszeitpunkt und zum Prüfzeitpunkt ausgewertet. Die extrahierten Informationen werden im Zusammenhang mit weiteren Beleginformationen betrachtet.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.345+02:00" } ] } ] }, { "verificationId" : "CONSTRAINTS_PRE_DB", "version" : 1, "verificationName" : "Minimalanforderungen an den maschinenlesbaren Code vor Detailprüfungen", "verificationTextualDescription" : "In diesem Modul und den dazugehörigen Submodulen werden verschiedene Minimalanforderungen an den maschinenlesbaren Code überprüft bevor weitere Detailprüfungen durchgeführt werden.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.345+02:00", "verificationResultList" : [ { "verificationId" : "BASICCONSTRAINTS", "version" : 1, "verificationName" : "Minimale Formatanforderungen an den maschinenlesbaren Code", "verificationTextualDescription" : "In diesem Modul und den dazugehörigen Submodulen werden die minimalen Formatanforderungen an den maschinenlesbaren Code überprüft.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00", "verificationResultList" : [ { "verificationId" : "BASICCONSTRAINTS_RECEIPT_LENGTH", "version" : 1, "verificationName" : "Formatprüfung: Länge des maschinenlesbaren Codes", "verificationTextualDescription" : "Es wird überprüft ob der maschinenlesbare Code eine Länge von minimal 100 bis maximal 1000 Zeichen hat.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00" }, { "verificationId" : "BASICCONSTRAINTS_NUMBER_OF_ELEMENTS", "version" : 1, "verificationName" : "Formatprüfung: 13 Elemente im maschinenlesbaren Code vorhanden", "verificationTextualDescription" : "Es wird überprüft ob 13 Elemente (Trennung durch _) im maschinenlesbaren Code vorhanden sind.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00" } ] }, { "verificationId" : "RKSUITE", "version" : 1, "verificationName" : "Überprüfung des Registrierkassenalgorithmuskennzeichen", "verificationTextualDescription" : "Es wird überprüft ob das erste Element des maschinenlesbaren Codes - das Registrierkassenalgorithmuskennzeichen - korrekt formatiert ist.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00", "verificationResultList" : [ { "verificationId" : "FORMAT_RK_STRING", "version" : 1, "verificationName" : "Formatprüfung: Registrierkassenalgorithmuskennzeichen", "verificationTextualDescription" : "Es wird überprüft ob das erste Element des maschinenlesbaren Codes - das Registrierkassenalgorithmuskennzeichen - korrekt formatiert ist.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00" } ] }, { "verificationId" : "FORMAT_SERIAL_NUMBER", "version" : 1, "verificationName" : "Formatprüfung: Seriennummer/Ordnungsbegriff im maschinenlesbaren Code", "verificationTextualDescription" : "Es wird das Format der im maschinenlesbaren Code angegeben Seriennummer des Zertifikats oder des angegebenen Ordnungsbegriffs des Unternehmens/Key-ID (geschlossenes System) überprüft.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00", "verificationResultList" : [ { "verificationId" : "FORMAT_HEX_CHARS", "version" : 1, "verificationName" : "Formatprüfung: Für die Seriennummer des Zertifikats wurde die korrekte Hexadezimaldarstellung verwendet.", "verificationTextualDescription" : "Es wird überprüft ob die Seriennummer des Zertifikats mit der korrekten Hexadezimaldarstellung kodiert ist. Diese Prüfung wird nur durchgeführt, wenn es sich um kein geschlossenes Gesamtsystem handelt.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00" } ] }, { "verificationId" : "FORMAT_CHECK_TIMEANDDATE", "version" : 1, "verificationName" : "Formatprüfung: Format des Belegerstellungszeitpunktes", "verificationTextualDescription" : "Es wird überprüft ob der Belegerstellungszeitpunkt im korrekten Format im maschinenlesbaren Code abgebildet ist.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00" }, { "verificationId" : "TIMEOFRECEIPT_WITHIN_PERIOD", "version" : 1, "verificationName" : "Belegerstellungzeitpunkt innerhalb des gültigen Prüfzeitraums", "verificationTextualDescription" : "Es wird überprüft ob der Belegerstellungszeitpunkt innerhalb des gültigen Prüfzeitraums liegt. Der Belegerstellungszeitpunkt muss größer oder gleich dem 01.09.2015 sein und darf nicht in der Zukunft liegen.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00" } ] }, { "verificationId" : "MATCH_COMPANY", "version" : 1, "verificationName" : "Überprüfung ob angemeldetes Unternehmen mit Unternehmen des Belegs übereinstimmt", "verificationTextualDescription" : "Es wird überprüft ob das angemeldete Unternehmen mit dem Unternehmen, das den Beleg ausgestellt hat, übereinstimmt. Das Ergebnis sagt aus ob das angemeldete Unternehmen berechtigt ist den vorliegenden Beleg zu prüfen.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00" }, { "verificationId" : "RECEIPT_FULL", "version" : 1, "verificationName" : "Detailprüfung des maschinenlesbaren Codes", "verificationTextualDescription" : "Dieses Modul und die dazugehörigen Submodule überprüfen die Gültigkeit des Belegs. Dabei werden sowohl Formatprüfungen, kryptographische Prüfungen (verschlüsselter Umsatzzähler, Signatur) als auch Prüfungen im Zusammenhang mit dem Status der Kasse bzw. der Signatur-/Siegelerstellungseinheit durchgeführt.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00", "verificationResultList" : [ { "verificationId" : "FORMAT", "version" : 1, "verificationName" : "Detailformatprüfung des maschinenlesbaren Codes", "verificationTextualDescription" : "Dieses Modul und die dazugehörigen Submodule überprüfen die Korrektheit des Formats der Elemente des maschinenlesbaren Codes.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00", "verificationResultList" : [ { "verificationId" : "RKSUITE", "version" : 1, "verificationName" : "Überprüfung des Registrierkassenalgorithmuskennzeichen", "verificationTextualDescription" : "Es wird überprüft ob das erste Element des maschinenlesbaren Codes - das Registrierkassenalgorithmuskennzeichen - korrekt formatiert ist.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00", "verificationResultList" : [ { "verificationId" : "FORMAT_RK_STRING", "version" : 1, "verificationName" : "Formatprüfung: Registrierkassenalgorithmuskennzeichen", "verificationTextualDescription" : "Es wird überprüft ob das erste Element des maschinenlesbaren Codes - das Registrierkassenalgorithmuskennzeichen - korrekt formatiert ist.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00" } ] }, { "verificationId" : "FORMAT_CHECK_TIMEANDDATE", "version" : 1, "verificationName" : "Formatprüfung: Format des Belegerstellungszeitpunktes", "verificationTextualDescription" : "Es wird überprüft ob der Belegerstellungszeitpunkt im korrekten Format im maschinenlesbaren Code abgebildet ist.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00" }, { "verificationId" : "FORMAT_TAX_SET", "version" : 1, "verificationName" : "Formatprüfung: Steuersatz", "verificationTextualDescription" : "Es wird überprüft ob der jeweilige Steuersatz im maschinenlesbaren Code im korrekten Format gespeichert wurde.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00" }, { "verificationId" : "FORMAT_TAX_SET", "version" : 1, "verificationName" : "Formatprüfung: Steuersatz", "verificationTextualDescription" : "Es wird überprüft ob der jeweilige Steuersatz im maschinenlesbaren Code im korrekten Format gespeichert wurde.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00" }, { "verificationId" : "FORMAT_TAX_SET", "version" : 1, "verificationName" : "Formatprüfung: Steuersatz", "verificationTextualDescription" : "Es wird überprüft ob der jeweilige Steuersatz im maschinenlesbaren Code im korrekten Format gespeichert wurde.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00" }, { "verificationId" : "FORMAT_TAX_SET", "version" : 1, "verificationName" : "Formatprüfung: Steuersatz", "verificationTextualDescription" : "Es wird überprüft ob der jeweilige Steuersatz im maschinenlesbaren Code im korrekten Format gespeichert wurde.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00" }, { "verificationId" : "FORMAT_TAX_SET", "version" : 1, "verificationName" : "Formatprüfung: Steuersatz", "verificationTextualDescription" : "Es wird überprüft ob der jeweilige Steuersatz im maschinenlesbaren Code im korrekten Format gespeichert wurde.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00" }, { "verificationId" : "FORMAT_ENCRYPTED_TURN_OVER_VALUE_BASE64", "version" : 1, "verificationName" : "Formatprüfung: verschlüsselter Umsatzzähler (BASE64-Kodierung)", "verificationTextualDescription" : "In diesem Modul und den dazugehörigen Submodulen werden unterschiedliche Prüfungen im Zusammenhang mit der BASE64-Kodierung (gültige Zeichen, Länge) des Umsatzzählers durchgeführt.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00", "verificationResultList" : [ { "verificationId" : "FORMAT_BASE64_DECODE_ENCODE", "version" : 1, "verificationName" : "Formatprüfung: BASE64 Dekodierung/Kodierung", "verificationTextualDescription" : "In diesem Modul wird überprüft ob die Dekodierung eines BASE64-Werts und die anschließende Kodierung wieder den Ausgangswert ergibt.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00", "verificationResultList" : [ { "verificationId" : "FORMAT_BASE64_CHARS", "version" : 1, "verificationName" : "Formatprüfung: Gültige BASE64-Zeichen", "verificationTextualDescription" : "Es wird in diesem Modul überprüft ob die gegebene Zeichenkette nur Zeichen beinhaltet die für die BASE64-Kodierung verwendet werden dürfen.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00" } ] } ] }, { "verificationId" : "FORMAT_SERIAL_NUMBER", "version" : 1, "verificationName" : "Formatprüfung: Seriennummer/Ordnungsbegriff im maschinenlesbaren Code", "verificationTextualDescription" : "Es wird das Format der im maschinenlesbaren Code angegeben Seriennummer des Zertifikats oder des angegebenen Ordnungsbegriffs des Unternehmens/Key-ID (geschlossenes System) überprüft.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00", "verificationResultList" : [ { "verificationId" : "FORMAT_HEX_CHARS", "version" : 1, "verificationName" : "Formatprüfung: Für die Seriennummer des Zertifikats wurde die korrekte Hexadezimaldarstellung verwendet.", "verificationTextualDescription" : "Es wird überprüft ob die Seriennummer des Zertifikats mit der korrekten Hexadezimaldarstellung kodiert ist. Diese Prüfung wird nur durchgeführt, wenn es sich um kein geschlossenes Gesamtsystem handelt.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00" } ] }, { "verificationId" : "FORMAT_CHAIN_VALUE_PREVIOUS_RECEIPT_BASE64", "version" : 1, "verificationName" : "Formatprüfung: Verkettungswert", "verificationTextualDescription" : "In diesem Modul und den dazugehörigen Submodulen werden unterschiedliche Prüfungen im Zusammenhang mit der BASE64-Kodierung (gültige Zeichen, Länge) des Verkettungswerts durchgeführt.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00", "verificationResultList" : [ { "verificationId" : "FORMAT_BASE64_DECODE_ENCODE", "version" : 1, "verificationName" : "Formatprüfung: BASE64 Dekodierung/Kodierung", "verificationTextualDescription" : "In diesem Modul wird überprüft ob die Dekodierung eines BASE64-Werts und die anschließende Kodierung wieder den Ausgangswert ergibt.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00", "verificationResultList" : [ { "verificationId" : "FORMAT_BASE64_CHARS", "version" : 1, "verificationName" : "Formatprüfung: Gültige BASE64-Zeichen", "verificationTextualDescription" : "Es wird in diesem Modul überprüft ob die gegebene Zeichenkette nur Zeichen beinhaltet die für die BASE64-Kodierung verwendet werden dürfen.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00" } ] } ] }, { "verificationId" : "FORMAT_SIGNATURE_BASE64", "version" : 1, "verificationName" : "Formatprüfung: Signaturwert", "verificationTextualDescription" : "In diesem Modul und den dazugehörigen Submodulen werden unterschiedliche Prüfungen im Zusammenhang mit der BASE64-Kodierung (gültige Zeichen, Länge) des Signaturwerts durchgeführt.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00", "verificationResultList" : [ { "verificationId" : "FORMAT_BASE64_DECODE_ENCODE", "version" : 1, "verificationName" : "Formatprüfung: BASE64 Dekodierung/Kodierung", "verificationTextualDescription" : "In diesem Modul wird überprüft ob die Dekodierung eines BASE64-Werts und die anschließende Kodierung wieder den Ausgangswert ergibt.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00", "verificationResultList" : [ { "verificationId" : "FORMAT_BASE64_CHARS", "version" : 1, "verificationName" : "Formatprüfung: Gültige BASE64-Zeichen", "verificationTextualDescription" : "Es wird in diesem Modul überprüft ob die gegebene Zeichenkette nur Zeichen beinhaltet die für die BASE64-Kodierung verwendet werden dürfen.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00" } ] } ] } ] }, { "verificationId" : "CRYPTO", "version" : 1, "verificationName" : "Kryptographische Prüfungen", "verificationTextualDescription" : "In diesem Modul und den dazugehörigen Submodulen werden die kryptographische Validität des Umsatzzählers und des Signaturwerts überprüft. Für den Umsatzzähler kann eine detaillierte Prüfung nur beim Startbeleg durchgeführt werden, da nur in diesem Fall der entschlüsselte Wert bekannt ist (Umsatzzähler = 0).", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00", "verificationResultList" : [ { "verificationId" : "CRYPTO_SIGNATURE", "version" : 1, "verificationName" : "Kryptographie: Überprüfung der kryptographischen Gültigkeit der Signatur", "verificationTextualDescription" : "In diesem Modul wird die kryptographische Gültigkeit der Signatur mit Hilfe des öffentlichen Schlüssels überprüft.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00" }, { "verificationId" : "CRYPTO_TURNOVER_COUNTER", "version" : 1, "verificationName" : "Kryptographie: Entschlüsselung des Umsatzzählers", "verificationTextualDescription" : "Es wird die Entschlüsselung des Umsatzzählers überprüft. Eine Aussage über die Korrektheit kann nur beim Startbeleg durchgeführt werden, da nur in diesem Fall der entschlüsselte Wert bekannt ist (Umsatzzähler = 0).", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.360+02:00" } ] }, { "verificationId" : "TYPE_OF_RECEIPT", "version" : 1, "verificationName" : "Feststellen des Belegtyps", "verificationTextualDescription" : "Dieses Modul und die dazugehörigen Submodule überprüfen unterschiedliche Eigenschaften des maschinenlesbaren Codes und leiten anhand dieser Eigenschaften den Belegtyp ab: Start-, Normal-, Training-, Storno- oder Nullbeleg.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.376+02:00", "verificationResultList" : [ { "verificationId" : "TYPE_OF_RECEIPT_START", "version" : 1, "verificationName" : "Belegtyp: Startbeleg", "verificationTextualDescription" : "Es werden folgende Eigenschaften überprüft: Entschlüsselter Umsatzzähler gleich 0, Verkettungswert zeigt auf die Kassen-ID, alle Werte der Steuersätze sind 0, Signatureinrichtung darf nicht ausgefallen sein.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.376+02:00" }, { "verificationId" : "TYPE_OF_RECEIPT_STANDARD", "version" : 1, "verificationName" : "Belegtyp: Standardbeleg", "verificationTextualDescription" : "Es werden folgende Eigenschaften überprüft: Mindestens ein Steuersatz-Wert muss ungleich 0 sein, es muss ein Umsatzzähler im maschinenlesbaren Code vorhanden sein (es dürfen nicht die BASE64-kodierten Zeichenketten von \"TRA\" oder \"STO\" statt dem Umsatzzähler vorhanden ein), der Verkettungswert darf nicht auf die Kassen-ID zeigen.", "verificationState" : "FAIL", "verificationResultDetailedMessage" : "Der Verkettungswert ist von der Kassen-ID abgeleitet.", "verificationTimestamp" : "2017-04-13T00:49:22.376+02:00" }, { "verificationId" : "TYPE_OF_RECEIPT_TRA", "version" : 1, "verificationName" : "Belegtyp: Trainingsbeleg", "verificationTextualDescription" : "Es werden folgende Eigenschaften überprüft: BASE64-kodierter Wert \"TRA\" steht im Umsatzzähler, der Verkettungswert darf nicht auf die Kassen-ID zeigen.", "verificationState" : "FAIL", "verificationResultDetailedMessage" : "Der Verkettungswert ist von der Kassen-ID abgeleitet.", "verificationTimestamp" : "2017-04-13T00:49:22.376+02:00" }, { "verificationId" : "TYPE_OF_RECEIPT_STO", "version" : 1, "verificationName" : "Belegtyp: Stornobeleg", "verificationTextualDescription" : "Es werden folgende Eigenschaften überprüft: BASE64-kodierter Wert \"STO\" steht im Umsatzzähler, der Verkettungswert darf nicht auf die Kassen-ID zeigen.", "verificationState" : "FAIL", "verificationResultDetailedMessage" : "Der Verkettungswert ist von der Kassen-ID abgeleitet.", "verificationTimestamp" : "2017-04-13T00:49:22.376+02:00" }, { "verificationId" : "TYPE_OF_RECEIPT_NULL", "version" : 1, "verificationName" : "Belegtyp: Nullbeleg", "verificationTextualDescription" : "Es werden folgende Eigenschaften überprüft: Die Werte für alle Steuersätze müssen 0 sein, es muss ein Umsatzzähler im maschinenlesbaren Code vorhanden sein (es dürfen nicht die BASE64-kodierten Zeichenketten von \"TRA\" oder \"STO\" statt dem Umsatzzähler vorhanden ein), der Verkettungswert darf nicht auf die Kassen-ID zeigen.", "verificationState" : "FAIL", "verificationResultDetailedMessage" : "Der Verkettungswert ist von der Kassen-ID abgeleitet.", "verificationTimestamp" : "2017-04-13T00:49:22.376+02:00" } ] }, { "verificationId" : "STATE_CONSOLIDATED", "version" : 1, "verificationName" : "Statusprüfung der Kasse und Signatur-/Siegelerstellungseinheit", "verificationTextualDescription" : "In diesem Modul und den dazugehörigen Submodulen werden die Zustände der Kasse und der verwendeten Signatur-/Siegelerstellungseinheit und die Ergebnisse der zuvor durchgeführten Prüfungen (vor allem der Belegtyp) ausgewertet. Handelt es sich um einen Startbeleg, wird überprüft ob eine Inbetriebnahme der Kasse möglich ist.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.376+02:00", "verificationResultList" : [ { "verificationId" : "STATE_CASHBOX", "version" : 1, "verificationName" : "Statusprüfung der Kasse", "verificationTextualDescription" : "Es wird der Status der Kasse zum Belegerstellungszeitpunkt und zum Prüfzeitpunkt ausgewertet. Die extrahierten Informationen werden im Zusammenhang mit weiteren Beleginformationen betrachtet.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.376+02:00" }, { "verificationId" : "STATE_SIGDEVICE", "version" : 1, "verificationName" : "Statusprüfung der Signatur-/Siegelerstellungseinheit", "verificationTextualDescription" : "Es wird der Status der Signatur-/Siegelerstellungseinheit zum Belegerstellungszeitpunkt und zum Prüfzeitpunkt ausgewertet. Die extrahierten Informationen werden im Zusammenhang mit weiteren Beleginformationen betrachtet.", "verificationState" : "PASS", "verificationTimestamp" : "2017-04-13T00:49:22.376+02:00" } ] } ] } ] }

Cashbox_full.JSON Prüftool

{ "verificationId" : "VERIFICATION_FROM_CASHBOX", "version" : 1, "verificationName" : "Prüfergebnis - Kasse", "verificationTextualDescription" : "Bei der Belegprüfung wird untersucht, ob die Vorgaben der RKSV in Bezug auf den maschinenlesbaren Code am Beleg und auf die meldepflichtigen Metadaten der Sicherheitseinrichtung befolgt werden. Im Fehlerfall sind die genauen Fehlerinformationen nachfolgend angeführt.", **"verificationState" : "PASS",** "verificationResultDetailedMessage" : "Die Registrierung Ihrer Registrierkasse und der Signatur-/Siegelerstellungseinheit war erfolgreich. Der vorliegende Startbeleg wurde gesetzeskonform erstellt. Bundesministerium für Finanzen.", "verificationTimestamp" : "2017-04-13T00:49:22.345+02:00" }

Cashbox.JSON Prüftool

{ "base64AESKey" : "jJOtg4lV4COqU0SmgZ9VBZw9msDuHlVL98sTPr+WUes=", "certificateOrPublicKeyMap" : { "6fe****a" : { "id" : "6fe****a", "signatureDeviceType" : "CERTIFICATE", "signatureCertificateOrPublicKey" : "MIIFOTCCAyGgAwIBAgIEb+RDajANBgkqhkiG9w0BAQsFADCBoTELMAkGA1UEBhMCQVQxSDBGBgNVBAoMP0EtVHJ1c3QgR2VzLiBmLiBTaWNoZXJoZWl0c3N5c3RlbWUgaW0gZWxla3RyLiBEYXRlbnZlcmtlaHIgR21iSDEjMCEGA1UECwwaQS1UcnVzdCBSZWdpc3RyaWVya2Fzc2UuQ0ExIzAhBgNVBAMMGkEtVHJ1c3QgUmVnaXN0cmllcmthc3NlLkNBMB4XDTE3MDQxMjIwNDczOVoXDTIyMDQxMjE4NDczOVowPjELMAkGA1UEBhMCQVQxGDAWBgNVBAMMD1VJRCBBVFUxNTQzNjEwNjEVMBMGA1UEBRMMNjQ0NzYwNzU5MzM3MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEB0mnIoPeg8R9FEwfkXuhyGUIwJiEBMKGPwA3ky+/MmSw5hv/sy7erRrb5IKmsHapUjPnoUPatG1hyFI5UMQ1FqOCAaQwggGgMH8GCCsGAQUFBwEBBHMwcTBGBggrBgEFBQcwAoY6aHR0cDovL3d3dy5hLXRydXN0LmF0L2NlcnRzL0EtVHJ1c3QtUmVnaXN0cmllcmthc3NlLUNBLmNlcjAnBggrBgEFBQcwAYYbaHR0cDovL29jc3AuYS10cnVzdC5hdC9vY3NwMA4GA1UdDwEB/wQEAwIGwDARBgNVHQ4ECgQIQQHzOho9o0kwRQYDVR0fBD4wPDA6oDigNoY0aHR0cDovL2NybC5hLXRydXN0LmF0L2NybC9BLVRydXN0LVJlZ2lzdHJpZXJrYXNzZS5DQTAJBgNVHRMEAjAAMFgGA1UdIARRME8wTQYGKigAEQEYMEMwQQYIKwYBBQUHAgEWNWh0dHA6Ly93d3cuYS10cnVzdC5hdC9kb2NzL2NwL0EtVHJ1c3QtUmVnaXN0cmllcmthc3NlMBMGA1UdIwQMMAqACEBHnq7jkN+2MBsGA1UdEQQUMBKBEG9mZmljZUBhZWNvcmEuYXQwHAYHKigACgELAQQRDA9VSUQgQVRVMTU0MzYxMDYwDQYJKoZIhvcNAQELBQADggIBAC5F78l77pn52L0+6EszBJhXncUpaLL7ZfFwQcrYNTcewV0AnsrqFGYzRgqA7n/UJCKHg/PCVsijvT2AJaxAvo3teP4hjRlcgyuMp9tABo+bD+X4MUedWIgcdFLY3Nua70tqUkieK4gER8W/6i0ICJEMN4Ev4Y0EXKMDxJRF1ytUZH5+Vv1Vk2BpNNeCKAHQQ9REdavLVi8vPUT64kumQSNvsKQHX2r6K9llvaAkK66+ZTHlU10oa33c7Nm9PyWos8U0xy1T1jAfwsSETZUcN9EnW83Rr33MkC05fgbcEsF0hySL7laXbhS2DSxMfEjVwcKIiG0Ij0FxEw72S//aH+0KXpZmBXF9dzXmoZuJGymDIxmDpfYJF/PepX9qbAFMDJ0OXVa1kp4OKrS8wyWnHT2yWFSfIXtst6JAvuZY4s0Uxs4sC+yepUTHAnDG1JzpQlJZoA9DkPxvChQJ4ePx5jbh3e0cVmqXsHROnnsUVS2WCsECdGSAOX3QGExoI/eGM6kdtNvcfaDAC7/sCFKhcWEpY0X2DH+ssUU13Frzejp8pjJztw6RWBB8kPANNZtiTCCnp7EUDuuQF8Rn0+llB/V4ddYy1nV/1X0FEN2llokUgxq4WYjN6o6L7Y88Tppe1ZaC7wGviEWgK7wDSQqZGS+IokN2WU25yvxp8rKMEvBF" } } }

CMF - Zertifikats-Seriennummer aufgrund des Datenschutzes leicht abgeändert

[ "_R1-AT1_K1_R1_2017-04-13T00:16:06_0.00_0.00_0.00_0.00_0.00_P4BVdSXCSCI=_6fe4436a_uttyg3ZqESo=_vCeWj6vnrv0RkP9GfuthSad1rh2DCXd/F4riYYsQdRbRagbAPKBU6bTf+vfgJZfBwfVtuRTgYjiXGAJIOlRVcg==" ]

QR Code / Signatur

Ich würde mich sehr über baldige Antwort freuen da die betroffene Kunden schon recht sauer über die ganze Situation ist und wir keinen Fehler von unserer Seite aus sehen können.

ErichFreitag commented 7 years ago

Ich sehe zunächst "." in den Barumsätzen statt ",". Eventuell ein Thema von länderspezifischen Einstellungen?

SencerC commented 7 years ago

Das "." in den Barumsätzen war aber bei den 250 vorherigen Registrierungen kein Problem im FON kein Problem, und das Prüftool sagt auch dass alles OK ist.

ErichFreitag commented 7 years ago

Sind sie sicher, dass in diesem Fall keine (länderspezifischen, ...) Einstellungen mitspielen könnten? Offizielles Trennzeichen ist das Komma.

Bezüglich Prüftool: das ist schon OK, aber nur ein Teil der Wahrheit. Die Frage ist, welches Prüftool (QR-Daten oder DEP) sie verwenden und wo jetzt die Unterschiede in den Daten und Prüffeinheiten sein können.

Woher kommen übrigens diese langen FON-Rückmeldungen? Ich sehe da z.B. die Prüfung auf Storno- oder Trainingsbeleg zweimal enthalten - das ist so nicht nachzuvollziehen. Gleichzeitig ist die Startbelegprüfung zweimal OK. Vielleicht können sie das mal auftrennen und zuordnen.

WienerroitherM commented 7 years ago

Wenn eine außerbetrieb genommene Kasse mit gleicher KID existiert, in deren Lebenszyklus der Belegerstellungszeitpunkt fällt (die also am 13.04.17 um 00:16 noch in Betrieb war) wird der Startbeleg dieser zugeordnet und der AES-Schlüssel aus dieser Registrierung bei der Prüfung verwendet.

Wurde also eine KID außerbetrieb genommen und mit anderem AES-Schlüssel neu registriert, der Belegerstellungszeitpunkt fällt aber in die alte Registrierung, scheitert die Startbelegprüfung am Belegtyp. Bei der Prüfung mit dem Prüftool werden Sie vermutlich den AES-Schlüssel der neuen Registrierung eingetragen haben und dadurch passt dort auch alles. Das dürfte das Problem hier sein.

andreasschiestl commented 7 years ago

@ErichFreitag @aecoraIT In diesem Issue https://github.com/a-sit-plus/at-registrierkassen-mustercode/issues/393 steht dass das Prüftool sowohl . und , als Dezimaltrennzeichen akzeptiert. Die Spezifikation schreibt jedoch klar, als Trennzeichen vor und sollte daher unbedingt angepasst werden, unabhängig ob es mit dem aktuellen Fehler zusammenhängt oder nicht.

WienerroitherM commented 7 years ago

@eauth Ich weiß jetzt leider nicht was mit FON-Prüfprotokoll gemeint ist, aber oben sind die cashbox(_full).JSON aus dem (manuellen) Prüftool - dort findet man "PASS" bei TYPE_OF_RECEIPT_START weil bei der Prüftool Prüfung natürlich händisch der richtige AES-Schlüssel im cryptographicMaterialContainer eingetragen wurde. Meiner Vermutung nach holt sich aber die tatsächliche FON-Prüfung einen AES-Schlüssel aus einer in FON ausserbetriebgenommenen Kasse (die zum Belegerstellungszeitpunkt auf "registriert" war). Durch den falschen AES-Key ist der Umsatzzähler ungleich 0 und genau diese Fehlermeldung wird dadurch in FON ausgeworfen.

eauth commented 7 years ago

ich habe erst nach meinem Posting bemerkt dass das Prüfprotokoll nicht von FON, sondern vom Prüftool stammt, sorry. Ich habe das Posting deswegen gleich wieder gelöscht. Ihre Vermutung mit dem AES-Key klingt sehr plausibel.

SencerC commented 7 years ago

Nochmal konkret um alle Missverständnisse aus der Welt zu schaffen: K1 wurde im FON registriert und hatte einen AES Schlüssel. Leider war der Account fehlerhaft, somit wurde K1 im FON wieder Außer Betrieb genommen. Neuer Account wurde generiert, und ein neuer K1 mit einem neuen AES Schlüssel und einem neuen Startbeleg generiert. Neues K1 mit neuen Schlüsseln und Startbeleg wurde nach der Deaktivierung der K1 im FON erstellt. Und jetzt geht das natürlich nicht.

Sonst @andreasschiestl und @ErichFreitag : Warum heisst das Tool Prüftool und wird uns so zur Verfügung gestellt, wenn das Prüftool eigentlich nur die halbe Wahrheit aufzeigt z.B. mit "." und ","? Bei der Überprüfung des Startbeleges wurde übrigens die Belegprüfung des Prüftools verwendet.

WienerroitherM commented 7 years ago

@aecoraIT Der Belegerstellungszeitpunkt des Startbelegs fällt in den Zeitraum der alten Kasse? Wenn ja, holt sich die FON Prüfung den AES-Schlüssel von dort und dadurch entsteht der Fehler. Wann wurde die alte Kasse registriert und wann wurde sie außer Betrieb genommen?

SencerC commented 7 years ago

@WienerroitherM Es wurde wie folgt vorgegangen: Alte Kasse wird im FON deaktiviert -> Neuer Account wird für den Kunden im System erstellt -> Kasse wird im System Registriert, d.h. AES Schlüssel wird generiert, Signaturchip wird gesetzt -> Startbeleg wird ausgedruckt -> Neue Kasse wird mit den neuen Daten im FON registriert -> Startbeleg wird mit Belegcheck App überprüft. Also liegt der Zeitpunkt der Belegerstellung nach der Deaktivierung des alten Systems im FON aber vor der Erstellung des neuen Systems.. Workflow war immer: Zuerst Kasse Registrieren und Startbeleg ausdrucken dann Registrierung im FON. Auch weil die Kunden nicht immer sofort alle Ihre FON Zugangsdaten dabei haben, und die Registrierung evt. vom Steuerberater gemacht wird.

SencerC commented 7 years ago

Prinzipiell darf doch das FON nicht den AES Schlüssel eines Deaktivierten Systems zur Prüfung heranziehen oder???

Flanelli commented 7 years ago

Nach meiner bescheidenen Logik wäre es wohl nur rechtens wenn die Registrierung in FON zeitilich VOR der erstellung eines Startbeleges erfolgen muß damit dieser dann via Belegcheck-APP auch als korrekt befunden werden kann. Wäre es anders dann würde man z.B. auch annehmen können dass z.B.: Eintrittskarten für ein Konzert das noch gar nicht angekündigt wurde aber den Aufdruck haben "falls das Konzert irgendwann und irgendwo einmal stattfinden sollte" verkauft werden und dann irgendwann und irgendwo wirklich gültig wären :-)

MichaelSchustereder commented 7 years ago

Mitunter kann für den zeitlichen Ablauf auch die Uhrzeit am PC, auf dem der Startbeleg erstellt wurde, ausschlaggebend sein - sofern diese nicht aktuell ist. Geht beispielsweise die Uhrzeit am PC um 30 Minuten hinten, dann kann die Erstellung des Startbelegs sehr wohl noch in die Gültigkeit der alten Kasse fallen.

WienerroitherM commented 7 years ago

@aecoraIT Könnten Sie, wenn es möglich wäre, einen Screenshot von der "Historie zum Status" der außerbetriebgenommenen Kasse mit KID "K1" aus FinanzOnline posten, dann könnte man ziemlich schnell sagen, ob der vorliegende Beleg dem alten Kasseneintrag zugeordnet wird, oder nicht. Wie gesagt, in FON wird, soweit Kassenzyklen mit gleicher KID vorliegen, nach Belegerstellungszeitpunkt zugeordnet.

andreasschiestl commented 7 years ago

@aecoraIT Wie in dem anderen Issue steht wird hier großzügig geprüft, ich nehme mal auch bei einer Betriebsprüfung, sonst wäre das Prüftool für uns ja wertlos. Da die Spezifikation aber klar vorschreibt, dass das Kommatrennzeichen ein , ist sollte man sich auch daran halten um den Kunden und sich selbst möglichen Ärger bei einer Betriebsprüfung zu sparen.

Prüftool: Bei der Konzeption des Prüfkerns wurde in Abstimmung mit dem BMF bei den Steuersätzen aber schon von Anfang an absichtlich großzügiger geprüft: D.h. der Prüfkern/das Prüftool akzeptiert sowohl die englische (Komma = .) als auch deutsche Schreibweise (Komma ist ,) und akzeptiert Belege mit/ohne Tausenderkennzeichen.