Skip to content

Callbacks

Callbacks


Aqui você encontrará mais detalhes sobre as callbacks e imagens de exemplo para ilustrar o funcionamento

Display Terminal

void DisplayTerminal(char *pMensagem)

Apresenta a mensagem solicitada pelo Client, no parâmetro pMensagem. Esta função apresenta mensagens gerais do fluxo da execução, como por exemplo “INSIRA OU PASSE O CARTAO”, “AGUARDE...”, “SOLICITANDO AUTORIZACAO” etc.

Parâmetro solicitação Formato Descrição
pMensagem A Mensagem a ser apresentada no display do PDV

Retorno: esta função não possui retorno.

Image title

Exemplo de tela implementada, Display terminal

Display Erro

void DisplayErro(char *pMensagem)

Função utilizada para apresentar uma mensagem de erro no display, como por exemplo “CARTÃO INVÁLIDO”, “TENTE NOVAMENTE” entre outras. Se for um display gráfico, pode ser apresentado em vermelho para indicar a situação de erro. Em geral, é utilizado o mesmo local de apresentação da função Display Terminal, variando apenas a cor para indicar o erro. Isso entretanto pode ser desenvolvido da forma que melhor se adequar para a automação.

Parâmetro solicitação Formato Descrição
pMensagem A Mensagem de erro a ser apresentada no display do PDV

Retorno: esta função não possui retorno.

Image title

Exemplo de tela implementada, Display erro

Mensagem

void Mensagem(char *pMensagem)

Função utilizada para apresentar uma mensagem informativa na tela. É utilizada em algumas situações no fluxo das transações para apresentar dados ao usuário como por exemplo o valor da transação, alguma opção que foi recentemente selecionada ou ainda em alguns casos uma mensagem retornada pela rede autorizadora.

Parâmetro solicitação Formato Descrição
pMensagem A Mensagem a ser apresentada na tela

Retorno: esta função não possui retorno.

Image title

Exemplo de tela implementada, Mensagem de retorno display

Beep

void Beep()

Comando enviado para o PDV para que este emita um sinal sonoro. O comando não possui nenhum parâmetro.

Retorno: esta função não necessita de resposta

Entra Cartão

int FormEntraCartao(char *pLabel, char *pCartao)

Comando para permitir que o operador digite o número do cartão.

Campo solicitação Formato Descrição
pLabel A Mensagem a ser apresentada (em geral, é “DIGITE O NÚMERO CARTÃO”)
Campo de Retorno Formato Descrição
pCartao A Número do cartão digitado pelo operador

Retorno:

Retorno Descrição
0 O operador digitou o número do cartão
-1 A operação foi cancelada e o operador não conclui a digitação do número do cartão

Observações:
• Neste campo, deverá ser permitido apenas a entrada de caracteres numéricos
• O tamanho máximo permitido para digitação será de 19 dígitos
• Deverá ser tomado o cuidado para que as informações de digitação do número do cartão não sejam armazenadas de forma aberta e/ou completa em nenhum local. As regras de segurança definidas pelo PCI não permitem o registro dos números de cartão.

Image title

Exemplo de tela implementada, Entrada de Cartão

Entra Código de Barras

int EntraCodigoBarras(char *pLabel, char *pCodigoBarras) 

Comando para permitir que o operador digite o código de barras do documento. A digitação pode ser feita em 4 blocos de 12 dígitos, contendo os dígitos verificadores. O resultado é a concatenação de todos os caracteres digitados. Esta função deverá fazer as validações referentes ao pagamento de contas convênio, utilizada na transação de pagamento de contas da Cielo.

Campo solicitação Formato Descrição
pLabel A Mensagem a ser apresentada
Campo de Retorno Formato Descrição
pCodigoBarras A Código de barras digitado pelo operador

Retorno:

Retorno Descrição
0 O operador digitou o número do cartão
-1 A operação foi cancelada e o operador não conclui a digitação
-2 O código de barras é inválido (os dígitos verificadores não estão corretos)
-3 A operação não é permitida (o primeiro dígito não é “8” – a transação de Pagamento de Contas Visanet permite somente pagamento de convênios, ou seja, códigos que começam com “8”)

