API de Integração PDV

Filtros


Atalhos para busca

 1. Introdução

O objetivo desta documentação é orientar o desenvolvedor sobre como integrar sua aplicação com a API PDV da Consinco através da descrição das funcionalidades, dos métodos a serem utilizados, das informações a serem enviadas e recebidas, bem como através de exemplos.

O mecanismo de integração com API é simples, de modo que apenas conhecimentos intermediários em linguagem de programação para Web, requisições HTTP ou HTTPS e manipulação de dados no formato JSON, são necessários para realizar a integração com sucesso.

Usando padrões internacionais de comunicação a API PDV foi desenvolvida no formato Rest(JSON), permitindo conectar bancos de dados e softwares desenvolvidos em diferentes linguagens.

No final desta documentação, constam exemplos de fluxo de utilização que simplificam a integração.

2. Princípios básicos

2.1 Acesso

Todas as chamadas à sua API serão feitas através do endereço de IP e Porta configuradas no Monitor de PDVs.

2.2 Autenticação

Opcionalmente, a autenticação poderá ser feita utilizando o HTTP Basic Auth, com usuário e senha configurados no Monitor de PDVs.

2.3 Arquitetura

MÉTODO DESCRIÇÃO
Request Ação executada sempre pela API PDV
Response Ação executada sempre pela API do Integrador(Parceiro)

 

3 Operação

Definem em que ciclo de operação o PDV se encontra, sendo eles:

  • Início da Venda: cotStartSale – O evento(ação) ocorrerá antes de registrar qualquer item ou qualquer identificação de pessoas.
  • Subtotal da Venda: cotSubtotalSale – O evento(ação) ocorrerá antes de iniciar o pagamento da venda.
  • Finalização da Venda: cotEndSale – O evento(ação) ocorrerá após o pagamento e fechamento do cupom.

A API PDV enviará um JSON informando em qual ciclo de operação atual o PDV se encontra, aguardando uma resposta para que alguma ação possa ser tomada de acordo com a solicitação do integrador(parceiro), ao voltar um ciclo de operação, as mensagens serão exibidas novamente, ficando a cargo do integrador, coordenar as mensagens através dos fluxos da API.

3.1 Fluxograma principal

Imagem 1

4.Comandos

4.1 Exibir mensagem

Será solicitado para a aplicação de PDV que exiba uma caixa de diálogo ao operador, podendo conter botões.

A caixa de diálogo e os botões poderão ser customizados. A seguir exemplos de como executar esta operação e os parâmetros necessários. 

PARÂMETRO TIPO OBRIGATÓRIO DESCRIÇÃO
Event string true Evento de operação que o PDV se encontra “Antes” e “Depois”
Execution string true Tipo da execução: cetContinue
ID string true Identificação única da operação/documento
Operation string true Ciclo de operação que o PDV se encontra
Version string true Versão da API
CommandType string true Tipo do comando: cctMessage
Title string false Título da caixa de diálogo
Subtitle string false Subtítulo da caixa de diálogo
Text string true Texto da caixa de diálogo
MessageType string true Tipo da mensagem apresentada

cmtInformation – Mensagen de Informação

cmtWarning – Mensagen de Alerta

cmtError – Mensagen de Erro

cmtConfirmation – Mensagen de Confirmação

cmtQRCode – Mensagem de QRCode

Buttons Array of objects false Informações dos botões apresentados

Parâmetro Tipo Descrição
Caption string Descrição do botão
Response string Resultado ao pressionar o botão
Default string Define o botão padrão

 

4.1.1 Início da venda

Com o PDV na operação “Início da venda”, a requisição da API trará o “Operation” com valor “cotStartSale”.

Request Example

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” e qual a versão da API “Version”.

{
  "Event":"cetBefore",
  "Execution":"cetContinue",
  "ID":"001003000134284",
  "Operation":"cotStartSale",
  "Version":1
}

Response Example

O integrador (parceiro) responderá para API PDV executar o comando de Exibir mensagem (neste exemplo) “commandType: cctMessage”, informando o título, subtítulo e o texto para a caixa de diálogo, será solicitado também o tipo da mensagem “messageType” e um array com dois botões, aguardando uma resposta informando qual botão foi pressionado pelo operador, “Sim : 1” e “Não : 2”. Obs (Poderão ter nenhum, um ou dois botões na caixa de diálogo).

