...
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 |
Os outros parâmetros são encontrados no Comando Desconto na Venda. Clique aqui e acesse a documentação.
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"
}
],
"user": [ {
"text": "Ganhou 100 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", "IdDocument": 591145,
] "CooDocument": 527,
"IdStore": 1, },
"IdTerminal": 600, "vouchersPrintIdUser": [2, {
"Status"": sttValid" }, "ID": "001600000591145", "textIncrease": "0, CUPOM DESCONTO 1\r\n\r\n Cupom de"Items"[ 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"
"BarCode": "7891000100103", },
"CaptionPacking": "UN", "Description": "MOCA", {
"DiscountAmount": 0, "DiscountPrice": 0, "IncreasePrice": 0, "textInternalCode": "4900", 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"
"ItemNumber": 1, "PackingQuantity": 1, "Quantity": 1, }
"Status": "sttValid", "TotalPrice": 4.99, ],
"UnitPrice": 4.99 "partitionIncrease": [],
} ], "partitionDiscountTotal": [ {
4.99 }, "Version": 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"{ "increase": 0, "discount": 0.1, "pricetotal": 0,
"items"[ { "itemNumber": 1, "partnerCodeunitPrice": 0,
"increasePrice": 0, "packingQuantity": 0, "promotionCodequantity": 5110,
"totalPrice": 0, "discountPrice": 0.0499, "status": "sttValid", "discountAmount": 0
"partitionDiscount"[ { "discountAmount": 1, }
"price": 0.0499, "partnerCode": 0, ]
},
"paypromotionCode": {
193 "total": 4.49,
} ] "discount": 0,
} "increase": 0],
"partitionDiscount"[ "paymentNumber": 29,
{ "authorizationCodediscountAmount": "FD455FKL34SS1100AXV"1,
"idWalletprice": "123456",
0.1, "typeWalletpartnerCode": "1"0,
"installmentAmountpromotionCode": 1,
949 } "transactionCode": "000080014",
] }, "pay"{ "networkCardtotal": "00125",
4.99, "discount": 0, "flagCardincrease": "00002"0,
"vouchersPrintpaymentNumber": [1, {
"authorizationCode": "FD455FKL34SS1100AXV", "vouchersPrint"[ { "text": " RECEBO PAGAMENTO, CONVENIO: \r\n\r\n N. 100, Vlr. Compra: 4.99,99\r\n"
}, { "text": " RECEBO }PAGAMENTO,
CONVENIO \r\n\r\n N. 100, Vlr. Compra 4.99\r\n" } ], {
"identifcation"{ "document": "11263629059", "partnerCode": 0, "textdocumentType": "cdtCPF" RECEBO PAGAMENTO, CONVENIO: \r\n\r\n N. 100,} Vlr. Compra: 99,99\r\n"
}, "return"{ "code": 0 }, "execution": "cetContinue", "interpret"{ "commandType": "cctGetValue", }
"value"{ "title": "Leitura de codigo", "subtitle": ],
"Teste Pagamento", "identificationdefaultValue": {
"4E639435-32FB-4386-8777-06E458EFCF8F", "dataType": "cvtQRCode", "size": 4000 } "document": "11263629059",
"partnerCode": 0,
"documentType": "cdtCPF"
}
},
"return": {
"code": 0
},
"execution": "cetContinue",
"interpret": {
"commandType": "cctGetValue",
"messageCommand": null,
"options": null,
"value": {
"title": "Leitura de codigo",
"subtitle": "Teste Pagamento",
"defaultValue": "1234567890123456789",
"dataType": "cvtQRCode",
"size": 0,
"documentTypes": []
}
},
"vouchersPrint": []
}
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",
56"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",
"IdDocument"591145,
"IdStore"1,
"IdTerminal"600,
"IdUser"2,
"Status""sttValid"
},
"ID""001600000591145",
"Increase"0,
"Items"[
{
"BarCode""7891000100103",
"CaptionPacking""UN",
"Description""MOCA",
"DiscountAmount"0,
"DiscountPrice"0,
"IncreasePrice"0,
"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,
"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.
...