Observações:
• a implementação desta função é necessária somente se for utilizada a transação TransacaoPagamentoContasVisanet

Entra Código de Barras Lido

int EntraCodigoBarrasLido(char *pLabel, char *pCodigoBarrasLido) 

Comando para permitir que o operador passe o código de barras do documento no leitor. O resultado é a concatenação de todos os caracteres digitados. Esta função deverá fazer as validações referentes ao pagamento de contas convênio, utilizada na transação de pagamento de contas da Visanet.

Campo solicitação Formato Descrição
pLabel A Mensagem a ser apresentada
Campo de Retorno Formato Descrição
pCodigoBarrasLido A Código de barras obtido através do leitor.

Retorno:

Retorno Descrição
0 O operador digitou o número do cartão
-1 A operação foi cancelada e o operador não conclui a digitação
-2 O código de barras é inválido (os dígitos verificadores não estão corretos)
-3 A operação não é permitida (o primeiro dígito não é “8” – a transação de Pagamento de Contas Visanet permite somente pagamento de convênios, ou seja, códigos que começam com “8”)

Observações:
• a implementação desta função é necessária somente se for utilizada a transação TransacaoPagamentoContasVisanet

Entra Data de Validade

int EntraDataValidade(char *pLabel, char *pDataValidade) 

Comando para que o operador digite a data de validade do cartão no formato MMAA. Na tela, pode ser apresentado como MM/AA, mas no retorno a resposta não deverá conter os caracteres separadores.

Campo solicitação Formato Descrição
pLabel A Mensagem a ser apresentada
Campo de Retorno Formato Descrição
pDataValidade A Data de validade do cartão, no formato MMAA

Retorno:

Retorno Descrição
0 A Data de validade foi digitada
-1 A operação foi cancelada

Observações:
• deverá ser tomado o cuidado para que as informações da data de validade do cartão não sejam armazenadas de forma aberta e/ou completa em nenhum local. As regras de segurança definidas pelo PCI não permitem o registro dessas informações.

Image title

Exemplo de tela implementada, Display entrada de data de validade

Entra Data

int EntraData(char *pLabel, char *pData) 

Comando para que o operador digite a data de validade do cartão no formato DDMMAA. Na tela, pode ser apresentado como DD/MM/AA, mas no retorno a resposta não deverá conter os caracteres separadores.

Campo solicitação Formato Descrição
pLabel A Mensagem a ser apresentada
Campo de Retorno Formato Descrição
pData DD/MM/AA Data no formato DD/MM/AA. Caso o usuário não tenha digitado nenhuma data (o usuário escolheu seguir em frente sem digitar), este campo deverá conter o valor “ / / “, ou seja, espaços mas com os caracteres separadores

Retorno:

Retorno Descrição
0 O usuário pressionou enter, mesmo que a data não tenha sido digitada. Se a data não for digitada, o campo com a data de retorno deverá voltar com espaços e os caracteres separadores (“ / / “)
-1 A operação foi cancelada

Observações:
• deverá ser tomado o cuidado para que as informações da data de validade do cartão não sejam armazenadas de forma aberta e/ou completa em nenhum local. As regras de segurança definidas pelo PCI não permitem o registro dessas informações.

Image title

Exemplo de tela implementada, Entrada de Data

Entra Código de Segurança

int EntraCodigoSeguranca(char *pLabel, char *pCodigoSeguranca, int iTamanhoMaximo) 

Comando para que o operador digite o código de segurança do cartão. O número mínimo de caracteres permitido é 3 e o máximo é passado na função.

Campo solicitação Formato Descrição
pLabel A Mensagem a ser apresentada
iTamanhoMaximo N Tamanho máximo permitido na digitação do código de segurança
Campo de Retorno Formato Descrição
pCodigoSeguranca A Código de Segurança digitado pelo operador

Retorno:

Retorno Descrição
0 O usuário digitou um código de segurança
-1 A operação foi cancelada

