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

Display Terminal

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.

void DisplayTerminal(char *pMensagem)
Parâmetro solicitaçãoFormatoDescrição
pMensagemAMensagem a ser apresentada no display do PDV

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

                                                      Exemplo: Tela implementada Display Terminal

Display Erro

Função utilizada para apresentar uma mensagem de erro no display, como por exemplo “CARTÃO INVÁLIDO”, “TENTE NOVAMENTE”. 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.

void DisplayErro(char *pMensagem)

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

                                                        Exemplo: Tela implementada Display erro

Mensagem

Função utilizada para apresentar uma mensagem informativa na tela. É utilizada 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
  • Mensagem retornada pela rede autorizadora.
void Mensagem(char *pMensagem)
Parâmetro solicitaçãoFormatoDescrição
pMensagemAMensagem a ser apresentada na tela

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


Beep

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

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

void Beep()

Entra cartão

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

int FormEntraCartao(char *pLabel, char *pCartao)
Campo SolicitaçãoFormatoDescrição
pLabelAMensagem a ser apresentada (em geral, é “DIGITE O NÚMERO CARTÃO”)
Campo de retornoFormatoDescrição
pCartaoANúmero do cartão digitado pelo operador

Retorno:

RetornoDescrição
0O operador digitou o número do cartão
-1A 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.


Entra Data de validade

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.

int EntraDataValidade(char *pLabel, char *pDataValidade)
Campo SolicitaçãoFormatoDescrição
pLabelAMensagem a ser apresentada
Campo de retornoFormatoDescrição
pDataValidadeANúmero do cartão digitado pelo operador

Retorno:

RetornoDescrição
0A Data de validade foi digitada
-1A 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.


Entra Data

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.

int EntraData(char *pLabel, char *pData)
Campo SolicitaçãoFormatoDescrição
pLabelAMensagem a ser apresentada
Campo de retornoFormatoDescrição
pDataDD/MM/AAData 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:

RetornoDescrição
0O 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 (“ / / “)
-1A operação foi cancelada

Entra Código de segurança

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.

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

Campo SolicitaçãoFormatoDescrição
pLabelAMensagem a ser apresentada
iTamanhoMaximoNTamanho máximo permitido na digitação do código de segurança
Campo de retornoFormatoDescrição
pCodigoSegurancaACódigo de Segurança digitado pelo operador

Retorno:

RetornoDescrição
0O 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 (“ / / “)
-1A operação foi cancelada

Seleciona Opção

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

int SelecionaOpcao(char *pLabel, char *pOpcoes, int *iOpcaoSelecionada)
Campo solicitaçãoFormatoDescrição
pLabelAMensagem a ser apresentada
pOpcoesNOpçõ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 retornoFormatoDescrição
pOpcaoSelecionadaNIndice 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.
RetornoDescrição
0Uma opção foi selecionada
-1A operação foi cancelada

Entra Valor

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

int EntraValor(char *pLabel, char *pValor, char *pValorMinimo, char *pValorMaximo)
Campo solicitaçãoFormatoDescrição
pLabelAMensagem a ser apresentada
pValorMinimo12 NValor mínimo aceito para o campo
pValorMaximo12 NValor máximo aceito para o campo
Campo de retornoFormatoDescrição
pValor12 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
RetornoDescrição
0O operador digitou o valor
-1A operação foi cancelada

Entra Número

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

int EntraNumero(char *pLabel, char *pNumero, char *pNumeroMinimo, char *pNumeroMaximo, int iMinimoDigitos, int iMaximoDigitos, int iDigitosExatos)
Campo solicitaçãoFormatoDescrição
pLabelAMensagem a ser apresentada
pValorMinimo12 NValor mínimo aceito para o campo
pValorMaximo12 NValor máximo aceito para o campo
iMinimoDigitosNNúmero minimo de digitos que o valor deverá posuir
iMaximoDigitosNNúmero máximo de dígitos permitido
pValorMaximoNNúmero de dígitos que o número deverá ter
Campo de retornoFormatoDescrição
pValorNValor digitado pelo operador. Se na chamada este campo tiver um valor,
ele deverá ser apresentado como o valor default
RetornoDescrição
0O operador digitou o valor
-1A operação foi cancelada

Entra String

Comando para que o operador entre com uma string qualquer.

int EntraString(char *pLabel, char *pString, char *pTamanhoMaximo)
Campo solicitaçãoFormatoDescrição
pLabelAmensagem a ser apresentada
pTamanhoMaximoNTamanho máximo da string em caracteres
Campo de retornoFormatoDescrição
pStringAString digitada pelo usuário. Se na solicitação for informado um valor neste campo,
ele deverá ser exibido como valor default.
RetornoDescrição
0O operador digitou o valor
-1A operação foi cancelada

