Skip to content

Callback de mensagens de tela

Callback de mensagens de tela


Esta callback será executada no WebCheckout toda a vez que o Paykit necessitar exibir uma informação ao usuário ou então solicitar a coleta de um dado. Os dados exibidos podem ser mensagens informativas sobre o fluxo da transação no Paykit, uma mensagem de erro, o status do pinpad, etc. Os dados solicitados podem ser: uma matrícula, o valor de uma transação, uma data, a seleção de uma opção em um menu, etc. O parâmetro de entrada será um objeto JSON indentificando a coleta ou exibição que a Automação deverá realizar e ao finalizar deverá ser retornado um objeto JSON informado a ação tomada pelo usário e o dado coletado se houver.

Areas da tela

Uma janela do Paykit possui 4 áreas distintas onde as mensagens recebidas podem ser exibidas:

  • Titulo - Topo da janela onde uma informação persistente pode ser exibida, ex.: o tipo de transação executada.
  • Coleta - Apresentação das informações de coleta solicitadas sendo substituida integralmente a cada nova mensagem, ex.: digitação do valor da transação.
  • Mensagem - Mensagens informativas ao usuário, permitindo ao WebCheckout informar o fluxo dos processos sendo executados
  • Adicional - Mensagens informativas persistentes ao usuário, ex.: nome da rede adquirente.
  • Botões - Area onde os botões que devem ser disponibilizados ao usuário devem ser exibidos até o termino da coleta solicitada ou exibição de mensagem

Image title

Exemplo de diagramação das areas da janela do WebCheckout

Parâmetro de entrada

O método de callback irá receber do WebCheckout um objeto JSON.

{
  type: integer;
  subType: integer;
  button: integer;
  caption: string;
  defaultValue: string;
  isSecure: boolean;
  minSize: integer;
  maxSize: integer;
  decimals: integer;
  minValue: integer;
  maxValue: integer;
}

Campo Tipo Descrição
type integer Tipo do valor a ser coletado
subType integer Categoria especifica do tipo
button integer Identificador dos botões que devem ser apresentados ao usuario
caption string Descritivo do campo a ser coletado ou exibido
defaultValue Valor inicial do campo de input, o valor recebido neste campo depente de 'type'
isSecure boolean Indica se os dados coletados devem ser exibidos protegidos '*', ex.:senha
minSize integer tamanho minimo dos dados coletados
maxSize integer tamanho maximo dos dados coletados
decimals integer quantidade de digitos decimais, esta quantidade deve ser considerada em minSize e maxSize, ex.:minSize=6, decimals=2, significa que o valor será 4 interios e duas deicmais
minValue integer valor minimo aceito para os dados coletados
maxValue integer valor maximo aceito para os dados coletados

Tipos de dados

Tabela com os tipos de dados que serão utilizados, a area da tela afetada e a descrição da informações representada

Type Valor Area defaultValue Descrição
CURRENCY 0 Coleta double Valor numérico representando um valor montário
AMOUNT 1 Coleta double Valor numérico representando uma quantidade
NUMBER 2 Coleta integer Valor numérico representando um inteiro
TEXT 3 Coleta string Representa uma string de texto
DATE 4 Coleta string Representa uma data, deve-se verificar o tipo de data no campo 'subType'
DISPLAY 5 Mensagem string Apresenta um texto informativo, deve-se verificar o campo 'subType' para identificar o tipo de mensagem
TEXT_BOX 6 Coleta string Apresenta um texto em multiplas linhas uso futuro
LIST 7 Coleta JSON Apresenta um menu de seleção conforme o objeto JSON presente em 'defaultValue'
TITLE 8 Titulo string Altera o titulo da janela, utilizado para identificar a transação que está ocorrendo
ACQUIRER 9 Adicional string Deve exibir em area separada da tela uma imagem ou texto identificando a rede da transação
COMMAND 10 Coleta string Ação que deve ser executada conforme o 'subType'
CLEAR 11 Todas Ação limpeza das areas da tela, conforme o 'subType'
Subtipos de dados

Tabela com os subtipos de dados complementares aos tipos de dado, destinam-se ao detalhamento do comportamento na coleta de um tipo especifico, nem todos os tipo necessitam de um subtipo.

