Além de efetuar pagamentos, os terminais da Adyen podem solicitar informações ao seu cliente ou equipe. Isso permite que você colete o endereço de e-mail do cliente, por exemplo, ou realize uma pesquisa. O fluxo de comunicação é entre sua caixa registradora e o terminal e não envolve o back-end da Adyen. Você precisa processar a informação coletada com sua própria lógica de negócios.
Existem vários tipos de InputRequest
:
- Confirmação - Mostre algumas informações e peça ao cliente para confirmar se concorda.
- Assinatura - Mostre algumas informações e peça ao cliente que confirme fornecendo sua assinatura.
- Menu - Mostre uma pergunta de múltipla escolha e deixe o usuário selecionar uma das respostas. Você pode usar isso para pesquisas do NPS, listas de pedidos e outros.
- Numérico - Você normalmente usa isso para pedir ao cliente o número de telefone. Outro exemplo é um fluxo de pagamento na mesa em que você solicita à sua equipe o número da mesa.
- Texto - Você normalmente usa isso para pedir ao cliente o endereço de e-mail.
Para cada tipo de entrada, fornecemos elementos predefinidos para exibição no visor do terminal e campos que você precisa preencher com seu próprio texto. O usuário digita uma resposta na tela ou nos botões do teclado do terminal
Você não pode solicitar informações de clientes em terminais que não oferecem suporte à API de Terminais ou em terminais que suportam apenas um subconjunto da API de Terminais.
Coletar informações do usuário
Esse é o procedimento geral para fazer uma pergunta ao cliente ou sua equipe e coletar a resposta. Consulte os tipos de entrada para detalhes específicos.
-
Faça uma solicitação POST para um endpoint da API de terminais, especificando:
-
Objeto
MessageHeader
: Segue a estrutra daMessageHeader
padrão, explicada nos fundamentos da API de terminais:ProtocolVersion
: 3.0MessageClass
: DeviceMessageCategory
: InputMessageType
: RequestSaleID
: Seu ID exclusivo para a caixa registradora.ServiceID
: Seu ID exclusivo para a tentativa de transação, consistindo em 1 a 10 caracteres alfanuméricos. Esse valor precisa ser exclusivo nas últimas 48 horas.-
POIID
: ID exclusivo do terminal. Isso indica para qual terminal o pagamento será roteado.
-
InputRequest.DisplayOutput
: Esta parte do corpo da solicitação define o que é mostrado no terminal:-
Device
: CustomerDisplay -
InfoQualify
: Display -
OutputContent.OutputFormat
: Text. -
OutputContent.PredefinedContent.ReferenceID
: TO conjunto de elementos predefinidos que você deseja usar:- GetConfirmation: elementos predefinidos para solicitar confirmação.
- GetSignature: elementos predefinidos para solicitar uma assinatura.
- MenuButtons: elementos predefinidos para permitir que o usuário selecione uma resposta.
- GetDigit: elementos predefinidos para solicitar uma informação numérica.
-
GetText: elementos predefinidos para solicitar uma informação de texto.
-
OutputContent.OutputText
: Uma matriz de um ou mais camposText
contendo seu próprio texto para mostrar no terminal. Consulte os tipos de entrada abaixo para aprender como usar esses campos.
-
-
InputRequest.InputData
: Esta parte do corpo da solicitação lida com a informação do usuário:-
Device
: CustomerInput. -
InfoQualify
: Input. -
InputCommand
: Comando para lidar com o tipo de informação do usuário:- GetConfirmation: solicite confirmação ou assinatura.
- GetMenuEntry: peça para selecionar uma resposta para uma pergunta de múltipla escolha.
- DigitString: solicita informação numérica.
-
TextString: solicita informação de texto.
-
MaxInputTime
: Tempo limite em segundos. Este é o tempo que o usuário obtém para concluir sua resposta.
-
O exemplo a seguir mostra os campos comuns para todos os tipos de informação.
{ "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": "PREDEFINED_ELEMENTS_ID" }, "OutputText": [ {"Text": "Your own text"} ] } }, "InputData": { "Device": "CustomerInput", "InfoQualify": "Input", "InputCommand": "INPUT_TYPE", "MaxInputTime": 30 } } } }
String serviceID = "YOUR_UNIQUE_ATTEMPT_ID"; String saleID = "YOUR_CASH_REGISTER_ID"; String POIID = "YOUR_TERMINAL_ID"; SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest(); MessageHeader messageHeader = new MessageHeader(); messageHeader.setProtocolVersion("3.0"); messageHeader.setMessageClass( MessageClassType.DEVICE ); messageHeader.setMessageCategory( MessageCategoryType.INPUT ); messageHeader.setMessageType( MessageType.REQUEST ); messageHeader.setServiceID(serviceID); messageHeader.setSaleID(saleID); messageHeader.setPOIID(POIID); 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("PREDEFINED_ELEMENTS_ID"); outputContent.setPredefinedContent(predefinedContent); OutputText outputText = new OutputText(); outputText.setText("Your own text"); 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.INPUT_TYPE ); inputData.setMaxInputTime( BigInteger.valueOf(30) ); inputRequest.setInputData(inputData); saleToPOIRequest.setInputRequest(inputRequest); terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);
Alguns tipos de informações requerem campos adicionais ou valores específicos. Consulte os tipos de entrada abaixo.
-
-
Aguarde o usuário fornecer a informação solicitada usando os botões na tela ou o teclado do terminal.
A informação fornecida pelo cliente ou sua equipe não é validada em um formato.
Na resposta, o
InputResult
mostra se o usuário concordou ou discordou, forneceu uma assinatura, selecionou uma resposta para a pergunta de múltipla escolha, inseriu números ou texto ou recusou-se a fornecer informações.
Se o pedido expirar, a resposta conterá umEventNotification
com osEventDetails
: message=Did+not+receive+a+response+from+the+POI. -
Passe os dados relevantes do
InputResult
para o seu sistema para validação e uso posterior.
Confirmação
Em um InputRequest
solicitando que o cliente confirme alguma informação, é necessário especificar os campos comuns para coletar as informações do usuário, bem como os seguintes valores e campos específicos:
-
DisplayOutput.OutputContent.PredefinedContent.ReferenceID
: GetConfirmation. -
DisplayOutput.OutputContent.OutputText
: Uma matriz de quatro camposText
contendo seu próprio texto para mostrar no terminal.- O primeiro campo
Text
é o título. - O segundo campo
Text
representa um texto adicional que pode ser longo e é rolável. - O terceiro campo
Text
é o título do botão 'decline' à esquerda. -
O quarto campo
Text
é o título do botão 'agree' à direita.
- O primeiro campo
-
InputData.InputCommand
: GetConfirmation
O exemplo a seguir pede ao cliente para confirmar que 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? 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? 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 dos campos que você pode passar em uma solicitação de informação de confirmação, consulte a referência da API ConfirmationEntry InputRequest.
Na resposta, ConfirmedFlag
: true indica que o cliente tocou no botão 'agree' à direita ou pressionou para confirmar o seu acordo.
ConfirmedFlag
: false significa que o cliente tocou no botão 'decline' à esquerda ou pressionou .
{
"SaleToPOIResponse": {
"InputResponse": {
"InputResult": {
"Device": "CustomerInput",
"InfoQualify": "Input",
"Response": {
"Result": "Success",
"AdditionalResponse": "responseData=%7b%20%22unique_id%22%3a%20%22001560867383%22%20%7d"
},
"Input": {
"ConfirmedFlag": true,
"InputCommand": "GetConfirmation"
}
},
"OutputResult": {
"Device": "CustomerDisplay",
"InfoQualify": "Display",
"Response": {
"Result": "Success"
}
}
},
"MessageHeader": {
"ProtocolVersion": "3.0",
"SaleID": "POSSystemID12345",
"MessageClass": "Device",
"MessageCategory": "Input",
"ServiceID": "0207111104",
"POIID": "V400m-324688179",
"MessageType": "Response"
}
}
}
Para obter uma lista completa dos campos que você pode receber em uma resposta de informação de confirmação, consulte a referência da API ConfirmationEntry InputResponse.
Assinatura
Em um InputRequest
solicitando que o cliente assine algo e confirme, é necessário especificar os campos comuns para coletar a informação do cliente bem como os seguintes valores e campos específicos:
-
DisplayOutput.OutputContent.PredefinedContent.ReferenceID
: GetSignature. Além do texto que você especificar, o terminal mostrará uma caixa de entrada para o cliente desenhar sua assinatura. -
DisplayOutput.OutputContent.OutputText
: An array of fourText
fields containing your own text to show on the terminal.- O primeiro campo
Text
é o título. - O segundo campo
Text
contém informações adicionais. - O terceiro campo
Text
é o título do botão 'decline' à esquerda. -
O quarto campo
Text
é o título do botão 'agree' à direita.
- O primeiro campo
-
InputData.InputCommand
: GetConfirmation
O exemplo a seguir solicita a assinatura do cliente.
{
"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":"Do you accept the Delivery Waver form?"
}
]
}
},
"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("Do you accept the Delivery Waver form?");
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 dos campos que você pode transmitir em uma solicitação de entrada de assinatura, consulte a referência da API SignatureEntry InputRequest.
Na resposta, o AdditionalResponse
contém a assinatura fornecida pelo cliente. ConfirmedFlag
: true indica que o cliente tocou no botão 'agree' à direita ou pressionou para confirmar o acordo.
ConfirmedFlag
: false significa que o cliente tocou no botão 'decline' à esquerda ou pressionou .
{
"SaleToPOIResponse": {
"InputResponse": {
"InputResult": {
"Device": "CustomerInput",
"InfoQualify": "Input",
"Response": {
"Result": "Success",
"AdditionalResponse": "responseData=%7b%20%22unique_id%22%3a%20%22001560864516%22%2c%20%22signature%22%3a%20%7b%20%22data%22%3a%20%5b%20%7b%20%22x%22%3a%20%2249%22%2c%20%22y...signature_format%22%3a%20%22raw%22%20%7d%20%7d"
},
"Input": {
"ConfirmedFlag": true,
"InputCommand": "GetConfirmation"
}
},
"OutputResult": {
"Device": "CustomerDisplay",
"InfoQualify": "Display",
"Response": {
"Result": "Success"
}
}
},
"MessageHeader": {
"ProtocolVersion": "3.0",
"SaleID": "POSSystemID12345",
"MessageClass": "Device",
"MessageCategory": "Input",
"ServiceID": "0207111104",
"POIID": "V400m-324688179",
"MessageType": "Response"
}
}
}
Para obter uma lista completa dos campos que você pode receber em uma resposta de entrada de assinatura, consulte a referência da API SignatureEntry InputResponse.
Seleção de menu
Em um InputRequest
solicitando ao cliente que responda a uma pergunta de múltipla escolha, é necessário especificar os campos comuns para coletar informações do cliente bem como os seguintes valores e campos específicos:
-
DisplayOutput.OutputContent.PredefinedContent.ReferenceID
: MenuButtons. O terminal mostra as respostas para escolher como uma lista rolável de caixas que o usuário pode tocar para selecionar. -
DisplayOutput.OutputContent.OutputText
: Uma matriz de apenas um campoText
contendo seu próprio texto para mostrar no terminal. Use isso para especificar a pergunta. -
MenuEntry
: Uma matriz de até 15 itens representando as respostas para você escolher. Cada resposta tem:OutputFormat
: Text-
OutputText
: uma matriz de três camposText
com seu próprio texto que juntos formam a resposta.
O primeiro campoText
será exibido em negrito. Use uma sequência vazia para os camposText
não utilizados.
Por exemplo, você pode escrever uma resposta abreviada no primeiro campo, a resposta longa no segundo campo e não usar o terceiro campo. Ou você pode usar os três campos para o nome, descrição e rótulo do artigo.
-
InputData.InputCommand
: GetMenuEntry
O exemplo a seguir solicita que o cliente responda a uma pergunta da pesquisa.
{
"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":"MenuButtons"
},
"OutputText":[
{
"Text":"How was your visit?"
}
]
},
"MenuEntry":[
{
"OutputFormat":"Text",
"OutputText":[
{
"Text":"Excellent"
},
{
"Text":"Don't change a thing"
},
{
"Text":""
}
]
},
{
"OutputFormat":"Text",
"OutputText":[
{
"Text":"Great"
},
{
"Text":"Would surely come again"
},
{
"Text":""
}
]
},
{
"OutputFormat":"Text",
"OutputText":[
{
"Text":"Good"
},
{
"Text":"What I expected"
},
{
"Text":""
}
]
},
{
"OutputFormat":"Text",
"OutputText":[
{
"Text":"Mweh"
},
{
"Text":"Could have been better"
},
{
"Text":""
}
]
},
{
"OutputFormat":"Text",
"OutputText":[
{
"Text":"Terrible"
},
{
"Text":"Will never go here again"
},
{
"Text":""
}
]
}
]
},
"InputData":{
"Device":"CustomerInput",
"InfoQualify":"Input",
"InputCommand":"GetMenuEntry",
"MaxInputTime":120
}
}
}
}
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("MenuButtons");
outputContent.setPredefinedContent(predefinedContent);
OutputText outputText = new OutputText();
outputText.setText("How was your visit?");
outputContent.getOutputText().add(outputText);
displayOutput.setOutputContent(outputContent);
MenuEntry menuEntry1 = new MenuEntry();
menuEntry1.setOutputFormat( OutputFormatType.TEXT );
OutputText option1Line1 = new OutputText();
option1Line1.setText("Excellent");
OutputText option1Line2 = new OutputText();
option1Line2.setText("Don't change a thing");
OutputText option1Line3 = new OutputText();
option1Line3.setText("");
menuEntry1.getOutputText().add(option1Line1);
menuEntry1.getOutputText().add(option1Line2);
menuEntry1.getOutputText().add(option1Line3);
displayOutput.getMenuEntry().add(menuEntry1);
MenuEntry menuEntry2 = new MenuEntry();
menuEntry2.setOutputFormat( OutputFormatType.TEXT );
OutputText option2Line1 = new OutputText();
option2Line1.setText("Great");
OutputText option2Line2 = new OutputText();
option2Line2.setText("Would surely come again");
OutputText option2Line3 = new OutputText();
option2Line3.setText("");
menuEntry2.getOutputText().add(option2Line1);
menuEntry2.getOutputText().add(option2Line2);
menuEntry2.getOutputText().add(option2Line3);
displayOutput.getMenuEntry().add(menuEntry2);
MenuEntry menuEntry3 = new MenuEntry();
menuEntry3.setOutputFormat( OutputFormatType.TEXT );
OutputText option3Line1 = new OutputText();
option3Line1.setText("Good");
OutputText option3Line2 = new OutputText();
option3Line2.setText("What I expected");
OutputText option3Line3 = new OutputText();
option3Line3.setText("");
menuEntry3.getOutputText().add(option3Line1);
menuEntry3.getOutputText().add(option3Line2);
menuEntry3.getOutputText().add(option3Line3);
displayOutput.getMenuEntry().add(menuEntry3);
MenuEntry menuEntry4 = new MenuEntry();
menuEntry4.setOutputFormat( OutputFormatType.TEXT );
OutputText option4Line1 = new OutputText();
option4Line1.setText("Mweh");
OutputText option4Line2 = new OutputText();
option4Line2.setText("Could have been better");
OutputText option4Line3 = new OutputText();
option4Line3.setText("");
menuEntry4.getOutputText().add(option4Line1);
menuEntry4.getOutputText().add(option4Line2);
menuEntry4.getOutputText().add(option4Line3);
displayOutput.getMenuEntry().add(menuEntry4);
MenuEntry menuEntry5 = new MenuEntry();
menuEntry5.setOutputFormat( OutputFormatType.TEXT );
OutputText option5Line1 = new OutputText();
option5Line1.setText("Terrible");
OutputText option5Line2 = new OutputText();
option5Line2.setText("Will never go here again");
OutputText option5Line3 = new OutputText();
option5Line3.setText("");
menuEntry5.getOutputText().add(option5Line1);
menuEntry5.getOutputText().add(option5Line2);
menuEntry5.getOutputText().add(option5Line3);
displayOutput.getMenuEntry().add(menuEntry5);
inputRequest.setDisplayOutput(displayOutput);
InputData inputData = new InputData();
inputData.setDevice( DeviceType.CUSTOMER_INPUT );
inputData.setInfoQualify( InfoQualifyType.INPUT );
inputData.setInputCommand( InputCommandType.GET_MENU_ENTRY );
inputData.setMaxInputTime( BigInteger.valueOf(120) );
inputRequest.setInputData(inputData);
saleToPOIRequest.setInputRequest(inputRequest);
terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);
Para obter uma lista completa dos campos que você pode passar em uma solicitação de informação pelo menu, consulte a referência da API MenuEntry InputRequest.
Na resposta, a matriz MenuEntryNumber
indica a resposta que o usuário selecionou. Por exemplo, se a terceira resposta foi selecionada, o terceiro item na matriz é 1
e todos os outros itens da matriz são 0
.
Se o usuário se recusou a responder (pressionado ), o
InputResult
possui uma Response.Result
: Failure e Response.ErrorCondition
: Cancel.
{
"SaleToPOIResponse": {
"InputResponse": {
"InputResult": {
"Device": "CustomerInput",
"InfoQualify": "Input",
"Response": {
"Result": "Success",
"AdditionalResponse": "responseData=%7b%20%22unique_id%22%3a%20%22001560869035%22%20%7d"
},
"Input": {
"MenuEntryNumber": [
0,
0,
1,
0,
0
],
"InputCommand": "GetMenuEntry"
}
},
"OutputResult": {
"Device": "CustomerDisplay",
"InfoQualify": "Display",
"Response": {
"Result": "Success"
}
}
},
"MessageHeader": {
"ProtocolVersion": "3.0",
"SaleID": "POSSystemID12345",
"MessageClass": "Device",
"MessageCategory": "Input",
"ServiceID": "0207111104",
"POIID": "V400m-324688179",
"MessageType": "Response"
}
}
}
Para obter uma lista completa dos campos que você pode receber em uma resposta de entrada de pesquisa, consulte a referência da API MenuEntry InputResponse.
Entrada numérica
Em uma InputRequest
solicitando que o cliente insira numerais, é necessário especificar os campos comuns para coletar informações do cliente bem como os seguintes valores e campos específicos:
DisplayOutput.OutputContent.PredefinedContent.ReferenceID
: GetDigit. Além do texto que você especificar, o terminal mostrará uma instrução sobre como confirmar a informação.DisplayOutput.OutputContent.OutputText
: Uma matriz de apenas um campoText
contendo seu próprio texto para mostrar no terminal.InputData.InputCommand
: DigitStringInputData.DefaultInputString
: Espaço reservado para a caixa de entrada, para que o usuário saiba qual formato de informação você está esperando.
O exemplo a seguir mostra uma solicitação de número de telefone ao cliente.
{
"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":"Your phone number:"
}
]
}
},
"InputData":{
"Device":"CustomerInput",
"InfoQualify":"Input",
"InputCommand":"DigitString",
"MaxInputTime":30,
"DefaultInputString":"0612345678"
}
}
}
}
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("Your phone number:");
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("0612345678");
inputRequest.setInputData(inputData);
saleToPOIRequest.setInputRequest(inputRequest);
terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);
Para obter uma lista completa dos campos que você pode passar em uma solicitação de informação numérica, consulte a referência da API DigitEntry InputRequest.
Na resposta, o campo DigitInput
contém os numerais que o usuário digitou. Se o usuário se recusou a forncer a informação (pressionando ), o
InputResult
possui Response.Result
: Failure, Response.ErrorCondition
: Cancel, e um campo DigitInput
vazio.
{
"SaleToPOIResponse": {
"InputResponse": {
"InputResult": {
"Device": "CustomerInput",
"InfoQualify": "Input",
"Response": {
"Result": "Success",
"AdditionalResponse": "responseData=%7b%20%22unique_id%22%3a%20%22001560761701%22%20%7d"
},
"Input": {
"DigitInput": "0687164125",
"InputCommand": "DigitString"
}
},
"OutputResult": {
"Device": "CustomerDisplay",
"InfoQualify": "Display",
"Response": {
"Result": "Success"
}
}
},
"MessageHeader": {
"ProtocolVersion": "3.0",
"SaleID": "POSSystemID12345",
"MessageClass": "Device",
"MessageCategory": "Input",
"ServiceID": "0207111104",
"POIID": "V400m-324688179",
"MessageType": "Response"
}
}
}
Para obter uma lista completa dos campos que você pode receber em uma resposta de informação numérica, consulte a referência da API DigitEntry InputResponse.
Entrada de texto
Em uma InputRequest
solicitando que o usuário insira texto, é necessário especificar os campos comuns para coletar informações do cliente, bem como os seguintes valores e campos específicos:
DisplayOutput.OutputContent.PredefinedContent.ReferenceID
: GetText. Além do texto que você especificar, o terminal mostrará uma instrução sobre como confirmar a informação.DisplayOutput.OutputContent.OutputText
: Uma matriz de apenas um campoText
contendo seu próprio texto para mostrar no terminal.InputData.InputCommand
: TextStringInputData.DefaultInputString
: Espaço reservado para texto da caixa de entrada, para que o usuário saiba qual formato de informação você está esperando
O exemplo a seguir solicita ao cliente seu 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 dos campos que você pode passar em uma solicitação de informação de texto, consulte a referência da API TextEntry InputRequest.
Na resposta, o campo TextInput
field contains the text that the user entered. Se o usuário se negou a fornecer a informação (pressionado ), o
InputResult
possui Response.Result
: Failure, Response.ErrorCondition
: Cancel, e um campo TextInput
vazio.
{
"SaleToPOIResponse": {
"InputResponse": {
"InputResult": {
"Device": "CustomerInput",
"InfoQualify": "Input",
"Response": {
"Result": "Success",
"AdditionalResponse": "responseData=%7b%20%22unique_id%22%3a%20%22001560763410%22%20%7d"
},
"Input": {
"TextInput": "resultingemail@example.com",
"InputCommand": "TextString"
}
},
"OutputResult": {
"Device": "CustomerDisplay",
"InfoQualify": "Display",
"Response": {
"Result": "Success"
}
}
},
"MessageHeader": {
"ProtocolVersion": "3.0",
"SaleID": "POSSystemID12345",
"MessageClass": "Device",
"MessageCategory": "Input",
"ServiceID": "0207111104",
"POIID": "V400m-324688179",
"MessageType": "Response"
}
}
}
Para obter uma lista completa dos campos que você pode receber em uma resposta de informação de texto, consulte a referência da API TextEntry InputResponse.