Aqui, descrevemos como você pode usar um InputRequest
para pedir ao cliente ou à sua equipe que insira um valor numérico. Você pode usar isso, por exemplo, para obter o número de telefone de um comprador.
Faça uma solicitação de entrada de dígito
Para usar o terminal de pagamento para solicitar entrada numérica:
1.Faça uma solicitação POST para um endpoint da API Terminais, especificando:
-
MessageHeader
: the standardSaleToPOIRequest.MessageHeader
object. This includes:Parameter Required Description MessageClass
Device MessageCategory
Input
- `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: | **GetDigit** |
| `OutputContent.OutputText` | :white_check_mark: | Uma matriz de um campo `Text` contendo seu próprio texto para mostrar no terminal. Em uma tela de retrato, limitada a cerca de 20 caracteres. Além do texto que você especificar, o terminal mostrará uma instrução sobre como confirmar a entrada. |
- `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: | **DigitString** |
| `MaxInputTime` | | (Integer) Tempo limite em segundos. Este é o momento em que o usuário conclui sua entrada. |
| `InputData.DefaultInputString` | Texto de espaço reservado para a caixa de entrada, para que o usuário saiba qual formato de entrada você está esperando. |
O exemplo a seguir pede ao cliente seu número de telefone.
{
"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":"Enter your zip code:"
}
]
}
},
"InputData":{
"Device":"CustomerInput",
"InfoQualify":"Input",
"InputCommand":"DigitString",
"MaxInputTime":30,
"DefaultInputString":"e.g. 10003"
}
}
}
}
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("Enter your zip code:");
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("e.g. 10003");
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 numérica, consulte a [referência da API Digit InputRequest](/point-of-sale/shopper-engagement/shopper-input/inputrequestdigitentrynexo).
-
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
comEventDetails
: 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
indicando que a solicitação de entrada foi fechada. -
Se o usuário se recusou a responder (selecionando a chave Cancel
), o
InputResult
temResponse.Result
: Failure,Response.ErrorCondition
: Cancel, e um campo vazioDigitInput
. -
Se a entrada for recebida do terminal, o
InputResponse.InputResult
contém:Input.DigitInput
: Os numerais que o usuário inseriu.
{ "SaleToPOIResponse": { "InputResponse": { "InputResult": { "Device": "CustomerInput", "InfoQualify": "Input", "Response": { "Result": "Success", "AdditionalResponse": "responseData=%7b%20%20%7d" }, "Input": { "DigitInput": "0687164125", "InputCommand": "DigitString" } }, "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 numérica, consulte a referência da API Digit InputResponse.
-
-
Passe os dados relevantes do
InputResult
para o seu sistema para validação e uso posterior.