Are you looking for test card numbers?

Would you like to contact support?

Point-of-sale icon

Coletar informações

Aprenda a usar o terminal para coletar informações de seus clientes ou equipe.

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.

  1. Faça uma solicitação POST para um endpoint da API de terminais, especificando:

    • Objeto MessageHeader: Segue a estrutra da MessageHeader padrão, explicada nos fundamentos da API de terminais:

      • ProtocolVersion: 3.0
      • MessageClass: Device
      • MessageCategory: Input
      • MessageType: Request
      • SaleID: 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 campos Text contendo 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:

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

    {
         "SaleToPOIRequest": {
           "MessageHeader": {
             "ProtocolVersion": "3.0",
             "MessageClass": "Device",
             "MessageCategory": "Input",
             "MessageType": "Request",
             "ServiceID": "0207111104",
             "SaleID": "POSSystemID12345",
             "POIID": "V400m-324688179"
           },
           "InputRequest": {
             "DisplayOutput": {
               "Device": "CustomerDisplay",
               "InfoQualify": "Display",
               "OutputContent": {
                 "OutputFormat": "Text",
                 "PredefinedContent": {
                   "ReferenceID": "PREDEFINED_ELEMENTS_ID"
                 },
                 "OutputText": [
                   {"Text": "Your own text"}
                 ]
               }
             },
             "InputData": {
               "Device": "CustomerInput",
               "InfoQualify": "Input",
               "InputCommand": "INPUT_TYPE",
               "MaxInputTime": 30
             }
           }
         }
       }
    String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";
    String saleID = "YOUR_CASH_REGISTER_ID";
    String POIID = "YOUR_TERMINAL_ID";
    
    SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
    MessageHeader messageHeader = new MessageHeader();
    messageHeader.setProtocolVersion("3.0");
    messageHeader.setMessageClass( MessageClassType.DEVICE );
    messageHeader.setMessageCategory( MessageCategoryType.INPUT );
    messageHeader.setMessageType( MessageType.REQUEST );
    messageHeader.setServiceID(serviceID);
    messageHeader.setSaleID(saleID);
    messageHeader.setPOIID(POIID);
    saleToPOIRequest.setMessageHeader(messageHeader);
    
    InputRequest inputRequest = new InputRequest();
    DisplayOutput displayOutput = new DisplayOutput();
    displayOutput.setDevice( DeviceType.CUSTOMER_DISPLAY );
    displayOutput.setInfoQualify( InfoQualifyType.DISPLAY );
    OutputContent outputContent = new OutputContent();
    outputContent.setOutputFormat( OutputFormatType.TEXT );
    PredefinedContent predefinedContent = new PredefinedContent();
    predefinedContent.setReferenceID("PREDEFINED_ELEMENTS_ID");
    outputContent.setPredefinedContent(predefinedContent);
    
    OutputText outputText = new OutputText();
    outputText.setText("Your own text");
    outputContent.getOutputText().add(outputText);
    displayOutput.setOutputContent(outputContent);
    inputRequest.setDisplayOutput(displayOutput);
    
    InputData inputData = new InputData();
    inputData.setDevice( DeviceType.CUSTOMER_INPUT );
    inputData.setInfoQualify( InfoQualifyType.INPUT );
    inputData.setInputCommand( InputCommandType.INPUT_TYPE );
    inputData.setMaxInputTime( BigInteger.valueOf(30) );
    inputRequest.setInputData(inputData);
    saleToPOIRequest.setInputRequest(inputRequest);
    terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

    Alguns tipos de informações requerem campos adicionais ou valores específicos. Consulte os tipos de entrada abaixo.

  2. 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 InputResult mostra 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á um EventNotification com os EventDetails: message=Did+not+receive+a+response+from+the+POI.

  3. Passe os dados relevantes do InputResult para 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 campos Text contendo seu próprio texto para mostrar no terminal.

    1. O primeiro campo Text é o título.
    2. O segundo campo Text representa um texto adicional que pode ser longo e é rolável.
    3. O terceiro campo Text é o título do botão 'decline' à esquerda.
    4. O quarto campo Text é o título do botão 'agree' à direita.

  • InputData.InputCommand: GetConfirmation

