...
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’.
...
PARÂMETRO | TIPO | OBRIGATÓRIO | DESCRIÇÃO | ||||||||||||
Version | string | true | Versão da API | ||||||||||||
Execution | string | true | Tipo da execução cetContinue, cetInterrupt, cetFailed | ||||||||||||
Total | Double | false | Total do pagamento realizado | ||||||||||||
DiscountDoubleDiscount | Double | false | Desconto no total pago na venda | ||||||||||||
Increase | Double | false | Acréscimo no total pago na venda | ||||||||||||
PaymentNumber | Integer | true | Número da forma de pagamento | ||||||||||||
AuthorizationCode | Text(15) | true | Código de autorização do pagamento | ||||||||||||
VouchersPrint | Array of objects | false | Informações para impressão do recibo do pagamento
| ||||||||||||
Identifcation | Array of objects | false | Informações para identificação do cliente
| ||||||||||||
TransactionCanceledCode | String | false | NSU Cancelamento | ||||||||||||
InstallmentAmount | Integer | false | Quantidade de parcelas | ||||||||||||
FirstDigitCard | String | false | BIN do cartão | ||||||||||||
LastDigitCard | String | false | Últimos dígitos do cartão | ||||||||||||
FlagCard | String | false | Código da bandeira do cartão | ||||||||||||
OwnerCard | String | false | Nome do dono do cartão | ||||||||||||
ExpirationDateCard | String | false | Data de validade do cartão | ||||||||||||
IdWallet | String | false | ID da carteira digital | ||||||||||||
TypeWallet | String | false | Tipo da carteira digital | ||||||||||||
NetworkCard | String | false | Código da rede | ||||||||||||
PaymentType | String | false | Tipo do Pagamento Exemplo: mtFinalizadoraDinheiro ==> cptMoney; |
...
Os outros parâmetros são encontrados no Comando Desconto na Venda. Clique aqui e acesse a documentação.
Parametros para configurar o recurso para habilitar a forma de pagamento integrando ao parceiro,
Podemos incluir como método estas ações do parceiro, estes parametros são para quando o parceiro quiser ter o acionamento de sua própria função no PDV.
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 um 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", "DateTimeIssue": "2020-03-10T16 57 34", "userIdDocument": [591145,
"CooDocument": 527,
{
"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, {
"DiscountPrice": 0, "textIncreasePrice": "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"
"InternalCode": "4900", "ItemNumber": 1, }
"PackingQuantity": 1, ],
"partitionIncreaseQuantity": []1,
"partitionDiscountStatus": ["sttValid",
{
"TotalPrice": 4.99, "priceUnitPrice": 0,
4.99 "partnerCode": 0,
} ], "promotionCodeTotal": 511,
4.99 }, "discountAmountVersion": 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"{ 0
}
]
},
"pay": {
"totalincrease": 4.49,
0, "discount": 0.1,
"increasetotal": 0,
"paymentNumber": 29,
items"[ "authorizationCode": "FD455FKL34SS1100AXV",
{ "idWallet": "123456",
"typeWalletitemNumber": "1",
"installmentAmount": 1,
"transactionCodeunitPrice": "000080014"0,
"networkCard": "00125",
"flagCardincreasePrice": "00002"0,
"vouchersPrint": [
"packingQuantity": 0, {
"textquantity": "0, RECEBO PAGAMENTO, CONVENIO: \r\n\r\n N. 100, Vlr. Compra"totalPrice": 99,99\r\n"
0, },
"discountPrice": 0.0499, {
"textstatus": "sttValid", RECEBO PAGAMENTO, CONVENIO: \r\n\r\n N. 100, Vlr. Compra: 99,99\r\n"
"partitionDiscount"[ }
{ ],
"identification": {
"documentdiscountAmount": "11263629059",
1, "partnerCodeprice": 0.0499,
"documentType": "cdtCPF"
}
"partnerCode": 0, },
"return": {
"code": 0
},
"execution": "cetContinue",
"interpretpromotionCode": {
193 "commandType": "cctGetValue",
"messageCommand": null,
} "options": null,
"value": {
] "title": "Leitura de codigo",
} ], "subtitlepartitionDiscount":[ "Teste Pagamento",
"defaultValue": "1234567890123456789",
{ "dataTypediscountAmount": "cvtQRCode",
1, "sizeprice": 0.1,
"documentTypespartnerCode": []
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"{
"Discount": 0 949
}
]
},
"pay"{
"total": 4.99,
"discount": 0,
"increase": 0,
"paymentNumber": 1,
"IncreaseauthorizationCode": 0"FD455FKL34SS1100AXV",
"PaymentNumbervouchersPrint": 1,
[
"Total": 4.99 {
},
"Sale"{
"Discounttext": 0,
"Header"{" RECEBO PAGAMENTO, CONVENIO \r\n\r\n N. 100, Vlr. Compra 4.99\r\n"
"AccountingDate": "2020-03-10T00 00 00"},
"DateTimeIssue": "2020-03-10T16 57 34",
{
"IdDocumenttext": 591145,
" RECEBO PAGAMENTO, CONVENIO \r\n\r\n N. 100, Vlr. Compra "IdStore": 1,4.99\r\n"
"IdTerminal": 600,}
"IdUser": 2],
"Status"": sttValid"
identifcation"{
},
"IDdocument": "00160000059114511263629059",
"IncreasepartnerCode": 0,
"Items"[ "documentType": "cdtCPF"
}
},
"return"{
"code": 0
},
"BarCodeexecution": "7891000100103cetContinue",
"interpret"{
"CaptionPackingcommandType": "UNcctGetValue",
"value"{
"Descriptiontitle": "MOCALeitura de codigo",
"DiscountAmountsubtitle": 0"Teste Pagamento",
"DiscountPricedefaultValue": 0,
"IncreasePrice": 0"4E639435-32FB-4386-8777-06E458EFCF8F",
"InternalCodedataType": "4900cvtQRCode",
"ItemNumbersize": 1,4000
}
"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,
"CooDocument": 527,
"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.
...