Observações:
• o campo pCodigoSeguranca deverá ser tratado também como parâmetro de solicitação. Assim, se algum valor estiver preenchido nesse campo, ele deverá ser apresentado no momento da chamada. O objetivo deste tratamento é apresentar o CVV2 na situação em que ele deva ser redigitado.• deverá ser tomado o cuidado para que as informações de digitação do código de segurança não sejam armazenadas de forma aberta e/ou completa em nenhum local. Esse registro é proibido pelas regras de segurança definidas pelo PCI.

Image title

Exemplo de tela implementada, Entrada de CVV

Seleciona Opção

int SelecionaOpcao(char *pLabel, char *pOpcoes, int *iOpcaoSelecionada) 

Comando para que seja apresentado ao operador um menu de opções e que assim seja selecionada uma dessas opções.

Campo solicitação Formato Descrição
pLabel A Mensagem a ser apresentada
pOpcoes N Opções a serem exibidas.
As opções estão no seguinte formato: (X, AAAA), onde X é o caracter numérico que se digitado seleciona a opção e AAAA é a string a ser exibida no menu. Caso haja mais de uma opção, elas deverão ser separadas pelo caracter “#”.
Exemplo: (1,"1-ILEGIVEL")#(5,"5-NAO POSSUI") - neste caso, são apresentadas na tela as opções “1-ILEGIVEL” e “5-NÃO POSSUI”. Se o operador digitar “5”, a função deverá retornar “2”, que é o índice da opção selecionada.
Campo de Retorno Formato Descrição
pOpcaoSelecionada N Indice da opção selecionada. Na chamada, pode ser definido um valor default para a seleção. Assim, se vier um valor neste campo, deverá ser pré-selecionada a opção escolhida. A primeira opção tem o índice 1.

Retorno:

Retorno Descrição
0 Uma opção foi selecionada
-1 A operação foi cancelada

Image title

Exemplo de tela implementada, Display Seleção de opção AV,FL,FA

Entra Valor

int EntraValor(char *pLabel, char *pValor, char *pValorMinimo, char *pValorMaximo) 

Comando para que o operador entre com um valor numérico monetário, com 2 casas decimais.

Campo solicitação Formato Descrição
pLabel A Mensagem a ser apresentada
pValorMinimo 12 N Valor mínimo aceito para o campo
pValorMaximo 12 N Valor máximo aceito para o campo
Campo de Retorno Formato Descrição
pValor 12 N Valor digitado pelo operador. O campo deverá ter 2 casas decimais, sem separador.
Por exemplo, 000000001234 equivale a R$ 12,34.
Se na chamada este campo tiver um valor, ele deverá ser apresentado como o valor default

Retorno:

Retorno Descrição
0 O operador digitou o valor
-1 A operação foi cancelada

Image title

Exemplo de tela implementada, Display entrada de valor da transação

Entra Número

int EntraNumero(char *pLabel, char *pNumero, char *pNumeroMinimo, char *pNumeroMaximo, int iMinimoDigitos, int iMaximoDigitos, int iDigitosExatos) 

Comando para que o operador entre com um valor numérico monetário, com 2 casas decimais.

Campo solicitação Formato Descrição
pLabel A Mensagem a ser apresentada
pValorMinimo N Valor mínimo aceito para o campo
pValorMaximo N Valor máximo aceito para o campo
iMinimoDigitos N Número minimo de digitos que o valor deverá possuir
iMaximoDigitos N Número máximo de dígitos permitido
pValorMaximo N Número de dígitos que o número deverá ter
iDigitosExatos N Se diferente de zero, considerar a quantidade de digitos exatos a serem coletados
Campo de Retorno Formato Descrição
pValor N Valor digitado pelo operador. Se na chamada este campo tiver um valor,
ele deverá ser apresentado como o valor default

Retorno:

Retorno Descrição
0 O operador digitou o número
-1 A operação foi cancelada

Image title

Exemplo de tela implementada, Display entrada de NSU

Entra String

int EntraString(char *pLabel, char *pString, char *pTamanhoMaximo) 

Comando para que o operador entre com uma string qualquer.

Campo solicitação Formato Descrição
pLabel A Mensagem a ser apresentada
pTamanhoMaximo N Tamanho máximo da string em caracteres
Campo de Retorno Formato Descrição
pString A String digitada pelo usuário. Se na solicitação for informado um valor neste campo,
ele deverá ser exibido como valor default.