O exemplo a seguir pede ao cliente para confirmar que concorda.

{
    "SaleToPOIRequest":{
        "MessageHeader":{
            "ProtocolVersion":"3.0",
            "MessageClass":"Device",
            "MessageCategory":"Input",
            "MessageType":"Request",
            "ServiceID":"0207111104",
            "SaleID":"POSSystemID12345",
            "POIID":"V400m-324688179"
        },
        "InputRequest":{
            "DisplayOutput":{
                "Device":"CustomerDisplay",
                "InfoQualify":"Display",
                "OutputContent":{
                    "OutputFormat":"Text",
                    "PredefinedContent":{
                        "ReferenceID":"GetConfirmation"
                    },
                    "OutputText":[
                        {
                            "Text":"Terms & Conditions"
                        },
                        {
                            "Text":"Do you accept our Terms and Conditions? The full text is available on our website."
                        },
                        {
                            "Text":"Decline"
                        },
                        {
                            "Text":"Agree"
                        }
                    ]
                }
            },
            "InputData":{
                "Device":"CustomerInput",
                "InfoQualify":"Input",
                "InputCommand":"GetConfirmation",
                "MaxInputTime":30
            }
        }
    }
}
SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
MessageHeader messageHeader = new MessageHeader();
saleToPOIRequest.setMessageHeader(messageHeader);

InputRequest inputRequest = new InputRequest();
DisplayOutput displayOutput = new DisplayOutput();
displayOutput.setDevice( DeviceType.CUSTOMER_DISPLAY );
displayOutput.setInfoQualify( InfoQualifyType.DISPLAY );
OutputContent outputContent = new OutputContent();
outputContent.setOutputFormat( OutputFormatType.TEXT );
PredefinedContent predefinedContent = new PredefinedContent();
predefinedContent.setReferenceID("GetConfirmation");
outputContent.setPredefinedContent(predefinedContent);

OutputText title = new OutputText();
title.setText("Terms & Conditions");
OutputText additionalText = new OutputText();
additionalText.setText("Do you accept our Terms and Conditions? The full text is available on our website.");
OutputText declineAnswer = new OutputText();
declineAnswer.setText("Decline");
OutputText agreeAnswer = new OutputText();
agreeAnswer.setText("Agree");
outputContent.getOutputText().add(title);
outputContent.getOutputText().add(additionalText);
outputContent.getOutputText().add(declineAnswer);
outputContent.getOutputText().add(agreeAnswer);
displayOutput.setOutputContent(outputContent);
inputRequest.setDisplayOutput(displayOutput);

InputData inputData = new InputData();
inputData.setDevice( DeviceType.CUSTOMER_INPUT );
inputData.setInfoQualify( InfoQualifyType.INPUT );
inputData.setInputCommand( InputCommandType.GET_CONFIRMATION );
inputData.setMaxInputTime( BigInteger.valueOf(30) );
inputRequest.setInputData(inputData);
saleToPOIRequest.setInputRequest(inputRequest);
terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

Para obter uma lista completa dos campos que você pode passar em uma solicitação de informação de confirmação, consulte a referência da API ConfirmationEntry 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 .

Exemplo de resposta quando o cliente faz a confirmação
{
  "SaleToPOIResponse": {
    "InputResponse": {
      "InputResult": {
        "Device": "CustomerInput",
        "InfoQualify": "Input",
        "Response": {
          "Result": "Success",
          "AdditionalResponse": "responseData=%7b%20%22unique_id%22%3a%20%22001560867383%22%20%7d"
        },
        "Input": {
          "ConfirmedFlag": true,
          "InputCommand": "GetConfirmation"
        }
      },
      "OutputResult": {
        "Device": "CustomerDisplay",
        "InfoQualify": "Display",
        "Response": {
          "Result": "Success"
        }
      }
    },
    "MessageHeader": {
      "ProtocolVersion": "3.0",
      "SaleID": "POSSystemID12345",
      "MessageClass": "Device",
      "MessageCategory": "Input",
      "ServiceID": "0207111104",
      "POIID": "V400m-324688179",
      "MessageType": "Response"
    }
  }
}