{
"version": 1,
"execution": "cetContinue",
"interpret": {
"commandType": "cctMessage",
"messageCommand": {
"title": "Cliente fidelidade",
"subtitle": "Deseja participar?",
"text": "É um cliente fidelidade?",
"defaultButton": "Sim",
"messageType": "cmtConfirmation",
"buttons": [
{
"caption": "Sim",
"response": "1"
},
{
"caption": "Não",
"response": "2"
}
]
}
}
}

Request Example

A API PDV requisitará para o integrador(parceiro) uma nova ação à ser tomada informando qual foi a resposta obtida pela aplicação de PDV, (neste exemplo), foi pressionado o botão Sim, informado no “Response” o valor “1”.

{
"Event":"cetBefore",
"Execution":"cetContinue",
"ID":"001003000134284",
"Operation":"cotStartSale",
"Response":"1",
"Version":1
}

4.1.2 Subtotal da venda

Com o PDV na operação “Subtotal da venda”, a notificação da API trará o “Operation” com valor “cotSubtotalSale”, informará também as informações da venda e dos itens.

Request Example

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”.

Informará também os dados da venda “Sale” e dos itens “Items”.

{
"Event": "cetBefore",
"Execution": "cetContinue",
"ID": "001600000590853",
"Operation": "cotSubtotalSale",
"Sale": {
"Header": {
"AccountingDate": "2020-01-22T00:00:00",
"DateTimeIssue": "2020-01-22T14:15:36",
"IdDocument": 590853
},
"ID": "001600000590853",
"Items": [{
"CaptionPacking": "UN",
"Description": "COCA COLA",
"InternalCode": "3988",
"ItemNumber": 1,
"PackingQuantity": 1.000,
"Quantity": 5.000
}]
}
}

4.1.3 Finalização da venda

Com o PDV na operação “Finalização da venda”, a notificação da API trará o “Operation” com valor “cotEndSale”, informará também as informações da venda e dos itens.

Request Example

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”.

Informará também os dados da venda “Sale”, itens “Items” e dos pagamentos “Payments”.

{
"Event": "cetBefore",
"Execution": "cetContinue",
"ID": "001600000590853",
"Operation": "cotEndSale",
"Sale": {
"Header": {
"AccountingDate": "2020-01-22T00:00:00",
"DateTimeIssue": "2020-01-22T14:15:36"
"IdDocument": 154625,
"IdStore": 1,
"IdTerminal": 1,
"Identification": [
{
"Document": "12345678909",
"DocumentType": "cdtCPF"
}
],
},
"ID": "001600000590853",
"Items": [{
"CaptionPacking": "UN",
"Description": "COCA COLA",
"InternalCode": "3988",
"ItemNumber": 1,
"PackingQuantity": 1.000,
"Quantity": 5.000
"Status": "sttValid",
"TotalPrice": 9.89,
"UnitPrice": 1.00
}],
"PaymentChange": {
"PaymentType": "cptMoney",
"Total": 0.00
},
"Payments": [
{
"ItemNumber": 1,
"PaymentNumber": 1,
"PaymentType": "cptMoney",
"Total": 9.89
}
],
"Total": 0.000,
"VouchersPrint": [
]
},
"Version": 1
}

4.2 Menu de opções

Será solicitado para a aplicação de PDV que exiba uma caixa de diálogo ao operador contendo uma lista com as opções predefinidas, após a exibição, será devolvido ao parceiro a opção selecionada pelo operador. A seguir exemplos de como executar esta operação e os parâmetros necessários.

PARÂMETRO TIPO OBRIGATÓRIO DESCRIÇÃO
Event string true Evento de operação que o PDV se encontra “Antes” e “Depois”
Execution string true Tipo da execução: cetContinue
ID string true Identificação única da operação/documento
Operation string true Ciclo de operação que o PDV se encontra
Version string true Versão da API
CommandType string true Tipo do comando: cctGetOption
Title string false Título da caixa de diálogo
Subtitle string false Subtítulo da caixa de diálogo
Options string list true Opções para o menu
Response string list true Resultado da operação selecionada pelo operador

 

4.2.1 Início da venda

Com o PDV na operação “Início da venda”, a requisição da API trará o “Operation” com valor “cotStartSale”.