Retorno:

Retorno Descrição
0 O operador digitou a string
-1 A operação foi cancelada

MensagemAdicional

int MensagemAdicional(char *pMensagemAdicional) 

Apresenta a mensagem adicional enviada pelo concentrador TEF.

Campo solicitação Formato Descrição
pMensagemAdicional A Mensagem adicional a ser apresentada no display do PDV.
Esta função é utilizada para complementar operações, como por exemplo apresentar a descrição do produto selecionado durante a execução do fluxo da transação Visanet.

Retorno: O retorno desta função deverá ser 0.

Imagem Adicional

int ImagemAdicional(int iIndiceImagem) 

Apresenta uma imagem ou informação relacionada à rede selecionada pelo Linx TEF durante a transação. Apesar do nome da função fazer referência à apresentação de uma imagem, ela pode ser utilizada para apresentar somente o nome da rede autorizadora Esta função tem objetivo apenas informativo. Se não for implementada, não afetará o fluxo das transações.

Campo solicitação Formato Descrição
iImagemAdicional A Código da rede autorizadora que está tratando a transação em questão. O valor -1 indica que deve ser removida a imagem ou apagada a mensagem .

Retorno: O retorno desta função deverá ser 0.

Consulta AVS

int ConsultaAVS(char *cEndereco, char *cNumero, char *cApto, char *cBloco, char *cCEP, char  *cBairro, char *cCPF) 

Comando para que o operador entre com os dados da consulta AVS (transação de verificação de endereço).

Campo solicitação Formato Descrição
Endereço 96 A Endereço coletado
Numero 16 A Número
Apto 8 A Apartamento
Bloco 32 A Descrição do bloco
CEP 8 N Número do CEP
Bairro 32 A Descrição do bairro
CPF 11 N Número do CPF

Retorno:

Retorno Descrição
0 O operador digitou os dados
-1 A operação foi cancelada

Mensagem Alerta

void MensagemAlerta(char *pMensagemAlerta) 

Apresenta uma mensagem de alerta enviada pelo concentrador TEF ao PDV. Não necessita de resposta, mas deverá esperar a confirmação da leitura pelo operador.

Campo solicitação Formato Descrição
pMensagemAlerta A Mensagem de alerta a ser apresentada ao operador do PDV.
A diferença com relação a outras mensagens é que esta deverá aguardar a confirmação da leitura do operador.

Retorno: O retorno desta função deverá ser 0.

Observações:
• Atualmente, esta função é utilizada no momento de se desfazer uma transação, onde é apresentada uma mensagem indicando que a transação foi desfeita e o cupom deve ser retido. Por ser uma situação importante, é necessária a confirmação de leitura pelo operador.

Preview Comprovante

void PreviewComprovante(char *pComprovante) 

Apresenta um comprovante na tela. Isto acontece principalmente em transações de simulação de planos de pagamento, onde é feita apenas uma apresentação do resultado na tela, sem impressão do comprovante na impressora.

Campo solicitação Formato Descrição
pComprovante A Comprovante a ser exibido na tela.

Retorno:esta função não necessita de resposta, mas deverá aguardar a leitura dos dados por parte do operador, ou seja, deverá aguardar que o usuário tome alguma ação (pressione uma tecla, por exemplo).

Operação Cancelada

int OperacaoCancelada(void) 

Retorna se a operação foi cancelada pelo operador. Esta função é chamada principalmente em operações com o pinpad, como por exemplo a passagem do cartão. Como essa passagem pode ser cancelada através da automação, se houver essa opção na automação e o usuário acioná-la enquanto o cartão estiver sendo lido, a operação será cancelada pelo client.

Retorno: esta função não necessita de resposta.

Observações:
• Essa função é chamada múltiplas vezes durante a transação, principalmente durante a leitura de cartões. Quando a função retorna 1, o pinpad para a leitura e o Paykit chama a função seguinte conforme o fluxo.

Seta Operação Cancelada

int SetaOperacaoCancelada(int iCancelada) 