Para obter uma lista completa dos campos que você pode receber em uma resposta de informação de confirmação, consulte a referência da API ConfirmationEntry 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 four Text fields containing your own text to show on the terminal.

    1. O primeiro campo Text é o título.
    2. O segundo campo Text contém informações adicionais.
    3. O terceiro campo Text é o título do botão 'decline' à esquerda.
    4. O quarto campo Text é o título do botão 'agree' à direita.

  • InputData.InputCommand: GetConfirmation

O exemplo a seguir solicita a assinatura do cliente.

{
    "SaleToPOIRequest":{
        "MessageHeader":{
            "ProtocolVersion":"3.0",
            "MessageClass":"Device",
            "MessageCategory":"Input",
            "MessageType":"Request",
            "ServiceID":"0207111104",
            "SaleID":"POSSystemID12345",
            "POIID":"V400m-324688179"
        },
        "InputRequest":{
            "DisplayOutput":{
                "Device":"CustomerDisplay",
                "InfoQualify":"Display",
                "OutputContent":{
                    "OutputFormat":"Text",
                    "PredefinedContent":{
                        "ReferenceID":"GetSignature"
                    },
                    "OutputText":[
                        {
                            "Text":"Please sign"
                        },
                        {
                            "Text":"Do you accept the Delivery Waver form?"
                        }
                    ]
                }
            },
            "InputData":{
                "Device":"CustomerInput",
                "InfoQualify":"Input",
                "InputCommand":"GetConfirmation",
                "MaxInputTime":30
            }
        }
    }
}
SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
MessageHeader messageHeader = new MessageHeader();
saleToPOIRequest.setMessageHeader(messageHeader);

InputRequest inputRequest = new InputRequest();
DisplayOutput displayOutput = new DisplayOutput();
displayOutput.setDevice( DeviceType.CUSTOMER_DISPLAY );
displayOutput.setInfoQualify( InfoQualifyType.DISPLAY );
OutputContent outputContent = new OutputContent();
outputContent.setOutputFormat( OutputFormatType.TEXT );
PredefinedContent predefinedContent = new PredefinedContent();
predefinedContent.setReferenceID("GetSignature");
outputContent.setPredefinedContent(predefinedContent);

OutputText title = new OutputText();
title.setText("Please sign");
OutputText additionalText = new OutputText();
additionalText.setText("Do you accept the Delivery Waver form?");
outputContent.getOutputText().add(title);
outputContent.getOutputText().add(additionalText);
outputContent.getOutputText().add(declineAnswer);
outputContent.getOutputText().add(agreeAnswer);
displayOutput.setOutputContent(outputContent);
inputRequest.setDisplayOutput(displayOutput);

InputData inputData = new InputData();
inputData.setDevice( DeviceType.CUSTOMER_INPUT );
inputData.setInfoQualify( InfoQualifyType.INPUT );
inputData.setInputCommand( InputCommandType.GET_CONFIRMATION );
inputData.setMaxInputTime( BigInteger.valueOf(30) );
inputRequest.setInputData(inputData);
saleToPOIRequest.setInputRequest(inputRequest);
terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

Para obter uma lista completa dos campos que você pode transmitir em uma solicitação de entrada de assinatura, consulte a referência da API SignatureEntry 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 .


Exemplo de resposta quando o cliente forneceu uma assinatura

