Pesquisar

Are you looking for test card numbers?

Would you like to contact support?

Point-of-sale icon

Peça confirmação

Use uma solicitação de entrada para pedir a confirmação de um cliente.

Aqui, descrevemos como você pode usar um InputRequest para mostrar algumas informações no visor do terminal de pagamento e pedir ao cliente para confirmar se concorda.

Faça uma solicitação de entrada de confirmação

Para usar o terminal de pagamento para pedir a um cliente que confirme algo:

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

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

      Parameter Required Description
      Device -white_check_mark- CustomerDisplay
      InfoQualify -white_check_mark- Display
      OutputContent.OutputFormat -white_check_mark- Text
      OutputContent.PredefinedContent.ReferenceID -white_check_mark- GetConfirmation
      OutputContent.OutputText -white_check_mark- Uma matriz de quatro campos Text contendo seu próprio texto para mostrar no terminal:
      1. 1: O título. Em uma tela de retrato, isso é limitado a cerca de 20 caracteres.
      2. 2: exto adicional que pode ser longo. Use \n para adicionar uma quebra de linha.
      3. 3: O rótulo para o botão "Cancelar" à esquerda.
      4. 4: O rótulo para o botão "Confirmar" à direita.
    • InputRequest.InputData: Esta parte do corpo da solicitação lida com a entrada do usuário:

      Parameter Required Description
      Device -white_check_mark- CustomerInput
      InfoQualify -white_check_mark- Input
      InputCommand -white_check_mark- GetConfirmation
      MaxInputTime (Integer) Tempo limite em segundos. Este é o momento em que o usuário conclui sua entrada.

    O exemplo a seguir pede ao comprador para confirmar se 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? \n 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? \n 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 de campos que você pode passar em uma solicitação de entrada de confirmação, consulte a Confirmation InputRequest API reference.

  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 a entrada for recebida do terminal, o InputResponse tem um InputResult com:
      • Input.ConfirmedFlag: true indica que o cliente confirmou seu acordo ao selecionar o botão direito no visor ("Agree") ou a tecla Confirm no teclado.
      • Input.ConfirmedFlag: false significa que o cliente selecionou o botão esquerdo no visor ("Decline") ou a tecla Cancel no teclado.
    Exemplo de resposta quando o comprador confirmou
    {
      "SaleToPOIResponse": {
        "InputResponse": {
          "InputResult": {
            "Device": "CustomerInput",
            "InfoQualify": "Input",
            "Response": {
              "Result": "Success"
            },
            "Input": {
              "ConfirmedFlag": true,
              "InputCommand": "GetConfirmation"
            }
          },
          "OutputResult": {
            "Device": "CustomerDisplay",
            "InfoQualify": "Display",
            "Response": {
              "Result": "Success"
            }
          }
        },
        "MessageHeader": {...}
      }
    }

    Para obter uma lista completa de campos que você pode receber em uma resposta de entrada de confirmação, consulte a Confirmation InputResponse API reference.

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

See also