Mensagem Adicional

Apresenta a mensagem adicional enviada pelo concentrador TEF.

int MensagemAdicional(char *pMensagemAdicional) 

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

Campo solicitaçãoFormatoDescrição
pMensagemAdicionalAMensagem 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.

Imagem Adicional

Apresenta uma imagem ou informação relacionada à rede selecionada pelo TEF Stone 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.

int ImagemAdicional(int iIndiceImagem)
Campo solicitaçãoFormatoDescrição
iImagemAdicionalACó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 .

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


Consulta AVS

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

int ConsultaAVS(char *cEndereco, char *cNumero, char *cApto, char *cBloco, char *cCEP, char  *cBairro, char *cCPF)
Campo solicitaçãoFormatoDescrição
Endereço96 AEndereço coletado
Numero16 ANúmero
Apto8 AApartamento
Bloco32 ADescrição do Bloco
CEP8 NNúmero do CEP
Bairro32 ADescrição do Bairro
CPF11 NNúmero do CPF

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

Mensagem Alerta

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.

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.

void MensagemAlerta(char *pMensagemAlerta)
Campo solicitaçãoFormatoDescrição
pMensagemAlertaAMensagem 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.

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


Prévia do Comprovante

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.

void PreviewComprovante(char *pComprovante)
Campo solicitaçãoFormatoDescrição
pComprovanteAComprovante a ser exibido na tela

Obs: 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

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.

Essa função pode ser 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 chama a função seguinte conforme o fluxo.

int OperacaoCancelada(void)

Obs: Esta função não necessita de resposta.

Seta Operação cancelada

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.

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.

int SetaOperacaoCancelada(int iCancelada)
Campo solicitaçãoFormatoDescrição
iCanceladaNIndica se a operação foi cancelada
[0] a operação não foi cancelada
[1] a operação foi cancelada

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


Processa Mensagens

Indica para a automação executar processamento que esteja esperando o retorno de funções blocantes do client.

Exemplo: Ao 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.

void ProcessaMensagens(void)

Seleciona Planos

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

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

Campo solicitaçãoFormatoDescrição
iCodigoNCódigo da transação. Este campo é informado pelo Client.
[1] Visanet
iCodigoTransacaoNIndica se a operação foi cancelada
[8001] Crédito
[8002] Débito
iTipoFinanciamentoNTipo 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 retornoFormatoDescrição
iNumeroParcelasNNúmero de parcelas. Informar 0 se o número de parcelas não foi definido. Este campo deve ser informado pelo PDV.
pValorTransacaoNValor da transação. Este campo deve ser informado pelo PDV.
ValorParcelaNValor da parcela. Este campo deve ser informado pelo PDV.
ValorEntradaNValor da entrada. Este campo deve ser informado pelo PDV.
DataDDMMAAAAData do débito (transações pré-datadas). Este campo deve ser informado pelo PDV.
MaximoParcelasNNúmero máximo de parcelas. Este campo é informado pelo Client.
ValorMinimoParcelasNValor mínimo da parcela. Este campo é informado pelo Client.
MaxiDiaPredatadoNNúmero máximo de dias pré-datado. Este campo é informado pelo Client.
ReservadoAUso futuro
RetornoDescrição
0O operador digitou o valor
-1A operação foi cancelada
-2A operação foi cancelada pelo usuário

Entra Valor Especial

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

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

Campo solicitaçãoFormatoDescrição
pLabelAMensagem a ser apresentada
pParametrosNParâ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 retornoFormatoDescrição
pValor12NValor 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
RetornoDescrição
0O operador digitou o valor
-1A operação foi cancelada

Comandos

Comandos genéricos enviados do client. Quando necessário para executar uma transação 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 tentará processar o comando. Por exemplo, caso o comando de apresentação de QR Code não seja implementado o TEF exibirá uma tela com o QR Code mesmo que a integração seja feita com as telas da automação.

int Comandos(char *pDadosEntrada, char *pRetorno)

Campo solicitaçãoFormatoDescrição
pDadosEntradaADados 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 retornoFormatoDescrição
pDadosRetornoNDados de retorno da solicitação

Comandos:

CódigoDescrição
001Apresentar QR Code. O campo de dados contém o QR Code que deve ser apresentado
002Lista de wallets disponíveis para utilização no QR. Os nomes são separados por
RetornoDescrição
0O comando foi executado corretamente.
-1O comando não foi implementado
-2Ocorreu um erro ao executar o comando

Solicita confirmação

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.

int SolicitaConfirmacao(char *pMensagem)
Campo solicitaçãoFormatoDescrição
pMensagemAMensagem a ser apresentada