{
  "SaleToPOIResponse": {
    "InputResponse": {
      "InputResult": {
        "Device": "CustomerInput",
        "InfoQualify": "Input",
        "Response": {
          "Result": "Success",
          "AdditionalResponse": "responseData=%7b%20%22unique_id%22%3a%20%22001560864516%22%2c%20%22signature%22%3a%20%7b%20%22data%22%3a%20%5b%20%7b%20%22x%22%3a%20%2249%22%2c%20%22y...signature_format%22%3a%20%22raw%22%20%7d%20%7d"
        },
        "Input": {
          "ConfirmedFlag": true,
          "InputCommand": "GetConfirmation"
        }
      },
      "OutputResult": {
        "Device": "CustomerDisplay",
        "InfoQualify": "Display",
        "Response": {
          "Result": "Success"
        }
      }
    },
    "MessageHeader": {
      "ProtocolVersion": "3.0",
      "SaleID": "POSSystemID12345",
      "MessageClass": "Device",
      "MessageCategory": "Input",
      "ServiceID": "0207111104",
      "POIID": "V400m-324688179",
      "MessageType": "Response"
    }
  }
}

Para obter uma lista completa dos campos que você pode receber em uma resposta de entrada de assinatura, consulte a referência da API SignatureEntry 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 campo Text contendo 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 campos Text com seu próprio texto que juntos formam a resposta.
      O primeiro campo Text será exibido em negrito. Use uma sequência vazia para os campos Text nã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.

{
    "SaleToPOIRequest":{
        "MessageHeader":{
            "ProtocolVersion":"3.0",
            "MessageClass":"Device",
            "MessageCategory":"Input",
            "MessageType":"Request",
            "ServiceID":"0207111104",
            "SaleID":"POSSystemID12345",
            "POIID":"V400m-324688179"
        },
        "InputRequest":{
            "DisplayOutput":{
                "Device":"CustomerDisplay",
                "InfoQualify":"Display",
                "OutputContent":{
                    "OutputFormat":"Text",
                    "PredefinedContent":{
                        "ReferenceID":"MenuButtons"
                    },
                    "OutputText":[
                        {
                            "Text":"How was your visit?"
                        }
                    ]
                },
                "MenuEntry":[
                    {
                        "OutputFormat":"Text",
                        "OutputText":[
                            {
                                "Text":"Excellent"
                            },
                            {
                                "Text":"Don't change a thing"
                            },
                            {
                                "Text":""
                            }
                        ]
                    },
                    {
                        "OutputFormat":"Text",
                        "OutputText":[
                            {
                                "Text":"Great"
                            },
                            {
                                "Text":"Would surely come again"
                            },
                            {
                                "Text":""
                            }
                        ]
                    },
                    {
                        "OutputFormat":"Text",
                        "OutputText":[
                            {
                                "Text":"Good"
                            },
                            {
                                "Text":"What I expected"
                            },
                            {
                                "Text":""
                            }
                        ]
                    },
                    {
                        "OutputFormat":"Text",
                        "OutputText":[
                            {
                                "Text":"Mweh"
                            },
                            {
                                "Text":"Could have been better"
                            },
                            {
                                "Text":""
                            }
                        ]
                    },
                    {
                        "OutputFormat":"Text",
                        "OutputText":[
                            {
                                "Text":"Terrible"
                            },
                            {
                                "Text":"Will never go here again"
                            },
                            {
                                "Text":""
                            }
                        ]
                    }
                ]
            },
            "InputData":{
                "Device":"CustomerInput",
                "InfoQualify":"Input",
                "InputCommand":"GetMenuEntry",
                "MaxInputTime":120
            }
        }
    }
}
SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
MessageHeader messageHeader = new MessageHeader();
saleToPOIRequest.setMessageHeader(messageHeader);

InputRequest inputRequest = new InputRequest();
DisplayOutput displayOutput = new DisplayOutput();
displayOutput.setDevice( DeviceType.CUSTOMER_DISPLAY );
displayOutput.setInfoQualify( InfoQualifyType.DISPLAY );
OutputContent outputContent = new OutputContent();
outputContent.setOutputFormat( OutputFormatType.TEXT );
PredefinedContent predefinedContent = new PredefinedContent();
predefinedContent.setReferenceID("MenuButtons");
outputContent.setPredefinedContent(predefinedContent);

OutputText outputText = new OutputText();
outputText.setText("How was your visit?");
outputContent.getOutputText().add(outputText);
displayOutput.setOutputContent(outputContent);

