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ção | Formato | Descrição |
---|---|---|
pMensagem | A | Mensagem 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ção | Formato | Descrição |
---|---|---|
pMensagem | A | Mensagem 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çã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.
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ção | Formato | Descrição |
---|---|---|
pLabel | A | Mensagem a ser apresentada |
Campo de retorno | Formato | Descrição |
---|---|---|
pDataValidade | A | Número do cartão digitado pelo operador |
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.
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çã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 |
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çã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 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 |
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çã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 | Descrição |
---|---|
0 | Uma opção foi selecionada |
-1 | A 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çã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 | Descrição |
---|---|
0 | O operador digitou o valor |
-1 | A 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çã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 |
iMinimoDigitos | N | Número minimo de digitos que o valor deverá posuir |
iMaximoDigitos | N | Número máximo de dígitos permitido |
pValorMaximo | N | Número de dígitos que o número deverá ter |
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 | Descrição |
---|---|
0 | O operador digitou o valor |
-1 | A 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çã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 | Descrição |
---|---|
0 | O operador digitou o valor |
-1 | A 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çã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. |
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çã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 . |
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çã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 | Descrição |
---|---|
0 | O operador digitou o valor |
-1 | A 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çã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. |
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ção | Formato | Descrição |
---|---|---|
pComprovante | A | Comprovante 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çã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 |
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ção | Formato | Descrição |
---|---|---|
iCodigo | 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. |
MaxiDiaPredatado | N | Número máximo de dias pré-datado. Este campo é informado pelo Client. |
Reservado | A | Uso futuro |
Retorno | Descrição |
---|---|
0 | O operador digitou o valor |
-1 | A operação foi cancelada |
-2 | A 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çã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 | 12N | 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
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çã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 | 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
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ção | Formato | Descrição |
---|---|---|
pMensagem | A | Mensagem a ser apresentada |