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