MenuEntry menuEntry1 = new MenuEntry();
menuEntry1.setOutputFormat( OutputFormatType.TEXT );
OutputText option1Line1 = new OutputText();
option1Line1.setText("Excellent");
OutputText option1Line2 = new OutputText();
option1Line2.setText("Don't change a thing");
OutputText option1Line3 = new OutputText();
option1Line3.setText("");
menuEntry1.getOutputText().add(option1Line1);
menuEntry1.getOutputText().add(option1Line2);
menuEntry1.getOutputText().add(option1Line3);
displayOutput.getMenuEntry().add(menuEntry1);

MenuEntry menuEntry2 = new MenuEntry();
menuEntry2.setOutputFormat( OutputFormatType.TEXT );
OutputText option2Line1 = new OutputText();
option2Line1.setText("Great");
OutputText option2Line2 = new OutputText();
option2Line2.setText("Would surely come again");
OutputText option2Line3 = new OutputText();
option2Line3.setText("");
menuEntry2.getOutputText().add(option2Line1);
menuEntry2.getOutputText().add(option2Line2);
menuEntry2.getOutputText().add(option2Line3);
displayOutput.getMenuEntry().add(menuEntry2);

MenuEntry menuEntry3 = new MenuEntry();
menuEntry3.setOutputFormat( OutputFormatType.TEXT );
OutputText option3Line1 = new OutputText();
option3Line1.setText("Good");
OutputText option3Line2 = new OutputText();
option3Line2.setText("What I expected");
OutputText option3Line3 = new OutputText();
option3Line3.setText("");
menuEntry3.getOutputText().add(option3Line1);
menuEntry3.getOutputText().add(option3Line2);
menuEntry3.getOutputText().add(option3Line3);
displayOutput.getMenuEntry().add(menuEntry3);

MenuEntry menuEntry4 = new MenuEntry();
menuEntry4.setOutputFormat( OutputFormatType.TEXT );
OutputText option4Line1 = new OutputText();
option4Line1.setText("Mweh");
OutputText option4Line2 = new OutputText();
option4Line2.setText("Could have been better");
OutputText option4Line3 = new OutputText();
option4Line3.setText("");
menuEntry4.getOutputText().add(option4Line1);
menuEntry4.getOutputText().add(option4Line2);
menuEntry4.getOutputText().add(option4Line3);
displayOutput.getMenuEntry().add(menuEntry4);

MenuEntry menuEntry5 = new MenuEntry();
menuEntry5.setOutputFormat( OutputFormatType.TEXT );
OutputText option5Line1 = new OutputText();
option5Line1.setText("Terrible");
OutputText option5Line2 = new OutputText();
option5Line2.setText("Will never go here again");
OutputText option5Line3 = new OutputText();
option5Line3.setText("");
menuEntry5.getOutputText().add(option5Line1);
menuEntry5.getOutputText().add(option5Line2);
menuEntry5.getOutputText().add(option5Line3);
displayOutput.getMenuEntry().add(menuEntry5);

inputRequest.setDisplayOutput(displayOutput);

InputData inputData = new InputData();
inputData.setDevice( DeviceType.CUSTOMER_INPUT );
inputData.setInfoQualify( InfoQualifyType.INPUT );
inputData.setInputCommand( InputCommandType.GET_MENU_ENTRY );
inputData.setMaxInputTime( BigInteger.valueOf(120) );
inputRequest.setInputData(inputData);
saleToPOIRequest.setInputRequest(inputRequest);
terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

Para obter uma lista completa dos campos que você pode passar em uma solicitação de informação pelo menu, consulte a referência da API MenuEntry 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.

