Integrar o PDV com cancelas de estacionamento para abono de tickets. No fnal da venda o PDV poderá imprimir o comprovante de abono, esta impressão é opcional.
O parceiro pode configurar uma mensagem, por exemplo, solicitando o número do ticket de estacionamento e realizar todo o processo para liberação da cancela.
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 |
Os outros parâmetros são encontrados no Comando Desconto na Venda. Clique aqui e acesse a documentação.
Informações adicionais sobre o ticket de estacionamento podem ser encontradas no Comando Cupom Desconto na Venda. Clique aqui e acesse a documentação.
Será possível a utilização de tags de impressão, que poderão ser envidas no Response nos parâmetros “vouchersPrint” e “text”, sendo elas:
{
"version": 1,
"execution": "cetCompleted",
"vouchersPrint": [
{
"text": " RECEBO TICKET ESTACIONAMENTOrnrn N. 12345678901234, liberado até 20 00 horasrn"
},
{
"text": " RECEBO TICKET ESTACIONAMENTOrnrn N. 12345678901234, liberado até 20 00 horasrn"
}
]
}
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
A API PDV requisitará para o integrador (parceiro) qual ação deverá ser executada, informando o ciclo da operação que ele está “Operation”, a identificação única da operação/documento “ID”, se a ação será executada antes ou após o evento “Event”, qual a versão da API “Version”, informações sobre a venda com “Header”, “ID” e “Total”. Em “ParkingTicket” haverá duas informações opcionais, que são, “ParkingCourtesy” e “ParkingCust”.
ParkingCourtesy trará as informações de cortesia do ticket, por exemplo, se a venda do cliente for acima de R$15,00 ele tem estacionamento livre por 60 minutos, conforme JSON abaixo.
ParkingCust trará as informações de valores do ticket, por exemplo, se o cliente permanecer até
60 minutos o valor do ticket será de R$3,00, conforme JSON abaixo.
Lembrando que essas informações são configuradas pelo sistema do cliente e são OPCIONAIS.
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": [
{
"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": 300,
"discountAmount": 0
}
]
},
"pay": null,
"return": {
"code": 0,
"messageText": "0"
},
"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"
}
]
}
Tela apresentada ao operador.
Imagem 3 – Tela de Pagamento
JSON retornado pelo parceiro
{
"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": 300,
"discountAmount": 0
}
]
},
"pay": null,
"return": {
"code": 0,
"messageText": "0"
},
"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