Indica qual o valor que a função OperacaoCancelada deve inicializar. Se, por exemplo, a função OperacaoCancelada está indicando que a operação foi cancelada e a função SetaOperacaoCancelada for chamada com o valor 1, então a função OperacaoCancelada começará a indicar que a operação não foi mais cancelada (o valor foi reinicializado). Se o usuário indicar novamente que a operação foi cancelada, então a função OperacaoCancelada voltará a indicar que a operação foi cancelada, retornando o valor verdadeiro na função. Na prática, esta função serve para reinicializar o indicador de que a operação foi cancelada.

Campo solicitação Formato Descrição
iCancelada N Indica se a operação foi cancelada
  • [0] a operação não foi cancelada
  • [1] a operação foi cancelada

Retorno: O retorno desta função deverá ser 0.

Observações:
• A implementação deste método consiste apenas em setar a variável de global de controle de operação cancelada para o valor do parâmetro.

Processa Mensagens

void ProcessaMensagens(void) 

Indica para a automação executar processamento que esteja esperando o retorno de funções blocantes do client. Por exemplo, ao se passar o cartão no PinPad, o client fica aguardando a ação do operador. Para que a automação não fique “travada”, o client chama essa função para que ela execute procedimentos do tipo atualização de tela, horários e mensagens, processamento de teclado (para verificar se a operação foi cancelada). Esta função não possui parâmetros e também não tem retorno.

Seleciona Planos

int SelecionaPlanos(int iCodigoRede, int iCodigoTransacao, int iTipoFinanciamento, int
 iMaximoParcelas, char *pValorMinimoParcela, int iMaxDiasPreDatado, char *pNumeroParcelas,
 char *pValorTransacao, char *pValorParcela, char *pValorEntrada, char *pData) 

Realiza a seleção dos planos de pagamento conforme os dados da transação.

Campo solicitação Formato Descrição
iCodigoRede N Código da transação. Este campo é informado pelo Client.
  • [1] Visanet
iCodigoTransacao N Indica se a operação foi cancelada
  • [8001] Crédito
  • [8002] Débito
iTipoFinanciamento N Tipo do parcelamento. Este campo é informado pelo Client.
  • [0] À Vista
  • [1] Parcelamento ADM (com juros)
  • [2] Parcelamento Loja (sem juros)
  • [3] Parcelamento CDC
  • [4] Pré Datado
Campo de Retorno Formato Descrição
iNumeroParcelas N Número de parcelas. Informar 0 se o número de parcelas não foi definido. Este campo deve ser informado pelo PDV.
pValorTransacao N Valor da transação. Este campo deve ser informado pelo PDV.
ValorParcela N Valor da parcela. Este campo deve ser informado pelo PDV.
ValorEntrada N Valor da entrada. Este campo deve ser informado pelo PDV.
Data DDMMAAAA Data do débito (transações pré-datadas). Este campo deve ser informado pelo PDV.
MaximoParcelas N Número máximo de parcelas. Este campo é informado pelo Client.
ValorMinimoParcelas N Valor mínimo da parcela. Este campo é informado pelo Client.
MaxiDiasPredatado N Número máximo de dias pré-datado. Este campo é informado pelo Client.
Reservado A Uso futuro
Retorno Descrição
0 O operador selecionou um plano
-1 Os planos não serão tratados
-2 A operação foi cancelada pelo usuario

Seleciona Planos EX

int SelecionaPlanosEx(char *pSolicitacao, char *pRetorno) 

Realiza a seleção dos planos de pagamento conforme os dados da transação. Os parâmetros de solicitação e retorno são formados pelos campos abaixo, separados pelo caracter “|” (pipe).
Se houver valor passado no campo, deverá ser assumido como o valor padrão a ser oferecido ao usuário. Os valores que serão tratados no retorno são ValorTransacao, TipoFinanciamento, NumeroParcelas, ValorParcela, ValorEntrada, DataPreDatado e Plano. Os outros campos, embora não sejam tratados pelo client na volta, deverão ser retornados.
Exemplo:
   Solicitação: 61|8001|300|8|8|000000000000|00|0|0|000000000000|000000000000|00000000|
   Retorno: 61|8001|300|8|8|000000000000|00|0|0|000000000000|000000000000|00000000|001|

