Pesquisar

Are you looking for test card numbers?

Would you like to contact support?

Point-of-sale icon

Peça uma assinatura

Use uma solicitação de entrada para pedir a um cliente que forneça sua assinatura.

Aqui, descrevemos como você pode usar um InputRequest para mostrar um prompt no terminal de pagamento pedindo ao cliente que confirme algo desenhando sua assinatura no visor.

Os exemplos a seguir mostram a aparência da tela com uma assinatura desenhada em telas de terminal em paisagem e retrato.
 

Usando os botões na tela, o cliente pode cancelar, limpar ou confirmar sua assinatura..

Em alguns modelos de terminal, você pode incluir texto adicional abaixo do cabeçalho, por exemplo, para explicar por que está pedindo ao cliente sua assinatura. Nos terminais M400, e280 e e285p, o texto adicional é ignorado.

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

Para usar o terminal de pagamento para pedir a um cliente que forneça sua assinatura:

  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:

      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- GetSignature
      OutputContent.OutputText -white_check_mark- Uma matriz de dois campos Text contendo seu próprio texto para mostrar no terminal:
      1. 1: O cabeçalho. Em uma tela de retrato, isso é limitado a cerca de 20 caracteres.
      2. 2: Use um valor vazio ou especifique um texto adicional.
        Nos terminais dos terminais M400, e280 e e285, o texto adicional é ignorado, mas você ainda precisa incluir o segundo campo Text com um valor vazio.
    • 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- GetConfirmation
      MaxInputTime (Integer) Tempo limite em segundos. Este é o momento em que o usuário conclui sua entrada.

    O exemplo a seguir pede ao cliente sua assinatura.

    {
        "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":""
                            }
                        ]
                    }
                },
                "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("");
    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 assinatura, consulte a referência da API Signature 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 a entrada for recebida do terminal, o InputResponse tem um InputResult com:
      • Response.AdditionalResponse: A assinatura fornecida pelo cliente.
      • Input.ConfirmedFlag: true indica que o cliente confirmou seu acordo selecionando Confirm .
      • Input.ConfirmedFlag: false significa que o cliente recusou selecionando Cancel .
    Example response when the shopper confirmed
    {
      "SaleToPOIResponse": {
        "InputResponse": {
          "InputResult": {
            "Device": "CustomerInput",
            "InfoQualify": "Input",
            "Response": {
              "Result": "Success",
              "AdditionalResponse": "responseData=%7b%20%22signature%22%3a%20%7b%20%22data...%22signature_format%22%3a%20%22raw%22%20%7d%20%7d"
            },
            "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 assinatura, consulte a referência da API Signature InputResponse.

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

See also