Pesquisar

Are you looking for test card numbers?

Would you like to contact support?

Point-of-sale icon

Peça por uma seleção de menu

Use uma solicitação para fazer perguntas de múltipla escolha.

Aqui, descrevemos como você pode usar um InputRequest para mostrar um menu com várias opções ou uma pergunta de múltipla escolha e permitir que o usuário selecione uma opção. Você pode usar isso, por exemplo, para criar uma pesquisa de cliente.

Para usar o terminal de pagamento para mostrar um menu com várias opções:

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

    • InputRequest.DisplayOutput: Esta parte do corpo da solicitação define o que é mostrado no terminal:

      Parâmetro Requerimentos Descrição
      Device -white_check_mark- CustomerDisplay
      InfoQualify -white_check_mark- Display
      OutputContent.OutputFormat -white_check_mark- Text
      OutputContent.PredefinedContent.ReferenceID -white_check_mark- MenuButtons
      OutputContent.OutputText -white_check_mark- Uma matriz de um campo Text contendo seu próprio texto para mostrar no terminal. Use para especificar a pergunta ou o nome do menu.
    • InputRequest.MenuEntry: Uma matriz de até 15 itens que representam as opções de escolha. O terminal mostra esses itens como uma lista rolável de caixas que o usuário pode tocar para selecionar. Cada item da matriz tem:

      Parâmetro Requerimentos Descrição
      OutputFormat -white_check_mark- Text
      OutputText -white_check_mark- Uma matriz de três campos Text com seu próprio texto que, juntos, formam a resposta ou opção de menu.
      O primeiro campo Text será exibido em negrito. Use uma string vazia para Text não usados.
      Por exemplo, você pode escrever uma resposta curta 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 do artigo, descrição e rótulo.
    • InputRequest.InputData: Esta parte do corpo da solicitação lida com a entrada do usuário:

      Parâmetro Requerimentos Descrição
      Device -white_check_mark- CustomerInput
      InfoQualify -white_check_mark- Input
      InputCommand -white_check_mark- GetMenuEntry
      MaxInputTime (Integer) Tempo limite em segundos. Este é o momento em que o usuário conclui sua entrada.

    O exemplo a seguir pede ao cliente para responder 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?"
                            },
                            {
                                "Text":"Please tap one of the options below:"
                            }
                        ]
                    },
                    "MenuEntry":[
                        {
                            "OutputFormat":"Text",
                            "OutputText":[
                                {
                                    "Text":"Excellent"
                                }
                            ]
                        },
                        {
                            "OutputFormat":"Text",
                            "OutputText":[
                                {
                                    "Text":"Good"
                                }
                            ]
                        },
                        {
                            "OutputFormat":"Text",
                            "OutputText":[
                                {
                                    "Text":"Not so good"
                                }
                            ]
                        },
                        {
                            "OutputFormat":"Text",
                            "OutputText":[
                                {
                                    "Text":"Bad"
                                }
                            ]
                        }
                    ]
                },
                "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 headerLine1 = new OutputText();
    headerLine1.setText("How was your visit?");
    OutputText headerLine2 = new OutputText();
    headerLine2.setText("Please tap one of the options below:");
    outputContent.getOutputText().add(headerLine1);
    outputContent.getOutputText().add(headerLine2);
    displayOutput.setOutputContent(outputContent);
    
    MenuEntry menuEntry1 = new MenuEntry();
    menuEntry1.setOutputFormat( OutputFormatType.TEXT );
    OutputText option1Line1 = new OutputText();
    option1Line1.setText("Excellent");
    menuEntry1.getOutputText().add(option1Line1);
    displayOutput.getMenuEntry().add(menuEntry1);
    
    MenuEntry menuEntry2 = new MenuEntry();
    menuEntry2.setOutputFormat( OutputFormatType.TEXT );
    OutputText option2Line1 = new OutputText();
    option2Line1.setText("Good");
    menuEntry2.getOutputText().add(option2Line1);
    displayOutput.getMenuEntry().add(menuEntry2);
    
    MenuEntry menuEntry3 = new MenuEntry();
    menuEntry3.setOutputFormat( OutputFormatType.TEXT );
    OutputText option3Line1 = new OutputText();
    option3Line1.setText("Not so good");
    menuEntry3.getOutputText().add(option3Line1);
    displayOutput.getMenuEntry().add(menuEntry3);
    
    MenuEntry menuEntry4 = new MenuEntry();
    menuEntry4.setOutputFormat( OutputFormatType.TEXT );
    OutputText option4Line1 = new OutputText();
    option4Line1.setText("Bad");
    menuEntry4.getOutputText().add(option4Line1);
    displayOutput.getMenuEntry().add(menuEntry4);
    
    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 de campos que você pode passar em uma solicitação de entrada de menu, consulte a referência da API Menu InputRequest.

  2. Aguarde até que o usuário forneça a entrada solicitada.

    A entrada fornecida não é validada em um formato.

    • Se a solicitação de entrada expirar, você receberá uma EventNotification com EventDetails: message=Did+not+receive+a+response+from+the+POI.

    • Se você fizer uma solicitação de pagamento enquanto a solicitação de entrada está aguardando a entrada no terminal, a solicitação de pagamento substitui a solicitação de entrada. Você recebe uma InputResponse indicação de que a solicitação de entrada foi fechada.

    • Se o usuário se recusou a responder (selecionou a tecla Cancel ), o InputResult tem Response.Result: Failure e Response.ErrorCondition: Cancel.

    • Se a entrada for recebida do terminal, o InputResponse tem um InputResult com:
      • Input.MenuEntryNumber: que indica a opção que o usuário selecionou. Por exemplo, se a terceira opção foi selecionada, o terceiro item da matriz é 1 e todos os outros itens da matriz são 0.
    Exemplo de resposta quando o cliente selecionou uma opção
    {
      "SaleToPOIResponse": {
        "InputResponse": {
          "InputResult": {
            "Device": "CustomerInput",
            "InfoQualify": "Input",
            "Response": {
              "Result": "Success"
            },
            "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 uma lista completa de campos que você pode receber em uma resposta de entrada de pesquisa, consulte a referência da API Menu InputResponse.

  3. Passe os dados relevantes do InputResult para o seu sistema para validação e uso posterior.

Veja também