Aqui, descrevemos como você pode usar um InputRequest
para pedir ao cliente ou à sua equipe que insira um texto. Você pode usar isso, por exemplo, para obter o endereço de e-mail de um comprador.
Faça uma solicitação de entrada de texto
Para usar o terminal de pagamento para solicitar a entrada de texto:
-
Faça uma solicitação POST para um endpoint da API de 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
CustomerDisplay InfoQualify
Display OutputContent.OutputFormat
Text OutputContent.PredefinedContent.ReferenceID
GetText OutputContent.OutputText
Uma matriz de um campo Text
contendo seu próprio texto para mostrar no terminal. -
InputRequest.InputData
: Esta parte do corpo da solicitação lida com a entrada do usuário:Parâmetro Requerimentos Descrição Device
CustomerInput InfoQualify
Input InputCommand
TextString 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 o 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 de campos que você pode passar em uma solicitação de entrada de texto, consulte a referência da API Text InputRequest.
-
-
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 (selecionado a chave Cancel
), o
InputResult
temResponse.Result
: Failure,Response.ErrorCondition
: Cancel, e um campo vazioTextInput
. -
Se a entrada for recebida do terminal, o
InputResponse.InputResult
contém:Input.TextInput
: The text that the user entered.
{ "SaleToPOIResponse": { "InputResponse": { "InputResult": { "Device": "CustomerInput", "InfoQualify": "Input", "Response": { "Result": "Success", "AdditionalResponse": "responseData=%7b%20%20%7d" }, "Input": { "TextInput": "resultingemail@example.com", "InputCommand": "TextString" } }, "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 texto, consulte a referência da API Text InputResponse.
-
-
Passe os dados relevantes do
InputResult
para o seu sistema para validação e uso posterior.