Allgemein
Um die Daten der Registrierkasse zu exportieren, muss man zwei JSON-Dateien generieren. Hier ist es extrem wichtig, auf die Groß- und Kleinschreibung zu achten, da das Belegeprüftool (regkassen-verification-depformat-1.1.1.jar) case sensitive arbeitet und bei der kleinsten Abweichung nicht mehr das macht, was es soll.
Zuerst werden die Belegdaten in ein JSON-Objekt konvertiert. Es hat folgende Struktur:
{
"Belege-Gruppe":[
{
"Signaturzertifikat":"",
"Zertifizierungsstellen":[
],
"Belege-kompakt":[
"eyJhbGciOiJFUzI1NiJ9.xxx.aaa",
"eyJhbGciOiJFUzI1NiJ9.xxx.bbb",
"eyJhbGciOiJFUzI1NiJ9.xxx.ccc"
]
}
]
}
Mit den vorhandenen JWS-Strings generiert man das Objekt. Wichtig ist, dass die Strings in der richtigen (chronologischen – alt-neu) Reihenfolge geladen werden. Das Signaturzertifikat und die Zertifizierungsstellen können in diesem JSON-Objekt leer bleiben.
Das nachfolgende Beispiel zeigt, wie man dieses Objekt ganz einfach generieren kann:
$aKompakteJWSStrings = array('eyJhbGciOiJFUzI1NiJ9.xxx.aaa.',
'eyJhbGciOiJFUzI1NiJ9.xxx.bbb.',
'eyJhbGciOiJFUzI1NiJ9.xxx.ccc.');
$aDEPDaten = array('Belege-Gruppe' => array(array('Signaturzertifikat' => '',
'Zertifizierungsstellen' => array(),
'Belege-kompakt' => $aKompakteJWSStrings)));
$oJSON = json_encode($aDEPDaten));
In einem zweiten Schritt wird nun die Datei mit den Zertifikat-Daten generiert. Diese ist folgendermaßen aufgebaut:
{
"base64AESKey":"xxxAESSCHLÜSSELxxx",
"certificateOrPublicKeyMap":{
"xxxSERIENNUMMERxxx":{
"id":"xxxSERIENNUMMERxxx",
"signatureDeviceType":"CERTIFICATE",
"signatureCertificateOrPublicKey":"xxxZERTIFIKATSDATENxxx"
}
}
}
Mit dem nachstehenden Code kann man die JSON-Datei mit den Zertifikat-Daten ganz leicht generieren:
$oJSON = json_encode(array('base64AESKey' => 'xxxAESSCHLÜSSELxxx',
'certificateOrPublicKeyMap' => array('xxxSERIENNUMMERxxx' => array('id' => 'xxxSERIENNUMMERxxx',
'signatureDeviceType' => 'CERTIFICATE',
'signatureCertificateOrPublicKey' => 'xxxZERTIFIKATSDATENxxx'))));