Campo solicitação Formato Descrição
CodigoRede N Código da Rede no Linx TEF
  • [1] Cielo
  • [61] Softway
CodigoTransacao N CodigoTransacao
  • [8001] Crédito
  • [8002] Débito
ValorTransacao N Valor da transação (em centavos)
NumeroMaximoParcelasS/Juros N Número máximo de parcelas permitido para o parcelamento loja (sem juros)
NumeroMaximoParcelasC/Juros N Número máximo de parcelas permitido para o parcelamento ADM (com juros)
ValorMinimoParcela N Valor mínimo permitido para a parcela
MaximoDiasPreDatado N Número máximo de dias permitido para transação pré-datada
iTipoFinanciamento N Tipo do parcelamento. Este campo é informado pelo Client.
  • [0] À Vista
  • [1] Parcelamento ADM (com juros)
  • [2] Parcelamento Loja (sem juros)
  • [3] Parcelamento CDC
  • [4] Pré Datado
NumeroParcelas N Número de parcelas
ValorParcela N Valor da parcela (em centavos)
ValorEntrada N Valor da entrada (em centavos)
DataPreDatado DDMMAAAA Data para transações pré-datadas
Plano N Código do plano

Retorno:

Retorno Descrição
0 O operador selecionou um plano
-1 Os planos não serão tratados
-2 A operação foi cancelada pelo usuario

Entra Valor Especial

int EntraValorEspecial(char *pLabel, char *pValor, char *pParametros) 

Comando para que o operador entre com um valor numérico monetário, de acordo com as parametrizações.

Campo solicitação Formato Descrição
pLabel A Mensagem a ser apresentada
pParametros N Parâmetros para a coleta do valor monetário:
  • ValorMinimo: N12 Valor mínimo aceito para o campo
  • ValorMaximo: N12 Valor máximo aceito para o campo
  • NroCasasDecimais: N1 Número de casas decimais a ser utilizado na coleta

Campo de Retorno Formato Descrição
pValor 12 N Valor digitado pelo operador. O campo deverá ser retornado sem separador.
Se na chamada este campo tiver um valor, ele deverá ser apresentado como o valor default
Retorno Descrição
0 O operador digitou o valor
-1 A operação foi cancelada

Comandos

int Comandos(char *pDadosEntrada, char *pRetorno) 

Comandos genéricos enviados do client Linx TEF. Quando necessário para executar uma transação, o Paykit poderá chamar este callback para que a automação execute alguma operação. Uma das situações onde isso é usado é na apresentação do QR Code para transações com carteiras digitais. Caso os comandos não sejam implementados, na medida do possível o client do Linx TEF tentará processar o comando. Por exemplo, caso o comando de apresentação de QR Code não seja implementado o Paykit exibirá uma tela com o QR Code mesmo que a integração seja feita com as telas da automação.

Campo solicitação Formato Descrição
pDadosEntrada A Dados de solicitação do comando.
Os comandos são enviados no formato TLV, com código de comando com 3 bytes e tamanho com 6 bytes. O tamanho se refere ao tamanho dos dados e não ao tamanho total.
Por exemplo, o comando para apresentação de um código QR Code fica assim:
001000030LINXeFuiMzDmu85TcYCimGcOeMvUwM
Código de comando: 001
Tamanho: 000030
QRCode: LINXeFuiMzDmu85TcYCimGcOeMvUwM
Campo de Retorno Formato Descrição
pDadosRetorno N Dados de retorno da solicitação

Comandos:

Código Descrição
001 Apresentar QR Code. O campo de dados contém o QR Code que deve ser apresentado
002 Lista de wallets disponíveis para utilização no QR. Os nomes são separados por ;

Retorno:

Retorno Descrição
0 O comando foi executado corretamente.
-1 O comando não foi implementado
-2 Ocorreu um erro ao executar o comando

Solicita Confirmação

int SolicitaConfirmacao(char *pMensagem)

Comando que força uma interação do operador solicitando uma confirmação ou não de uma determinada situação, pode ser enviado um texto no parâmetro pMensagem para ser exibido.

Campo solicitação Formato Descrição
pMensagem A Mensagem a ser apresentada
Retorno Descrição
0 SIM
1 NAO