...
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"
}
]
},
"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": 511,
{ "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, "IdUser": 2, "Status"": sttValid" }, "ID": "001600000591145", "Increase": 0, "Items"[ { "discountAmountBarCode": 0
"7891000100103", }
"CaptionPacking": "UN", ]
},
"payDescription": {
"MOCA", "total": 4.49,
"discountDiscountAmount": 0,
"increaseDiscountPrice": 0,
"paymentNumberIncreasePrice": 290,
"authorizationCode": "FD455FKL34SS1100AXV",
"idWalletInternalCode": "1234564900",
"typeWallet": "1",
"installmentAmountItemNumber": 1,
"transactionCode": "000080014",
"networkCardPackingQuantity": "00125"1,
"flagCard": "00002",
"vouchersPrintQuantity": [
1, {
"text"Status": "sttValid", RECEBO PAGAMENTO, CONVENIO: \r\n\r\n N. 100, Vlr. Compra"TotalPrice": 4.99,99\r\n"
},
"UnitPrice": 4.99 {
} "text": " RECEBO PAGAMENTO, CONVENIO: \r\n\r\n N. 100, Vlr. Compra: 99,99\r\n"
}
],
"identification": {
"document": "11263629059",
], "Total": 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"{ "partnerCodeincrease": 0,
"documentTypediscount": "cdtCPF"
0.1, }
},
"returntotal": {
0, "codeitems":[ 0
},
"execution": "cetContinue",
"interpret": {
"commandType": "cctGetValue",
"messageCommanditemNumber": null1,
"options": null,
"valueunitPrice": {
0, "titleincreasePrice": "Leitura0, de codigo",
"subtitlepackingQuantity": "Teste Pagamento",
0, "defaultValuequantity": "1234567890123456789",
0, "dataTypetotalPrice": "cvtQRCode",
0, "sizediscountPrice": 0.0499,
"documentTypesstatus": []
"sttValid", }
},
"vouchersPrintpartitionDiscount": []
}
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"{
[
{
"discountAmount": 1,
"price": 0.0499,
"DiscountpartnerCode": 0,
"Increase": 0,
"PaymentNumberpromotionCode": 1,193
"Total": 4.99
},
"Sale"{}
"Discount": 0,
]
"Header"{
}
"AccountingDate": "2020-03-10T00 00 00"],
"partitionDiscount"[
"DateTimeIssue": "2020-03-10T16 57 34",{
"IdDocumentdiscountAmount": 5911451,
"IdStoreprice": 0.1,
"IdTerminalpartnerCode": 6000,
"IdUserpromotionCode": 2,949
"Status"": sttValid"}
]
},
"pay"{
"IDtotal": "001600000591145"4.99,
"Increasediscount": 0,
"Items"[increase": 0,
{
"paymentNumber": 1,
"BarCodeauthorizationCode": "7891000100103FD455FKL34SS1100AXV",
"CaptionPacking": "UN",vouchersPrint"[
"Description": "MOCA",{
"DiscountAmounttext": 0,
" RECEBO PAGAMENTO, CONVENIO \r\n\r\n N. 100, Vlr. Compra "DiscountPrice": 0,4.99\r\n"
"IncreasePrice": 0},
"InternalCode": "4900",{
"ItemNumbertext": 1,
" RECEBO PAGAMENTO, CONVENIO \r\n\r\n N. 100, Vlr. Compra "PackingQuantity": 1,4.99\r\n"
}
],
"Quantity": 1,identifcation"{
"Statusdocument": "sttValid11263629059",
"TotalPricepartnerCode": 4.990,
"UnitPricedocumentType": 4.99
"cdtCPF"
}
},
],"return"{
"Totalcode": 4.990
},
"Versionexecution": 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"cetContinue", "saleinterpret"{ "increasecommandType": 0"cctGetValue", "discount": 0.1, value"{ "totaltitle": 0 "Leitura de codigo", "items"[ "subtitle": {"Teste Pagamento", "itemNumberdefaultValue": 1"4E639435-32FB-4386-8777-06E458EFCF8F", "unitPricedataType": 0"cvtQRCode", "increasePricesize": 0,4000 } "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.
...