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:
-
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:Parameter Required Description Device
CustomerDisplay InfoQualify
Display OutputContent.OutputFormat
Text OutputContent.PredefinedContent.ReferenceID
GetConfirmation OutputContent.OutputText
Uma matriz de quatro campos Text
contendo seu próprio texto para mostrar no terminal:- 1: O título. Em uma tela de retrato, isso é limitado a cerca de 20 caracteres.
- 2: exto adicional que pode ser longo. Use
\n
para adicionar uma quebra de linha. - 3: O rótulo para o botão "Cancelar" à esquerda.
- 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
CustomerInput InfoQualify
Input InputCommand
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.
-
-
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
indicação de que a solicitação de entrada foi fechada. -
Se a entrada for recebida do terminal, o
InputResponse
tem umInputResult
com:Input.ConfirmedFlag
: true indica que o cliente confirmou seu acordo ao selecionar o botão direito no visor ("Agree") ou a tecla Confirmno teclado.
Input.ConfirmedFlag
: false significa que o cliente selecionou o botão esquerdo no visor ("Decline") ou a tecla Cancelno teclado.
{ "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.
-
-
Passe os dados relevantes do
InputResult
ara o seu sistema para validação e uso posterior.