Request Example

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” e qual a versão da API “Version”.

{
"Event":"cetBefore",
"Execution":"cetContinue",
"ID":"001003000134284",
"Operation":"cotStartSale",
"Version":1
}

Response Example

O integrador (parceiro) responderá para API PDV executar o comando de Menu de opções (neste exemplo) “commandType: cctGetOptions”, informando o título e subtítulo para a caixa de diálogo e quais serão as opções e as respostas de acordo com a opção que foi selecionada pelo operador. “Cartão da loja : 1” e “Cartão clube especial : 2”.

{
"version":1,
"execution":"cetContinue",
"interpret":{
"commandType":"cctGetOption",
"options":{
"title":"Cliente fidelidade",
"subtitle":"Tipo do cartão fidelidade",
"options":[
"Cartão da loja",
"Cartão clube especial"
],
"response":[
"1",
"2"
]
}
}
}

Request Example

A API PDV requisitará para o integrador (parceiro) uma nova ação à ser tomada informando qual foi a resposta obtida pela aplicação de PDV, (neste exemplo), foi selecionado a opção “Cartão da loja”, informado no “Response” o valor “1”.

{
"Event":"cetBefore",
"Execution":"cetContinue",
"ID":"001003000134284",
"Operation":"cotStartSale",
"Response":"1",
"Version":1
}

4.2.2 Subtotal da venda

Com o PDV na operação “Subtotal da venda”, a requisição da API trará o “Operation” com valor “cotSubtotalSale”.

Request Example

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”.

Informará também os dados da venda “Sale” e dos itens “Items”.

{
"Event": "cetBefore",
"Execution": "cetContinue",
"ID": "001600000590853",
"Operation": "cotSubtotalSale",
"Sale": {
"Header": {
"AccountingDate": "2020-01-22T00:00:00",
"DateTimeIssue": "2020-01-22T14:15:36",
"IdDocument": 590853
},
"ID": "001600000590853",
"Items": [{
"CaptionPacking": "UN",
"Description": "COCA COLA",
"InternalCode": "3988",
"ItemNumber": 1,
"PackingQuantity": 1.000,
"Quantity": 5.000,
"Status": "sttValid"
}]
}
}

4.2.3 Finalização da venda

Com o PDV na operação “Finalização da venda”, a notificação da API trará o “Operation” com valor “cotEndSale”, informará também as informações da venda e dos itens.

Request Example

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”.

Informará também os dados da venda “Sale”, itens “Items” e dos pagamentos “Payments”.

{
"Event": "cetBefore",
"Execution": "cetContinue",
"ID": "001600000590853",
"Operation": "cotEndSale",
"Sale": {
"Header": {
"AccountingDate": "2020-01-22T00:00:00",
"DateTimeIssue": "2020-01-22T14:15:36"
"IdDocument": 154625,
"IdStore": 1,
"IdTerminal": 1,
"Identification": [
{
"Document": "12345678909",
"DocumentType": "cdtCPF"
}
],
},
"ID": "001600000590853",
"Items": [{
"CaptionPacking": "UN",
"Description": "COCA COLA",
"InternalCode": "3988",
"ItemNumber": 1,
"PackingQuantity": 1.000,
"Quantity": 5.000
"Status": "sttValid",
"TotalPrice": 9.89,
"UnitPrice": 1.00
}],
"PaymentChange": {
"PaymentType": "cptMoney",
"Total": 0.00
},
"Payments": [
{
"ItemNumber": 1,
"PaymentNumber": 1,
"PaymentType": "cptMoney",
"Total": 9.89
}
],
"Total": 0.000,
"VouchersPrint": [
]
},
"Version": 1
}

4.3 Obter valor

Será solicitado para a aplicação de PDV que exiba uma caixa de diálogo ao operador com um campo editável, utilizado para obter informações e enviar para a API do parceiro conforme necessidade. A seguir exemplos de como executar esta operação e os parâmetros necessários.

PARÂMETRO TIPO OBRIGATÓRIO DESCRIÇÃO
Event string true Evento de operação que o PDV se encontra “Antes” e “Depois”
Execution string true Tipo da execução: cetContinue
ID string true Identificação única da operação/documento
Operation string true Ciclo de operação que o PDV se encontra
Version string true Versão da API
CommandType string true Tipo do comando: cctGetValue
Title string false Título da caixa de diálogo
Subtitle string false Subtítulo da caixa de diálogo
DataType string true  