Exemplo de resposta quando o cliente selecionou uma opção de resposta
{
  "SaleToPOIResponse": {
    "InputResponse": {
      "InputResult": {
        "Device": "CustomerInput",
        "InfoQualify": "Input",
        "Response": {
          "Result": "Success",
          "AdditionalResponse": "responseData=%7b%20%22unique_id%22%3a%20%22001560869035%22%20%7d"
        },
        "Input": {
          "MenuEntryNumber": [
            0,
            0,
            1,
            0,
            0
          ],
          "InputCommand": "GetMenuEntry"
        }
      },
      "OutputResult": {
        "Device": "CustomerDisplay",
        "InfoQualify": "Display",
        "Response": {
          "Result": "Success"
        }
      }
    },
    "MessageHeader": {
      "ProtocolVersion": "3.0",
      "SaleID": "POSSystemID12345",
      "MessageClass": "Device",
      "MessageCategory": "Input",
      "ServiceID": "0207111104",
      "POIID": "V400m-324688179",
      "MessageType": "Response"
    }
  }
}

Para obter uma lista completa dos campos que você pode receber em uma resposta de entrada de pesquisa, consulte a referência da API MenuEntry 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 campo Text contendo seu próprio texto para mostrar no terminal.
  • InputData.InputCommand: DigitString
  • InputData.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.

{
    "SaleToPOIRequest":{
        "MessageHeader":{
            "ProtocolVersion":"3.0",
            "MessageClass":"Device",
            "MessageCategory":"Input",
            "MessageType":"Request",
            "ServiceID":"040",
            "SaleID":"POSSystemID12345",
            "POIID":"V400m-324688179"
        },
        "InputRequest":{
            "DisplayOutput":{
                "Device":"CustomerDisplay",
                "InfoQualify":"Display",
                "OutputContent":{
                    "OutputFormat":"Text",
                    "PredefinedContent":{
                        "ReferenceID":"GetDigit"
                    },
                    "OutputText":[
                        {
                            "Text":"Your phone number:"
                        }
                    ]
                }
            },
            "InputData":{
                "Device":"CustomerInput",
                "InfoQualify":"Input",
                "InputCommand":"DigitString",
                "MaxInputTime":30,
                "DefaultInputString":"0612345678"
            }
        }
    }
}
SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
MessageHeader messageHeader = new MessageHeader();
saleToPOIRequest.setMessageHeader(messageHeader);

InputRequest inputRequest = new InputRequest();
DisplayOutput displayOutput = new DisplayOutput();
displayOutput.setDevice( DeviceType.CUSTOMER_DISPLAY );
displayOutput.setInfoQualify( InfoQualifyType.DISPLAY );
OutputContent outputContent = new OutputContent();
outputContent.setOutputFormat( OutputFormatType.TEXT );
PredefinedContent predefinedContent = new PredefinedContent();
predefinedContent.setReferenceID("GetDigit");
outputContent.setPredefinedContent(predefinedContent);

OutputText outputText = new OutputText();
outputText.setText("Your phone number:");
outputContent.getOutputText().add(outputText);
displayOutput.setOutputContent(outputContent);
inputRequest.setDisplayOutput(displayOutput);

InputData inputData = new InputData();
inputData.setDevice( DeviceType.CUSTOMER_INPUT );
inputData.setInfoQualify( InfoQualifyType.INPUT );
inputData.setInputCommand( InputCommandType.DIGIT_STRING );
inputData.setMaxInputTime( BigInteger.valueOf(30) );
inputData.setDefaultInputString("0612345678");
inputRequest.setInputData(inputData);
saleToPOIRequest.setInputRequest(inputRequest);
terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

Para obter uma lista completa dos campos que você pode passar em uma solicitação de informação numérica, consulte a referência da API DigitEntry 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.

Exemplo de resposta quando o cliente digita um número de telefone
{
  "SaleToPOIResponse": {
    "InputResponse": {
      "InputResult": {
        "Device": "CustomerInput",
        "InfoQualify": "Input",
        "Response": {
          "Result": "Success",
          "AdditionalResponse": "responseData=%7b%20%22unique_id%22%3a%20%22001560761701%22%20%7d"
        },
        "Input": {
          "DigitInput": "0687164125",
          "InputCommand": "DigitString"
        }
      },
      "OutputResult": {
        "Device": "CustomerDisplay",
        "InfoQualify": "Display",
        "Response": {
          "Result": "Success"
         }
      }
    },
    "MessageHeader": {
      "ProtocolVersion": "3.0",
      "SaleID": "POSSystemID12345",
      "MessageClass": "Device",
      "MessageCategory": "Input",
      "ServiceID": "0207111104",
      "POIID": "V400m-324688179",
      "MessageType": "Response"
    }
  }
}

