Além de efetuar pagamentos, os terminais da Adyen podem solicitar informações ao seu cliente ou equipe. Isso permite que você colete o endereço de e-mail do cliente, por exemplo, ou realize uma pesquisa. O fluxo de comunicação é entre sua caixa registradora e o terminal e não envolve o back-end da Adyen. Você precisa processar a informação coletada com sua própria lógica de negócios.
Existem vários tipos de InputRequest:
- Confirmação - Mostre algumas informações e peça ao cliente para confirmar se concorda.
- Assinatura - Mostre algumas informações e peça ao cliente que confirme fornecendo sua assinatura.
- Menu - Mostre uma pergunta de múltipla escolha e deixe o usuário selecionar uma das respostas. Você pode usar isso para pesquisas do NPS, listas de pedidos e outros.
- Numérico - Você normalmente usa isso para pedir ao cliente o número de telefone. Outro exemplo é um fluxo de pagamento na mesa em que você solicita à sua equipe o número da mesa.
- Texto - Você normalmente usa isso para pedir ao cliente o endereço de e-mail.
Para cada tipo de entrada, fornecemos elementos predefinidos para exibição no visor do terminal e campos que você precisa preencher com seu próprio texto. O usuário digita uma resposta na tela ou nos botões do teclado do terminal
Você não pode solicitar informações de clientes em terminais que não oferecem suporte à API de Terminais ou em terminais que suportam apenas um subconjunto da API de Terminais.
Coletar informações do usuário
Esse é o procedimento geral para fazer uma pergunta ao cliente ou sua equipe e coletar a resposta. Consulte os tipos de entrada para detalhes específicos.
-
Faça uma solicitação POST para um endpoint da API de terminais, especificando:
-
Objeto
MessageHeader: Segue a estrutra daMessageHeaderpadrão, explicada nos fundamentos da API de terminais:ProtocolVersion: 3.0MessageClass: DeviceMessageCategory: InputMessageType: RequestSaleID: Seu ID exclusivo para a caixa registradora.ServiceID: Seu ID exclusivo para a tentativa de transação, consistindo em 1 a 10 caracteres alfanuméricos. Esse valor precisa ser exclusivo nas últimas 48 horas.-
POIID: ID exclusivo do terminal. Isso indica para qual terminal o pagamento será roteado.
-
InputRequest.DisplayOutput: Esta parte do corpo da solicitação define o que é mostrado no terminal:-
Device: CustomerDisplay -
InfoQualify: Display -
OutputContent.OutputFormat: Text. -
OutputContent.PredefinedContent.ReferenceID: TO conjunto de elementos predefinidos que você deseja usar:- GetConfirmation: elementos predefinidos para solicitar confirmação.
- GetSignature: elementos predefinidos para solicitar uma assinatura.
- MenuButtons: elementos predefinidos para permitir que o usuário selecione uma resposta.
- GetDigit: elementos predefinidos para solicitar uma informação numérica.
-
GetText: elementos predefinidos para solicitar uma informação de texto.
-
OutputContent.OutputText: Uma matriz de um ou mais camposTextcontendo seu próprio texto para mostrar no terminal. Consulte os tipos de entrada abaixo para aprender como usar esses campos.
-
-
InputRequest.InputData: Esta parte do corpo da solicitação lida com a informação do usuário:-
Device: CustomerInput. -
InfoQualify: Input. -
InputCommand: Comando para lidar com o tipo de informação do usuário:- GetConfirmation: solicite confirmação ou assinatura.
- GetMenuEntry: peça para selecionar uma resposta para uma pergunta de múltipla escolha.
- DigitString: solicita informação numérica.
-
TextString: solicita informação de texto.
-
MaxInputTime: Tempo limite em segundos. Este é o tempo que o usuário obtém para concluir sua resposta.
-
O exemplo a seguir mostra os campos comuns para todos os tipos de informação.
Alguns tipos de informações requerem campos adicionais ou valores específicos. Consulte os tipos de entrada abaixo.
-
-
Aguarde o usuário fornecer a informação solicitada usando os botões na tela ou o teclado do terminal.
A informação fornecida pelo cliente ou sua equipe não é validada em um formato.
Na resposta, o
InputResultmostra se o usuário concordou ou discordou, forneceu uma assinatura, selecionou uma resposta para a pergunta de múltipla escolha, inseriu números ou texto ou recusou-se a fornecer informações.
Se o pedido expirar, a resposta conterá umEventNotificationcom osEventDetails: message=Did+not+receive+a+response+from+the+POI. -
Passe os dados relevantes do
InputResultpara o seu sistema para validação e uso posterior.
Confirmação
Em um InputRequest solicitando que o cliente confirme alguma informação, é necessário especificar os campos comuns para coletar as informações do usuário, bem como os seguintes valores e campos específicos:
-
DisplayOutput.OutputContent.PredefinedContent.ReferenceID: GetConfirmation. -
DisplayOutput.OutputContent.OutputText: Uma matriz de quatro camposTextcontendo seu próprio texto para mostrar no terminal.- O primeiro campo
Texté o título. - O segundo campo
Textrepresenta um texto adicional que pode ser longo e é rolável. - O terceiro campo
Texté o título do botão 'decline' à esquerda. -
O quarto campo
Texté o título do botão 'agree' à direita.
- O primeiro campo
-
InputData.InputCommand: GetConfirmation
O exemplo a seguir pede ao cliente para confirmar que concorda.
Para obter uma lista completa dos campos que você pode passar em uma solicitação de informação de confirmação, consulte a InputRequest.
Na resposta, ConfirmedFlag: true indica que o cliente tocou no botão 'agree' à direita ou pressionou
para confirmar o seu acordo. ConfirmedFlag: false significa que o cliente tocou no botão 'decline' à esquerda ou pressionou
.
Para obter uma lista completa dos campos que você pode receber em uma resposta de informação de confirmação, consulte a InputResponse.
Assinatura
Em um InputRequest solicitando que o cliente assine algo e confirme, é necessário especificar os campos comuns para coletar a informação do cliente bem como os seguintes valores e campos específicos:
-
DisplayOutput.OutputContent.PredefinedContent.ReferenceID: GetSignature. Além do texto que você especificar, o terminal mostrará uma caixa de entrada para o cliente desenhar sua assinatura. -
DisplayOutput.OutputContent.OutputText: An array of fourTextfields containing your own text to show on the terminal.- O primeiro campo
Texté o título. - O segundo campo
Textcontém informações adicionais. - O terceiro campo
Texté o título do botão 'decline' à esquerda. -
O quarto campo
Texté o título do botão 'agree' à direita.
- O primeiro campo
-
InputData.InputCommand: GetConfirmation
O exemplo a seguir solicita a assinatura do cliente.
Para obter uma lista completa dos campos que você pode transmitir em uma solicitação de entrada de assinatura, consulte a InputRequest.
Na resposta, o AdditionalResponse contém a assinatura fornecida pelo cliente. ConfirmedFlag: true indica que o cliente tocou no botão 'agree' à direita ou pressionou
para confirmar o acordo. ConfirmedFlag: false significa que o cliente tocou no botão 'decline' à esquerda ou pressionou
.
Para obter uma lista completa dos campos que você pode receber em uma resposta de entrada de assinatura, consulte a InputResponse.
Seleção de menu
Em um InputRequest solicitando ao cliente que responda a uma pergunta de múltipla escolha, é necessário especificar os campos comuns para coletar informações do cliente bem como os seguintes valores e campos específicos:
-
DisplayOutput.OutputContent.PredefinedContent.ReferenceID: MenuButtons. O terminal mostra as respostas para escolher como uma lista rolável de caixas que o usuário pode tocar para selecionar. -
DisplayOutput.OutputContent.OutputText: Uma matriz de apenas um campoTextcontendo seu próprio texto para mostrar no terminal. Use isso para especificar a pergunta. -
MenuEntry: Uma matriz de até 15 itens representando as respostas para você escolher. Cada resposta tem:OutputFormat: Text-
OutputText: uma matriz de três camposTextcom seu próprio texto que juntos formam a resposta.
O primeiro campoTextserá exibido em negrito. Use uma sequência vazia para os camposTextnão utilizados.
Por exemplo, você pode escrever uma resposta abreviada no primeiro campo, a resposta longa no segundo campo e não usar o terceiro campo. Ou você pode usar os três campos para o nome, descrição e rótulo do artigo.
-
InputData.InputCommand: GetMenuEntry
O exemplo a seguir solicita que o cliente responda a uma pergunta da pesquisa.
Para obter uma lista completa dos campos que você pode passar em uma solicitação de informação pelo menu, consulte a InputRequest.
Na resposta, a matriz MenuEntryNumber indica a resposta que o usuário selecionou. Por exemplo, se a terceira resposta foi selecionada, o terceiro item na matriz é 1 e todos os outros itens da matriz são 0.
Se o usuário se recusou a responder (pressionado
), o InputResult possui uma Response.Result: Failure e Response.ErrorCondition: Cancel.
Para obter uma lista completa dos campos que você pode receber em uma resposta de entrada de pesquisa, consulte a InputResponse.
Entrada numérica
Em uma InputRequest solicitando que o cliente insira numerais, é necessário especificar os campos comuns para coletar informações do cliente bem como os seguintes valores e campos específicos:
DisplayOutput.OutputContent.PredefinedContent.ReferenceID: GetDigit. Além do texto que você especificar, o terminal mostrará uma instrução sobre como confirmar a informação.DisplayOutput.OutputContent.OutputText: Uma matriz de apenas um campoTextcontendo seu próprio texto para mostrar no terminal.InputData.InputCommand: DigitStringInputData.DefaultInputString: Espaço reservado para a caixa de entrada, para que o usuário saiba qual formato de informação você está esperando.
O exemplo a seguir mostra uma solicitação de número de telefone ao cliente.
Para obter uma lista completa dos campos que você pode passar em uma solicitação de informação numérica, consulte a InputRequest.
Na resposta, o campo DigitInput contém os numerais que o usuário digitou. Se o usuário se recusou a forncer a informação (pressionando
), o InputResult possui Response.Result: Failure, Response.ErrorCondition: Cancel, e um campo DigitInput vazio.
Para obter uma lista completa dos campos que você pode receber em uma resposta de informação numérica, consulte a InputResponse.
Entrada de texto
Em uma InputRequest solicitando que o usuário insira texto, é necessário especificar os campos comuns para coletar informações do cliente, bem como os seguintes valores e campos específicos:
DisplayOutput.OutputContent.PredefinedContent.ReferenceID: GetText. Além do texto que você especificar, o terminal mostrará uma instrução sobre como confirmar a informação.DisplayOutput.OutputContent.OutputText: Uma matriz de apenas um campoTextcontendo seu próprio texto para mostrar no terminal.InputData.InputCommand: TextStringInputData.DefaultInputString: Espaço reservado para texto da caixa de entrada, para que o usuário saiba qual formato de informação você está esperando
O exemplo a seguir solicita ao cliente seu endereço de e-mail
Para obter uma lista completa dos campos que você pode passar em uma solicitação de informação de texto, consulte a InputRequest.
Na resposta, o campo TextInput field contains the text that the user entered. Se o usuário se negou a fornecer a informação (pressionado
), o InputResult possui Response.Result: Failure, Response.ErrorCondition: Cancel, e um campo TextInput vazio.
Para obter uma lista completa dos campos que você pode receber em uma resposta de informação de texto, consulte a InputResponse