Tipo de dado informado

cvtString

cvtNumber

cvtDate

cvtTime

cvtQRCode

cvtPersonalDocument

cvtPhoneNumber

 

Size integer true Tamanho do documento para tipos “String” e “Number”, demais tipos recebem o valor “0”
DocumentType String List true  

Tipo do documento

cdtIDInternal

cdtCPF

cdtCNPJ

cdtIDForeign

 

4.3.1 Início da venda

Com o PDV na operação “Início da venda”, a requisição da API trará o “Operation” com valor “cotStartSale”.

Request Example

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” e qual a versão da API “Version”.

{
"Event":"cetBefore",
"Execution":"cetContinue",
"ID":"001003000134284",
"Operation":"cotStartSale",
"Version":1
}

Response Example

O integrador (parceiro) responderá para API PDV executar o comando de Obter valor (neste exemplo) “commandType: cctGetValue”, informando o título e subtítulo para a caixa de diálogo, o tipo do documento e tamanho do dado que será capturado, neste caso um CPF.

{
"version":1,
"execution":"cetContinue",
"interpret":
{
"commandType":"cctGetValue",
"value":
{
"title":"Cliente fidelidade",
"subtitle":"Informe o CPF",
"dataType":"cvtPersonalDocument",
"documentTypes":
[
"cdtCPF"
]
}
}
}

Request Example

A API PDV requisitará para o integrador (parceiro) uma nova ação à ser tomada informando qual foi a resposta obtida pela aplicação de PDV, (neste exemplo), foi informado o número do CPF no “Response” o valor “12345678909”.

{
"Event":"cetBefore",
"Execution":"cetContinue",
"ID":"001003000134284",
"Operation":"cotStartSale",
"Response":"12345678909",
"Version":1
}

4.3.2 Subtotal da venda

Com o PDV na operação “Subtotal da venda”, a requisição da API trará o “Operation” com valor “cotSubtotalSale”.

Request Example

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”.

Informará também os dados da venda “Sale” e dos itens “Items”.

{
"Event": "cetBefore",
"Execution": "cetContinue",
"ID": "001600000590853",
"Operation": "cotSubtotalSale",
"Sale": {
"Header": {
"AccountingDate": "2020-01-22T00:00:00",
"DateTimeIssue": "2020-01-22T14:15:36"
},
"ID": "001600000590853",
"Items": [{
"CaptionPacking": "UN",
"Description": "COCA COLA",
"InternalCode": "3988",
"ItemNumber": 1,
"PackingQuantity": 1.000,
"Quantity": 5.000
}]}
}

4.3.3 Finalização da venda

Com o PDV na operação “Finalização da venda”, a notificação da API trará o “Operation” com valor “cotEndSale”, informará também as informações da venda e dos itens.

Request Example

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”.

Informará também os dados da venda “Sale”, itens “Items” e dos pagamentos “Payments”.

{
"Event": "cetBefore",
"Execution": "cetContinue",
"ID": "001600000590853",
"Operation": "cotEndSale",
"Sale": {
"Header": {
"AccountingDate": "2020-01-22T00:00:00",
"DateTimeIssue": "2020-01-22T14:15:36"
"IdDocument": 154625,
"IdStore": 1,
"IdTerminal": 1,
"Identification": [
{
"Document": "28142095823",
"DocumentType": "cdtCPF"
}
],
},
"ID": "001600000590853",
"Items": [{
"CaptionPacking": "UN",
"Description": "COCA COLA",
"InternalCode": "3988",
"ItemNumber": 1,
"PackingQuantity": 1.000,
"Quantity": 5.000
"Status": "sttValid",
"TotalPrice": 9.89,
"UnitPrice": 1.00
}],
"PaymentChange": {
"PaymentType": "cptMoney",
"Total": 0.00
},
"Payments": [
{
"ItemNumber": 1,
"PaymentNumber": 1,
"PaymentType": "cptMoney",
"Total": 9.89
}
],
"Total": 0.000,
"VouchersPrint": [
]
},
"Version": 1
}

4.4 Desconto na venda

Permite que o PDV aplique descontos na venda atual. O parceiro receberá o JSON com as informações da venda, devendo colocar o desconto nos itens, para retornar as informações ao PDV.