Para obter uma lista completa dos campos que você pode receber em uma resposta de informação numérica, consulte a referência da API DigitEntry 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 campo Text contendo seu próprio texto para mostrar no terminal.
  • InputData.InputCommand: TextString
  • InputData.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

{
    "SaleToPOIRequest":{
        "MessageHeader":{
            "ProtocolVersion":"3.0",
            "MessageClass":"Device",
            "MessageCategory":"Input",
            "MessageType":"Request",
            "ServiceID":"040",
            "SaleID":"POSSystemID12345",
            "POIID":"V400m-324688179"
        },
        "InputRequest":{
            "DisplayOutput":{
                "Device":"CustomerDisplay",
                "InfoQualify":"Display",
                "OutputContent":{
                    "OutputFormat":"Text",
                    "PredefinedContent":{
                        "ReferenceID":"GetText"
                    },
                    "OutputText":[
                        {
                            "Text":"Your email address:"
                        }
                    ]
                }
            },
            "InputData":{
                "Device":"CustomerInput",
                "InfoQualify":"Input",
                "InputCommand":"TextString",
                "MaxInputTime":120,
                "DefaultInputString":"name@domain.com"
            }
        }
    }
}
SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
MessageHeader messageHeader = new MessageHeader();
saleToPOIRequest.setMessageHeader(messageHeader);

InputRequest inputRequest = new InputRequest();
DisplayOutput displayOutput = new DisplayOutput();
displayOutput.setDevice( DeviceType.CUSTOMER_DISPLAY );
displayOutput.setInfoQualify( InfoQualifyType.DISPLAY );
OutputContent outputContent = new OutputContent();
outputContent.setOutputFormat( OutputFormatType.TEXT );
PredefinedContent predefinedContent = new PredefinedContent();
predefinedContent.setReferenceID("GetText");
outputContent.setPredefinedContent(predefinedContent);

OutputText outputText = new OutputText();
outputText.setText("Your email address:);
outputContent.getOutputText().add(outputText);
displayOutput.setOutputContent(outputContent);
inputRequest.setDisplayOutput(displayOutput);

InputData inputData = new InputData();
inputData.setDevice( DeviceType.CUSTOMER_INPUT );
inputData.setInfoQualify( InfoQualifyType.INPUT );
inputData.setInputCommand( InputCommandType.TEXT_STRING );
inputData.setMaxInputTime( BigInteger.valueOf(120) );
inputData.setDefaultInputString("name@domain.com");
inputRequest.setInputData(inputData);
saleToPOIRequest.setInputRequest(inputRequest);
terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

Para obter uma lista completa dos campos que você pode passar em uma solicitação de informação de texto, consulte a referência da API TextEntry 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.

Exemplo de resposta para quando o cliente inseriu um endereço de e-mail
{
  "SaleToPOIResponse": {
    "InputResponse": {
      "InputResult": {
        "Device": "CustomerInput",
        "InfoQualify": "Input",
        "Response": {
          "Result": "Success",
          "AdditionalResponse": "responseData=%7b%20%22unique_id%22%3a%20%22001560763410%22%20%7d"
        },
        "Input": {
          "TextInput": "resultingemail@example.com",
          "InputCommand": "TextString"
        }
      },
      "OutputResult": {
        "Device": "CustomerDisplay",
        "InfoQualify": "Display",
        "Response": {
          "Result": "Success"
        }
      }
    },
    "MessageHeader": {
      "ProtocolVersion": "3.0",
      "SaleID": "POSSystemID12345",
      "MessageClass": "Device",
      "MessageCategory": "Input",
      "ServiceID": "0207111104",
      "POIID": "V400m-324688179",
      "MessageType": "Response"
    }
  }
}

Para obter uma lista completa dos campos que você pode receber em uma resposta de informação de texto, consulte a referência da API TextEntry InputResponse.