Com o
- POST /api/v1/transactions/storeDocument
, um documento é transmitido ao serviço fiscal e aí armazenado.
Resultado
Se o processamento for bem-sucedido (200), o respetivo client do serviço fiscal responde com um «fiscalResponse».
Utilização
- Sempre que um documento for concluído no sistema de registo eletrónico (caixa registadora).
Pré-requisitos
-
A chamada à função storeDocument deve ser precedida pela chamada ao ponto de extremidade PUT /api/v1/transactions/createDocument
- Os dados da resposta de createDocument devem ser integrados na estrutura JSON de storeDocument. Consulte a secção seguinte.
Processo de transmissão
Conforme descrito, um storeDocument requer um createDocument prévio. A fiscalResponse do createDocument contém os seguintes campos:
"fiscalisationDocumentNumber": 0,
"fiscalisationDocumentRevision": 0,
"fiscalDocumentStartTime": 0,
A informação contida nestes campos deve estar incluída na estrutura JSON transmitida com o `storeDocument`. Estes campos contêm valores gerados por um hardware fiscal obrigatório (dispositivo técnico de segurança «TSE» na Alemanha) e são utilizados para o encadeamento de transações.
Atenção: Tenha em conta as seguintes características especiais:
A «fiscalResponse» do «createDocument» devolve os campos «fiscalisationDocumentNumber» e «fiscalisationDocumentRevision». No «storeDocument», no entanto, estes campos devem ser transmitidos com
"fiscalDocumentNumber": 24,
"fiscalDocumentRevision": 1,
sem «isation»! Tenha também em atenção: Transação não iniciada
Exemplo:
O exemplo seguinte mostra um recibo simples para a Alemanha (documentType = [0] = recibo), que é enviado para o ponto final POST /api/v1/transactions/storeDocument.
{
"uniqueClientId": "c1062c55-57c4-4ed2-9c53-aff1762326a4",
"documentGuid": "7d4a7761-e9e9-4759-8591-ed147a581da4",
"documentId": "HAM01-00010329",
"documentNumber": "00010329",
"createDate": "2023-04-18T21:34:45",
"bookDate": "2023-04-18T21:34:46",
"cancellationDocument": false,
"isTraining": false,
"documentType": 0,
"user": {
"id": "1234",
"caption": "1234"
},
"fiscalDocumentNumber": 2853,
"fiscalDocumentStartTime": 1681803100,
"fiscalDocumentRevision": 1,
"Positions": [
{
"positionNumber": 0,
"netValue": 10.66,
"grossvalue": 12.90,
"taxValue": 2.24,
"quantity": 1,
"itemId": "1101202930050",
"itemCaption": "Pizza Margherita",
"cancellationPosition": "false",
"type": "0",
"businessTransactionType": 0,
"vatPercent": 19,
"vatIdentification": 1,
}
],
"Payments": [
{
"Amount": 12.90,
"paymentType": "cash",
"uniqueReadablePaymentIdentifier": "Cash",
"caption": "Bar+Euro",
"currencyIsoCode": "EUR"
}
]
}
fiscalResponse
A fiscalResponse de um storeDocument deve ser armazenada na base de dados do PDV para efeitos de referência.
A fiscalResponse contém:
- informações genéricas
- informações específicas do país
Exemplo de «fiscalResponse»:
{
"fiscalCountry": "[0] = Germany",
"fiscalisationDocumentNumber": 52,
"fiscalisationDocumentRevision": 2,
"fiscalDocumentStartTime": 1674819139,
"processStartTime": 0,
"errorDescription": null,
"cashRegisterId": "00345-00345",
"signature": "pCeGi98gNNhshcGJkbw0DwtSzuJkaawON8l5QwsFDEaDHOyYK2aNVO4ZAlpkYYnub7oxM/2R1/KB36UzmOQwew==",
"userMessage": null,
"printMessage": "***Test***",
"requestTime": "2023-01-27T12:34:21.3088836+01:00",
"requestCompletionTime": "2023-01-27T12:34:22.4379009+01:00",
"AdditionalFields": {
"QrCodeDataString": "V0;00345-00345;Kassenbeleg-V1;Beleg^13.90_0.00_0.00_0.00_0.00^13.90:Unbar;52;197;2023-01-27T11:32:19.000Z;2023-01-27T11:34:20.000Z;ecdsa-plain-SHA256;unixTime;pCeGi98gNNhshcGJkbw0DwtSzuJkaawON8l5QwsFDEaDHOyYK2aNVO4ZAlpkYYnub7oxM/2R1/KB36UzmOQwew==;BNHckCuXF2fEktIp8qwtnMLLgvpJDX6wEOqFENlHXZpekBHxHniQh9gbigjWS9UbCwZSrOTJTMK7WiV5owAfXkk=",
"TransactionStartTime": 1674819139,
"TransactionEndTime": 1674819260,
"ProcessData": "Beleg^13.90_0.00_0.00_0.00_0.00^13.90:Unbar",
"ProcessType": "Kassenbeleg-V1",
"TseSerial": "e5f5836a57c50c526d4bed37f18823608f2f44e2c98cab73278a7676c5ea0885",
"TseTimeFormat": "unixTime",
"TseHashAlgorithm": "ecdsa-plain-SHA256",
"TsePublicKey": "BNHckCuXF2fEktIp8qwtnMLLgvpJDX6wEOqFENlHXZpekBHxHniQh9gbigjWS9UbCwZSrOTJTMK7WiV5owAfXkk=",
"TseSignatureCounter": 197,
"TseCertificate": "MIIB0jCCAVmgAwIBAgIhAOX1g2pXxQxSbUvtN/GII2CPL0TiyYyrcyeKdnbF6giFMAoGCCqGSM49BAMDMDExFTATBgNVBAoTDGZpc2thbHkgR21iSDEYMBYGA1UEAxMPZmlza2FseSBUZXN0IENBMB4XDTIyMTAzMDEyMjgzMloXDTIzMTAzMDEyMjgzMlowMjEVMBMGA1UEChMMZmlza2FseSBHbWJIMRkwFwYDVQQDExBmaXNrYWx5IFRlc3QgVFNFMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0dyQK5cXZ8SS0inyrC2cwsuC+kkNfrAQ6oUQ2Uddml6QEfEeeJCH2BuKCNZL1RsLBlKs5MlMwrtaJXmjAB9eSaNBMD8wDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUlllBymQBup6ldKGojZVpZtWG5tQwCgYIKoZIzj0EAwMDZwAwZAIwEFsoSON9cIBqA5d9vsGI2jSjDlZxHokDvJ4yBmayvigrDbdhMYe3hw3HyQbO2B/FAjBXSVNbYR6Wg2TVzL9BhCla+tewRDGcs6vnetJ4i3VRtya1+ejt+vRjWnb/RUyo0Uw="
}
}
Informações genéricas
Estas podem ser encontradas na área do header da «fiscalResponse».
Nota:
- O conteúdo do campo «fiscalisationDocumentNumber» deve ser impresso no documento (DE).
- O conteúdo do campo «PrintMessage» deve ser impresso no recibo.
Informações específicas do país
As informações específicas por país são fornecidas na área «AdditionalFields» e contêm dados que devem ser impressos no recibo (por exemplo, código QR ou, em alternativa, dados TSE na Alemanha).
Consulte os exemplos de documentos do respetivo país.
Nota: Se for devolvido o valor «-1» na «fiscalResponse» do «storeDocument» no campo
"fiscalDocumentNumber": -1,
the client recognized the corresponding document as non-fiscal.
Resposta
Respostas possíveis:
| Código | Descrição | Exemplo |
| 200 |
O documento foi transmitido com sucesso e sem erros e guardado no documentStore. |
fiscalResponse |
| 404 |
Alemanha: não foi possível encontrar o fiscalDocumentNumber especificado. A transação com o fiscalDocumentNumber especificado ainda não foi criada (iniciada). Resolução de problemas:
|
- |
| 406 |
O tipo de documento transmitido não é suportado Resolução de problemas:
|
- |
| 422 |
O conteúdo do documento está vazio ou incorreto Resolução de problemas:
|
- |
Este artigo foi traduzido automaticamente.
Comentários
0 comentários
iniciar sessão para comentar.