SubType Valor Descrição
NONE 0 Não necessita tratamento adicional
DATE_DDMMYY 1 'type' deve ser coletado no formato 'DD/MM/YY'
DATE_MMDDYY 2 'type' deve ser coletado no formato 'MM/DD/YY'
DATE_DDMMYYYY 3 'type' deve ser coletado no formato 'DD/MM/YYYY'
DATE_MMDDYYYY 4 'type' deve ser coletado no formato 'MM/DD/YYYY'
DATE_MMYY 5 'type' deve ser coletado no formato 'MM/YY'
DATE_MMYYYY 6 'type' deve ser coletado no formato 'MM/YYYY'
DISPLAY_NONE 7 'type' é mensagem normal, sem tratamento especifico
DISPLAY_INFO 8 'type' é uma mensagem informativa
DISPLAY_WARNING 9 'type' é uma mensagem de alerta
DISPLAY_ERROR 10 'type' é uma mensagem de erro
ACQUIRER_TEXT 11 'defaultValue' conterá o nome da rede da transação
COMMAND_001 12 'defaultValue' conterá um QRCode que deve ser exibido
COMMAND_002 13 'defaultValue' conterá uma lista de wallets disponiveis para uso no QR, com os nomes separados por ';'
CLEAR_ALL 14 Limpa todas as areas da tela
CLEAR_TITLE 15 Limpa o titulo da tela
CLEAR_INFO 16 Limpa a area de mensagens
CLEAR_DATA 17 Limpa a area de coleta de dados
CLEAR_BUTTON 18 Limpa a area de botões
CLEAR_ADICTIONAL 19 Limpa a area de informações adicionais

Botões

Opções de botões que podem ser solicitados pelo WebCheckout que sejam exibidos ao usuário

Button Valor Descrição
NONE 0 Nenhum botão deve ser exibido
YES_NO 1 Devem ser exibidos botões com labels 'SIM/NÃO' ou 'YES/NO'
OK_CANCEL 2 Devem ser exibidos botões com labels 'Confirma/Cancela' ou 'OK/CANCEL'
OK 3 Deve ser exibido penas o botão 'OK' ou 'Confirma'

Objeto para exibição de um menu de seleção

Objeto com os valores a serem apresentados para objetos do tipo LIST

{ defaultIndex : Integer,
  itens : [ 
           {
             returnValue : String,
             caption : String 
           }
          ]
}

Campo Tipo Descrição
defaultIndex Integer indice do valor default da lista, considerando o primeiro item como 0
itens Array Array de objetos com as linhas do menu
returnValue String valor de retorno do item
caption String texto que deve ser exibido na lista

Parâmetro de saída

Esta informação sempre deve ser retornada independentemente se houve ou não coleta de dados. Para retornar a informação deve ser chamado o metodo response presente no objeto recebido no callback.

Sintaxe

    <objCallback>.response(<valorColetado>, <botaoSelecionado>)
Onde: valorColetado: Deve conter a informação fornecida pelo usuário botaoSelecionado: Indica se foi pressionado um botão de 'Confirmação (0)' ou 'Cancelamento (-1)'

Exemplo

var handleScreenReceived = function (msgCallback) {
    if (Object.hasOwn(msgCallback,'callback')) {
        objTela = msgCallback.callback;
    } else {
        objTela = msgCallback;
    }

    switch (objTela.type) {
        case callbackType.LIST:
        case callbackType.CURRENCY:
        case callbackType.AMOUNT:
        case callbackType.NUMBER:
        case callbackType.TEXT_BOX:
        case callbackType.COMMAND:
        case callbackType.DATE:
        case callbackType.TITLE:
        case callbackType.DISPLAY:
        case callbackType.ACQUIRER:
        case callbackType.TEXT:
        default:
            <Coletar ou exibir a informação solicitada>
            if (response) {
              objTela.response(response, 0);
            } else {
              objTela.response("", -1);       // Retorno cancelando a coleta
            }
            break;
    }
}

Cancelar operação

Para realizar um cancelamento da operação em uma etapa do fluxo onde não há interação com o usuario, que são as mensagens onde o elemento button esta definido como NONE (exemplo: Solicitação de mensagem display "Aproxime o cartão"), é necessário que seja armazenado o ultimo objeto de callback recebido do WebCheckout. Quando houver a necessidade de cancelar a operação utilizar o método response do objeto armazenado para retornar -1 no atributo botaoSelecionado.