...
O PDV precisa estar com a operação de finalização da venda, na operação de Início da venda e Subtotal da venda não será aplicado, pois a validação de ticket é realizado no final, quando há uma finalização de cupom.
O campo com número da chave do SAT ou chave da NFC-e, é o campo IdInvoiceKey, que no final da venda será populado e passado para o parceiro.
PARÂMETRO | TIPO | OBRIGATÓRIO | DESCRIÇÃO |
Execution | string | true | Tipo da execução cetContinue, cetInterrupt, cetFailed |
Version | string | true | Versão da API |
Text | String List | true | Texto que será exibido nos cupons impressos no final da compra |
...
Início da venda no PDV, foi inserido um produto e teclado Enter. Após todos os produtos inseridos, foi acionada a função para finalização da venda.
Imagem 1 – Tela Pagamento
...
JSON enviado ao parceiro
{
...
"Event":
...
"cetAfter",
...
...
"Execution":
...
"cetContinue",
...
...
"ID":
...
"
...
001222001206915",
...
...
"Operation": "cotParkingTicketEndSale",
"ParkingTicket": {
"ParkingCourtesy": [
{
"MinutesFree": 0,
"SaleValue": 2.9989999999999998E+001,
"TariffCode": "1"
},
{
"MinutesFree": 30,
"SaleValue": 5.9990000000000002E+001,
"TariffCode": "2"
},
{
"MinutesFree": 150,
"SaleValue": 1.9999000000000001E+002,
"TariffCode": "6"
},
{
"MinutesFree": 180,
"SaleValue": 2.2999000000000001E+002,
"TariffCode": "7"
},
{
"MinutesFree": 720,
"SaleValue": 9.9990000000000000E+003,
"TariffCode": "8"
}
],
"ParkingCust": [
{
"MinutesRate": 15,
"PeriodCust": 1.0000000000000000E+000
},
{
"MinutesRate": 30,
"PeriodCust": 0.0000000000000000E+000
},
{
"MinutesRate": 60,
"PeriodCust": 1.0000000000000000E+001
},
{
"MinutesRate": 120,
"PeriodCust": 2.0000000000000000E+001
},
{
"MinutesRate": 240,
"PeriodCust": 2.0000000000000000E+001
}
]
},
"Pay": null,
"Response": "",
"Sale": {
"Discount": 0.0000000000000000E+000,
"DiscountCodes": [],
"Header": {
"AccountingDate": "2021-11-12T00:00:00",
"DateTimeIssue": "2021-11-12T18:01:23",
"IdDocument": 1206915,
"CooDocument": 527,
"IdInvoiceKey": "29211110010000288049657020000004439239121219",
"IdStore": 1,
"IdTerminal": 222,
"IdUser": 2,
"Identification": [],
"Status": "sttValid"
},
"ID": "001222001206915",
"Increase": 0.0000000000000000E+000,
"Items": [],
"Messages": {
"Customer": [],
"User": []
},
"PartitionDiscount": [],
"PartitionIncrease": [],
"PaymentChange": null,
"Payments": [],
"SolidaryChange": null,
"Total": 1.3949999999999999E+001,
"VouchersPrint": []
},
"Version": 1
}
JSON retornado pelo parceiro com uma solicitação de valor
{
"version": 1,
"sale": {
"increase": 0,
"discount": 0,
"total": 0,
"header": null,
"payments": [],
"paymentChange": null,
"solidaryChange": null,
"items": [],
"discountCodes": [],
"messages": {
"customer": [
{
"text": "Ganhou 1000 pontos nessa compra\r\n"
}
],
"user": [
{
"text": "Ganhou 100 pontos nessa compra\r\n"
}
]
},
"vouchersPrint": [
{
"text": " CUPOM DESCONTO 1\r\n\r\n Cupom de 5% de desconto para \r\npróxima\r\ncompra, aplicado para todos os \r\nprodutos.\r\n\r\n[ImpBarra]1234567890\r\n[ImpFimBarra]\r\n"
},
{
"text": " CUPOM DESCONTO 2\r\n\r\n Cupom de 10% de desconto para \r\npróxima\r\ncompra, aplicado para todos os \r\nprodutos.\r\n\r\n[ImpBarra]1234567890\r\n[ImpFimBarra]\r\n"
}
],
"partitionIncrease": [],
"partitionDiscount": [
{
"price": 0,
"partnerCode": 0,
"promotionCode": 357,
"discountAmount": 0
}
]
},
"pay": null,
"return": {
"code": 0
},
"execution": "cetContinue",
"interpret": {
"commandType": "cctGetValue",
"messageCommand": null,
"options": null,
"value": {
"title": "Ticket de estacionamento",
"subtitle": "Informe o número",
"dataType": "cvtString",
"size": 0,
"documentTypes": [
"cdtCPF",
"cdtCNPJ"
]
}
},
"vouchersPrint": [
{
"text": " RECEBO TICKET ESTACIONAMENTO\r\n\r\n N. 12345678901234, liberado até 20:00 horas\r\n"
},
{
"text": " RECEBO TICKET ESTACIONAMENTO\r\n\r\n N. 12345678901234, liberado até 20:00 horas\r\n"
}
]
}
Tela apresentada ao operador.
Imagem 2 – Tela de Pagamento
JSON enviado ao parceiro
{
"version": 1,
"sale": {
"increase": 0,
"discount": 0,
"total": 0,
"header": null,
"payments": [],
"paymentChange": null,
"solidaryChange": null,
"items": [],
"discountCodes": [],
"messages": {
"customer": [
{
"cotParkingTicketEndSale", "Sale"{ "Header"{ "AccountingDate": "2020-02-14T00 00 00", "DateTimeIssue": "2020-02-14T08 42 29", "IdDocument": 154775, "IdStore": 1, "IdTerminal": 1, "IdUser": 2, "Status": "sttValid" }, "ID": "001001000154775", "Total": 11.98 }, "ParkingTicket"{ "ParkingCourtesy"[ { "MinutesFreetext": 0, "Ganhou 1000 pontos nessa compra\r\n"
}
],
"SaleValueuser": 5.00, [
{
"TarifCodetext": "0" Ganhou 100 pontos nessa compra\r\n"
},
]
{ },
"MinutesFreevouchersPrint": 60, [
{
"SaleValuetext": 15.00, "TarifCode": "1" " CUPOM DESCONTO 1\r\n\r\n Cupom de 5% de desconto para \r\npróxima\r\ncompra, aplicado para todos os \r\nprodutos.\r\n\r\n[ImpBarra]1234567890\r\n[ImpFimBarra]\r\n"
},
{
"MinutesFreetext": 120, " CUPOM DESCONTO 2\r\n\r\n Cupom de 10% de desconto "SaleValue": 20.00, para \r\npróxima\r\ncompra, aplicado para todos os \r\nprodutos.\r\n\r\n[ImpBarra]1234567890\r\n[ImpFimBarra]\r\n"
"TarifCode": "1" }
],
} "partitionIncrease": [],
"ParkingCustpartitionDiscount": [
{
"MinutesRateprice": 600,
"PeriodCustpartnerCode": 3.00 0,
}, { "promotionCode": 300,
"MinutesRatediscountAmount": 120, 0
}
"PeriodCust": 6.00 ]
},
"pay": null,
"return": {
"code": 0,
"MinutesRatemessageText": 240, "PeriodCust": 9.00 "0"
},
"execution": "cetCompleted",
"interpret": null,
"vouchersPrint": [
{
}, { "MinutesRate": 9999, "text": " RECEBO TICKET ESTACIONAMENTO\r\n\r\n N. 12345678901234, liberado até 20:00 horas\r\n"
},
{
"PeriodCusttext": 5.00 } ] } }" RECEBO TICKET ESTACIONAMENTO\r\n\r\n N. 12345678901234, liberado até 20:00 horas\r\n"
}
]
}
Tela apresentada ao operador.
Imagem 3 – Tela de Pagamento
JSON retornado pelo parceiro
...
{
"version": 1,
"executionsale": {
"cetContinueincrease", : 0,
"interpret"{ discount": 0,
"commandTypetotal": 0,
"cctGetValueheader": null,
"valuepayments"{ : [],
"titlepaymentChange": null,
"Ticket de estacionamento", "solidaryChange": null,
"items": [],
"discountCodes": [],
"subtitlemessages": {
"Informe o número", "customer": [
{
"dataTypetext": "cvtString", Ganhou 1000 pontos nessa compra\r\n"
}
],
"user": [
{
"sizetext": 14 "Ganhou 100 pontos nessa compra\r\n"
} } }
...
Imagem 2 – Tela de Pagamento
...
]
},
"vouchersPrint": [
{
"text": " CUPOM DESCONTO 1\r\n\r\n Cupom de 5% de desconto para \r\npróxima\r\ncompra, aplicado para todos os \r\nprodutos.\r\n\r\n[ImpBarra]1234567890\r\n[ImpFimBarra]\r\n"
},
{
"text": " CUPOM DESCONTO 2\r\n\r\n Cupom de 10% de desconto para \r\npróxima\r\ncompra, aplicado para todos os \r\nprodutos.\r\n\r\n[ImpBarra]1234567890\r\n[ImpFimBarra]\r\n"
}
],
"partitionIncrease": [],
"partitionDiscount": [
{
"price": 0,
"partnerCode": 0,
"promotionCode": 300,
"discountAmount": 0
}
]
},
"pay": null,
"return": {
"code": 0,
"messageText": "0"
},
{
"Version": 1
"Event": "cetAfter",
"Execution": "cetContinue",
"ID": "001001000154775",
"Operation": "cotParkingTicketEndSale",
"Response": "12345678901234"
}
Tela apresentada ao operador.
Imagem 3 – Tela de Pagamento
JSON retornado pelo parceiro
{ "version": 1, "execution": "cetCompleted",
"interpret": null,
"vouchersPrint": [
{
"text": " RECEBO TICKET ESTACIONAMENTO\r\n\r\n N. 12345678901234, liberado até 20 :00 horas\r\n"
},
{
"text": " RECEBO TICKET ESTACIONAMENTO\r\n\r\n N. 12345678901234, liberado até 20 :00 horas\r\n"
}
]
}
Exemplo de texto impresso no cupom.
Imagem 4 – Texto Cupom