...
Quando o PDV estiver com a operação de finalização da venda o parceiro poderá solicitar uma forma de pagamento para o operador, como por exemplo, pagamento com cashback utilizando a função Obter Valor e um leitor de QRCode.
No caso do QRCode, a operadora pode confirmar ou cancelar pressionando o botão ‘Esc’.
...
Os outros parâmetros são encontrados no Comando Desconto na Venda. Clique aqui e acesse a documentação.
No exemplo abaixo foram:
1 – Vinculado uma forma de pagamento ao parceiro;
2 – Adicionado uma função obter valor para captura do QRCode;
No Início da venda, 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
3- Selecionado forma de pagamento vinculado ao parceiro.
Ao confirmar a forma de pagamento será disparado uma requisitão(Request) via JSON para o parceiro.
Imagem 2 – Tela Pagamento
Exemplo JSON Request para o 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"
}
],
{ "Event": "cetBefore", "Execution": "cetContinue", "ID": "001600000591145", "Operation": "cotSalePayment", "Pay"{ "Discount": 0, "Increase": 0, "PaymentNumber": 1, "Total": 4.99 }, "Sale"{ "Discount": 0, "Header"{ "AccountingDate": "2020-03-10T00 00 00", "userDateTimeIssue": [
"2020-03-10T16 57 34", "IdDocument": 591145, {
"IdStore": 1, "textIdTerminal": "Ganhou600, 100 pontos nessa compra\r\n"
"IdUser": 2, }
"Status"": sttValid" ]
}, },"ID": "001600000591145",
"vouchersPrintIncrease": 0, "Items"[
{
"textBarCode": "7891000100103", 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"
"CaptionPacking": "UN", "Description": "MOCA", },
{
"DiscountAmount": 0, "textDiscountPrice": "0, 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"
"IncreasePrice": 0, "InternalCode": "4900", }
],
"partitionIncreaseItemNumber": [],
"partitionDiscount": [
1, "PackingQuantity": 1, {
"priceQuantity": 01,
"partnerCodeStatus": 0"sttValid",
"promotionCodeTotalPrice": 5114.99,
"discountAmountUnitPrice": 0
4.99 }
]
, },
"payTotal": {
4.99 }, "totalVersion": 1 }
4- O parceiro retorna informando que é necessário obter um valor do QRCode. Após a leitura e confirmação do QRCode, o pagamento é finalizado.
Exemplo JSON Response recebido do parceiro
{ "version": 1, "sale"{ .49,
"discount": 0,
"increase": 0,
"paymentNumberdiscount": 29,
0.1, "authorizationCodetotal": "FD455FKL34SS1100AXV",
0, "idWallet": "123456",
items"[ { "typeWallet": "1",
"installmentAmountitemNumber": 1,
"transactionCode": "000080014",
"networkCardunitPrice": "00125",
0, "flagCard": "00002",
"vouchersPrintincreasePrice": [
0, {
"textpackingQuantity": "0, RECEBO PAGAMENTO, CONVENIO: \r\n\r\n N. 100, Vlr. Compra"quantity": 99,99\r\n"
0, },
"totalPrice": 0, {
"discountPrice": 0.0499, "text "status": "sttValid", RECEBO PAGAMENTO, CONVENIO: \r\n\r\n N. 100, Vlr. Compra: 99,99\r\n"
"partitionDiscount"[ }
{ ],
"identification": {
"documentdiscountAmount": "11263629059"1,
"partnerCode": 0,
"documentTypeprice": "cdtCPF"
0.0499, }
},
"return": {
"codepartnerCode": 0
, },
"execution": "cetContinue",
"interpret": {
"commandType": "cctGetValue",
"messageCommandpromotionCode": null,
193 "options": null,
"value": {
} "title": "Leitura de codigo",
] "subtitle": "Teste Pagamento",
} ], "defaultValuepartitionDiscount": "1234567890123456789",
[ { "dataType": "cvtQRCode",
"sizediscountAmount": 01,
"documentTypesprice": []
0.1, }
"partnerCode": },
0, "vouchersPrintpromotionCode": []
}
No exemplo abaixo foram:
1 – Vinculado uma forma de pagamento ao parceiro;
2 – Adicionado uma função obter valor para captura do QRCode;
No Início da venda, 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
Selecionado forma de pagamento vinculado ao parceiro.
Imagem 2 – Tela Pagamento
JSON enviado para o parceiro
{
"Event": "cetBefore",
"Execution": "cetContinue",
"ID": "001600000591145",
"Operation": "cotSalePayment",
"Pay"{949
}
]
},
"pay"{
"total": 4.99,
"discount": 0,
"increase": 0,
"paymentNumber": 1,
"authorizationCode": "FD455FKL34SS1100AXV",
"vouchersPrint"[
"Discount": 0,
{
"Increase": 0,
"PaymentNumbertext": 1,
"Total":" RECEBO PAGAMENTO, CONVENIO \r\n\r\n N. 100, Vlr. Compra 4.99\r\n"
},
"Sale"{
},
"Discount": 0,
"Header"{
"AccountingDatetext": "2020-03-10T00 00RECEBO 00"PAGAMENTO,
CONVENIO \r\n\r\n N. 100, Vlr. Compra 4.99\r\n"
"DateTimeIssue": "2020-03-10T16 57 34",
}
"IdDocument": 591145],
"IdStore": 1,identifcation"{
"IdTerminaldocument": 600"11263629059",
"IdUserpartnerCode": 20,
"StatusdocumentType"": sttValid"cdtCPF"
},
},
"ID": "001600000591145",return"{
"Increasecode": 0,
},
"execution": "ItemscetContinue"[,
"interpret"{
"BarCodecommandType": "7891000100103cctGetValue",
"value"{
"CaptionPackingtitle": "UNLeitura de codigo",
"Descriptionsubtitle": "MOCATeste Pagamento",
"DiscountAmountdefaultValue": 0"4E639435-32FB-4386-8777-06E458EFCF8F",
"DiscountPricedataType": 0"cvtQRCode",
"IncreasePricesize": 0,4000
}
"InternalCode": "4900",
"ItemNumber": 1,
"PackingQuantity": 1,
"Quantity": 1,
"Status": "sttValid",
"TotalPrice": 4.99,
"UnitPrice": 4.99
}
],
"Total": 4.99
},
"Version": 1
}
O parceiro retorna informando que é necessário obter um valor do QRCode. Após a leitura e confirmação do QRCode, o pagamento é finalizado.
Imagem 3 – Pagamento QR Code
JSON enviado para o parceiro
{
"version": 1,
"sale"{
"increase": 0,
"discount": 0.1,
"total": 0,
"items"[
{
"itemNumber": 1,
"unitPrice": 0,
"increasePrice": 0,
"packingQuantity": 0,
"quantity": 0,
"totalPrice": 0,
"discountPrice": 0.0499,
"status": "sttValid",
"partitionDiscount"[
{
"discountAmount": 1,
"price": 0.0499,
"partnerCode": 0,
"promotionCode": 193
}
]
}
],
"partitionDiscount"[
{
"discountAmount": 1,
"price": 0.1,
"partnerCode": 0,
"promotionCode": 949
}
]
},
"pay"{
"total": 4.99,
"discount": 0,
"increase": 0,
"paymentNumber": 1,
"authorizationCode": "FD455FKL34SS1100AXV",
"vouchersPrint"[
{
"text": " RECEBO PAGAMENTO, CONVENIO \r\n\r\n N. 100, Vlr. Compra 4.99\r\n"
},
{
"text": " RECEBO PAGAMENTO, CONVENIO \r\n\r\n N. 100, Vlr. Compra 4.99\r\n"
}
],
"identifcation"{
"document": "11263629059",
"partnerCode": 0,
"documentType": "cdtCPF"
}
},
"return"{
"code": 0
},
"execution": "cetContinue",
"interpret"{
"commandType": "cctGetValue",
"value"{
"title": "Leitura de codigo",
"subtitle": "Teste Pagamento",
"defaultValue": "4E639435-32FB-4386-8777-06E458EFCF8F",
"dataType": "cvtQRCode",
"size": 4000
}
}
}
}
}
5- Com este retorno a aplicação retorna a mensagem na tela do operador conforme o parceiro solicitou:
Imagem 3 – Pagamento QR Code
6 - O operador irá CANCELAR(Esc) ou CONFIRMAR(Enter), para seguir e devolver ao parceiro a resposta num REQUEST.
Exemplo de JSON Request enviado ao parceiro com a resposta "Ok"
{
"Event": "cetBefore",
"Execution": "cetContinue",
"ID": "001222010768134",
"Operation": "cotSalePayment",
"ParkingTicket": null,
"Pay": {
"AuthorizationCode": "",
"Discount": 0.0,
"ExpirationDateCard": "",
"FirstDigitCard": "",
"FlagCard": "",
"IDPayment": "",
"IdWallet": "",
"Identification": null,
"Increase": 0.0,
"InstallmentAmount": 0,
"LastDigitCard": "",
"NetworkCard": "",
"OwnerCard": "",
"PaymentNumber": 333,
"PaymentType": "cptBillet",
"Thing": 0.0,
"Total": 2.0,
"TransactionCanceledCode": "",
"TransactionCode": "",
"TypeWallet": "",
"VouchersPrint": []
},
"Response": "OK",
"Sale": {
"Discount": 0.0,
"DiscountCodes": [],
"Header": {
"AccountingDate": "2023-02-09T00:00:00",
"DateTimeIssue": "2023-02-09T16:54:12",
"IdDocument": 10768134,
"IdInvoiceKey": "",
"IdStore": 1,
"IdTerminal": 222,
"IdUser": 2,
"Identification": [],
"Status": "sttValid"
},
"ID": "001222010768134",
"Increase": 0.0,
"Items": [
{
"BarCode": "417618",
"CaptionPacking": "UN",
"Description": "SORVETE NESTLE 2 LITROS *CREME",
"DiscountPrice": 0.0,
"IdSegment": 3,
"IncreasePrice": 0.0,
"InternalCode": "24",
"ItemNumber": 1,
"OrderNumber": "",
"PackingQuantity": 1.0,
"PartitionDiscount": [],
"PartitionIncrease": [],
"Quantity": 1.0,
"SellerCode": 0,
"Status": "sttValid",
"TotalPrice": 2.0,
"UnitPrice": 2.0
}
],
"Messages": {
"Customer": [],
"User": []
},
"PartitionDiscount": [],
"PartitionIncrease": [],
"PaymentChange": null,
"Payments": [],
"Print": null,
"SolidaryChange": null,
"TaxDocument": null,
"Total": 2.0,
"VouchersPrint": []
},
"Version": 1
}
7 - O Parceiro devolve ao PDV via JSON Response com todas as informações de pagamentos preenchidas.
Veja abaixo exemplo do JSON:
{
"version": 1,
"sale": {
"increase": 0,
"discount": 0,
"total": 0,
"header": null,
"payments": [],
"paymentChange": null,
"solidaryChange": null,
"items": [
{
"itemNumber": 1,
"unitPrice": 0,
"increasePrice": 0,
"packingQuantity": 0,
"quantity": 0,
"totalPrice": 0,
"discountPrice": 0.2,
"status": "sttValid",
"sellerCode": 0,
"partitionIncrease": [],
"partitionDiscount": [
{
"price": 0.1,
"partnerCode": 0,
"promotionCode": 48,
"discountAmount": 1
},
{
"price": 0.1,
"partnerCode": 0,
"promotionCode": 67,
"discountAmount": 1
}
]
}
],
"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": 641,
"discountAmount": 0
}
],
"taxDocument": null,
"print": {
"printType": "\u0000\u0000\u0005\u0000\u0002)�\u0000\u0002\u0000\u0002O�\u0000\u0002\u0000\u0002x�\u0000\u0002\u0000\u0002��\u0000\u0002\u0000\u0002��\u0000\u0002\u0000\u0002\u0000\u0000\u0000(��\u0000\u0004\u0000\u0000�\u0004\u0000\u0000�\u0001\u0000\u0000\u0000\u0000\u0000\u0000�\u0000\u0000\u0000���\u000BCommandTypeL�\u0000\b\u0000\u0000�\b\u0000\u0000�\u0001\u0000\u0000\u0000\u0000\u0000\u0000�\u0000\u0000\u0000���\u000EMe"
}
},
"pay": {
"total": 2,
"discount": 0,
"increase": 0,
"paymentNumber": 333,
"authorizationCode": "FD455FKL34SS1100AXV",
"idWallet": "123456",
"typeWallet": "1",
"installmentAmount": 1,
"transactionCode": "000080014",
"networkCard": "00125",
"flagCard": "00002",
"vouchersPrint": [
{
"text": " RECEBO PAGAMENTO, CONVENIO: \r\n\r\n N. 100, Vlr. Compra: 99,99\r\n"
},
{
"text": " RECEBO PAGAMENTO, CONVENIO: \r\n\r\n N. 100, Vlr. Compra: 99,99\r\n"
}
],
"identification": {
"document": "11263629059",
"partnerCode": 0,
"documentType": "cdtCPF",
"identificationType": "citUnknown"
},
"paymentType": "cptBillet",
"thing": 0
},
"return": {
"code": 0,
"messageText": "0"
},
"execution": "cetCompleted",
"interpret": null,
"vouchersPrint": []
}
8 - A partir deste ponto, é finalizada a venda na forma de pagamento informada, irá fechar o cupom e imprimir o comprovante que o parceiro poderá enviar.
Exemplo do comprovante Comprovante impresso no final da venda.
...