O parceiro pode configurar uma mensagem caso necessário, por exemplo, informando quanto de desconto o cliente ganhou ou quantos pontos ele ganhou com a compra.

O PDV precisa estar com a operação de Subtotal da venda, na operação de Início da venda e Finalização da venda não serão aplicados descontos.

O desconto poderá ser recebido mais de uma vez, quando o fluxo voltar para o PDV solicitando um novo desconto. A seguir exemplos de como executar esta operação.

PARÂMETRO TIPO OBRIGATÓRIO DESCRIÇÃO
Increase double true Acréscimo na venda
Discount double true Desconto na venda
Total double true Total da venda
ItemNumber double true Número do item
UnitPrice double true Preço unitário
IncreasePrice double true Acréscimo no item
PackingQuantity double true Quantidade itens por embalagem
Quantity double true Quantidade de itens
TotalPrice double true Preço total do item
DiscountPrice double true Desconto no item
DiscountAmount double true Quantidade de desconto
Status string true Status do item
Text string true Texto da mensagem customizada

 

Response Example

O desconto pode ser aplicado no total da venda ou em itens da venda.

Exemplo com desconto na venda:

{
“version”: 1,
“sale”: {
“discount”: 10,
“messages”: {
“customer”: [{
“text”: “Ganhou desconto 10% nessa compra”
}],
“user”: [
{
“text”: “Ganhou desconto 10% nessa compra”
}]
}
}
}

Exemplo com desconto em item na venda:

{
"version": 1,
"sale": {
"items": [{
"itemNumber": 1,
"discountPrice": 0.249,
"discountAmount": 1,
}],
"messages": {
"customer": [{
"text": "Ganhou desconto 10% nessa compra"
}],
"user": [
{
"text": "Ganhou desconto 10% nessa compra"
}]
}
}
}

4.5 Cupom desconto da venda

Permite que o PDV imprima informações no comprovante da venda atual, como cupons de descontos e pontos na próxima compra.

Os comprovantes da venda serão sobrepostos sempre que mandar um novo comprovante para a aplicação, comprovantes que podem chegar com o PDV na operação subtotal e finalizar venda. A seguir exemplos de como executar esta operação.

PARÂMETRO TIPO OBRIGATÓRIO DESCRIÇÃO
Text string true Texto que será exibido nos cupons impressos no final da compra

Obs.: Os outros parâmetros são encontrados no item 4.4. 

Tags de impressã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:

  • [ImpExpandidoUmaLinha] – Início da impressão de texto estendido
  • [ImpFimExpandido] – Fim da impressão de texto estendido
  • [ImpNegrito] – Fim da impressão em negrito
  • [ImpFimNegrito] – Início da impressão em negrito
  • [ImpBarra] – Início da impressão de código de barras
  • [ImpFimBarra] – Fim da impressão de código de barras

Response Example

{
"version": 1,
"sale": {
"items": [{
"itemNumber": 1,
"discountPrice": 8.59,
"discountAmount": 1}],
},
"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]1234567891231[ImpFimBarra]"
},
{
"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]1234567891231[ImpFimBarra]"
}] }
}
}

4.6 Interromper

Solicitar para API que o fluxo seja interrompido. A seguir exemplos de como executar esta operação.

PARÂMETRO TIPO OBRIGATÓRIO DESCRIÇÃO
Code string true Código de retorno
messageText string true Texto da mensagem
Execution string true cetInterrupt

Response Example

O integrador (parceiro) responderá para API PDV executar o comando de Interromper (nesse exemplo), “execution”:”cetInterrupt” solicitando a interrupção do fluxo, passando o código e texto da mensagem.

{
"version": 1,
"execution": "cetInterrupt"
}

4.7 Falhar

Informar para API que houve falha no fluxo. A seguir exemplos de como executar esta operação.

PARÂMETRO TIPO OBRIGATÓRIO DESCRIÇÃO
Code string true Código de retorno
messageText string true Texto da mensagem
Execution string true cetFailed

Response Example

O integrador (parceiro) responderá para API PDV executar o comando de Falhado (nesse exemplo), “execution”:”cetFailed” informando que houve falha durante o fluxo, passando o código e texto da mensagem.

{
"version": 1,
"return":
{
"code": -1,
"messageText": "Connection failed"
},
"execution": "cetFailed"
}

4.8 Completado

Informar para API que o fluxo foi completado. A seguir exemplos de como executar esta operação.

PARÂMETRO TIPO OBRIGATÓRIO DESCRIÇÃO
Code string true Código de retorno
messageText string true Texto da mensagem
Execution string true cetCompleted

 

Response Example

O integrador (parceiro) responderá para API PDV executar o comando de Completado (nesse exemplo), “execution”:”cetCompleted” informando que o fluxo foi encerrado, passando o código e texto da mensagem.

{
"version": 1,
"execution": "cetCompleted"
}

5. Exemplos com fluxos

Exemplos de fluxo de utilização que simplificam a integração.

5.1 Exemplo fluxo completo

 Início da venda no PDV, foi inserido um produto e teclado Enter.

Imagem 2

JSON enviado ao parceiro:

{
"Event": "cetBefore",
"Execution": “cetContinue",
"ID": "001600000590894",
"Operation": "cotStartSale",
"Version": 1
}

Tela apresentada ao operador: 

Imagem 3

JSON retornado pelo parceiro:

{
"version": 1,
"execution": "cetContinue",
"interpret": {
"commandType": "cctMessage",
"messageCommand": {
"title": "Cliente fidelidade",
"text": "É um cliente fidelidade?",
"defaultButton": "Sim",
"messageType": "cmtConfirmation",
"buttons": [ {
"caption": "Sim",
"response": "1"
},
{
"caption": "Não",
"response": "2"
}
]}}
}

Operador do PDV seleciona uma opção, neste caso foi selecionado “Sim”:

Imagem 4

JSON enviado ao parceiro:

{
"Event": "cetBefore",
"Execution": "cetContinue",
"ID": "001600000590894",
"Operation": "cotStartSale",
"Response": "1",
"Version": 1
}

Tela apresentada ao operador:

Imagem 5

JSON retornado pelo parceiro:

{
"version": 1,
"execution": "cetContinue",
"interpret": {
"commandType": "cctGetOption",
"options": {
"title": "Cliente fidelidade",
"subtitle": "Cartão fidelidade",
"options": [
"Cartão da loja",
"Cartão clube especial",
"Cartão vantagens"
],
"response": [
"1",
"2",
"3"
]}
}

Operador do PDV seleciona uma opção, neste caso foi selecionado “01 – Cartão da loja”:

Imagem 6

JSON enviado ao parceiro:

{
"Event": "cetBefore",
"Execution": "cetContinue",
"ID": "001600000590899",
"Operation": "cotStartSale",
"Response": "1",
"Version": 1
}

Tela apresentada ao operador:

Imagem 7

JSON retornado pelo parceiro:

{
"version": 1,
"execution": "cetContinue",
"interpret": {
"commandType": "cctGetValue",
"value": {
"title": "Cliente fidelidade",
"subtitle": "Informe o CPF",
"dataType": "cvtPersonalDocument",
"documentTypes": [
"cdtCPF",
"cdtCNPJ"
]
}
}
}

Operador preencherá a informação solicitada:

Imagem 8

JSON enviado para o Parceiro:

{
"Event": "cetBefore",
"Execution": "cetContinue",
"ID": "001600000590894",
"Operation": "cotStartSale",
"Response": "12345678909",
"Version": 1
}

Tela do operador após completar o processo:

Imagem 9

JSON enviado pelo parceiro para informar ao PDV que o processo foi completado:

{
"version": 1,
"execution": "cetCompleted",
}

5.2 Exemplo fluxo Interromper

Início da venda no PDV, foi inserido um produto e teclado Enter.

Imagem 10

JSON enviado ao parceiro:

{
"Event": "cetBefore",
"Execution": “cetContinue",
"ID": "001600000590901",
"Operation": "cotStartSale",
"Version": 1
}

Tela apresentada ao operador:

Imagem 11

 JSON retornado pelo parceiro:

{
Tela apresentada ao operador:
"version": 1,
"execution": "cetContinue",
"interpret": {
"commandType": "cctGetOption",
"options": {
"title": "Cliente fidelidade",
"subtitle": "Cartão fidelidade",
"options": [
"Cartão da loja",
"Cartão clube especial",
"Cartão vantagens"
],
"response": [
"1",
"2",
"3"
]}
}}

Operador do PDV pressiona a tecla “ESC” ou fecha a caixa de diálogo no “X”:

Imagem 12

 JSON enviado ao parceiro:

{
"Event": "cetBefore",
"Execution": "cetInterrupt",
"ID": "001600000590901",
"Operation": "cotStartSale",
"Version": 1
}

Tela do operador após interromper o processo:

Imagem 13

JSON enviado pelo parceiro para informar ao PDV que o processo foi interrompido:

{
"version": 1,
"execution": "cetInterrupt"
}

5.3 Exemplo fluxo Falhar

Início da venda no PDV, foi inserido um produto e teclado Enter.

Imagem 14

JSON enviado ao parceiro:

{
"Event": "cetBefore",
"Execution": “cetContinue",
"ID": "001600000590913",
"Operation": "cotStartSale",
"Version": 1
}

Tela apresentada ao operador:

Imagem 15

JSON retornado pelo parceiro:

{                                                                                              
"version": 1,
"execution": "cetContinue",
"interpret": {
"commandType": "cctMessage",
"messageCommand": {
"title": "Cliente fidelidade",
"text": "É um cliente fidelidade?",
"defaultButton": "Sim",
"messageType": "cmtConfirmation",
"buttons": [ {
"caption": "Sim",
"response": "1"
},
{
"caption": "Não",
"response": "2"
}
]}
}
}

Operador do PDV seleciona uma opção, neste caso foi selecionado “Sim”:

Imagem 16

JSON enviado ao parceiro:

{
“Event”: “cetBefore”,
“Execution”: “cetContinue”,
“ID”: “001600000590913”,
“Operation”: “cotStartSale”,
“Response”: “1”,
“Version”: 1
}

JSON enviado pelo parceiro para informar ao PDV que ocorreu falha durante o processo:

{
"version": 1,
"return": {
"code": -1,
"messageText": "Operação falhou"
},
"execution": "cetFailed"
}

Tela do operador após falha do processo:

Imagem 17

 

5.4 Exemplo fluxo Desconto e Cupom desconto

Início da venda no PDV, foi inserido um produto e teclado Enter. Após todos os produtos inseridos foi acionado a função para ir ao Subtotal da venda:

Imagem 18

JSON enviado ao parceiro:

{
"Event": "cetBefore",
"Execution": "cetContinue",
"ID": "001600000590921",
"Operation": "cotSubtotalSale",
"Sale": {
"Header": {
"AccountingDate": "2020-01-22T00:00:00",
"DateTimeIssue": "2020-01-22T14:15:36",
"IdDocument": 590921,
"Identification": [
{
"Document": "28142095823",
"DocumentType": "cdtCPF"
}],
},
"ID": "001600000590921",
"Items": [{
"CaptionPacking": "UN",
"Description": "COCA COLA",
"InternalCode": "3988",
"ItemNumber": 1,
"PackingQuantity": 1.000,
"Quantity": 5.000,
}]
}
}

JSON retornado pelo parceiro com uma mensagem para o operador do PDV, nesse caso informa que o cliente ganhou 100 pontos na compra:

{
"version": 1,
"sale": {
"items": [{
"itemNumber": 1,
"discountPrice": 0.499,
"discountAmount": 1}],
"messages": {
"customer": [{
"text": "Ganhou desconto 100 nessa compra"
}],
"user": [{
"text": "Ganhou desconto 100 nessa compra"
}]
},
"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]1234567891231[ImpFimBarra]"
},
{
"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]1234567891231[ImpFimBarra]"
}] },
"execution": "cetContinue",
"interpret": {
"commandType": "cctMessage",
"messageCommand": {
"title": "Cliente fidelidade",
"text": "É um cliente fidelidade?",
"defaultButton": "Sim",
"messageType": "cmtConfirmation",
"buttons": [{
"caption": "Sim",
"response": "1"
},
{
"caption": "Não",
"response": "2"
}
]}
}
}

Tela apresentada ao operador:

Imagem 19

Após finalização da venda conforme tela abaixo, será impresso o comprovante onde constará os cupons de desconto impressos:

Imagem 20

Exemplo de texto impresso no cupom:

Imagem 21
Este artigo foi útil para você?
Sim
Não
Confirmar que o artigo não foi útil