Usando nossa solução não integrada?
Nossa solução não integrada não suporta o pagamento na mesa.
Dependendo de como você interage com seus clientes, pode ser necessário iniciar pagamentos a partir de um terminal em vez de uma caixa registradora. Isso permite que você aceite pagamentos de seus clientes em uma mesa, em um quarto de hotel ou na calçada.
O fluxo de pagamento iniciado pelo terminal oferece:
- Divisão de pagamentos de forma igual e desigual.
- Suporte para todos os métodos de pagamento adicionados à sua conta, bem como pagamentos em dinheiro.
- Combinações simples com opções de gorjeta.
 Os clientes podem inserir um valor de gorjeta no terminal a cada pagamento dividido. Se você permitir que sua equipe insira um número de referência quando iniciar o pagamento a partir do terminal, poderá registrar gorjeta com esse membro da equipe para evitar ajustes posteriores.
Como funciona
Para começar, você precisa configurar o recurso. Consulte Etapa 1: Configurar o pagamento na mesa. Depois de fazer isso, o fluxo é o seguinte:
- No terminal, sua equipe seleciona um botão para iniciar o pagamento na mesa e insere o número de referência.
- O terminal envia uma notificação de evento para a caixa registradora. A notificação informa à caixa registradora que o terminal está aguardando para receber uma solicitação de pagamento para o número de referência.
- Se o número de referência não for suficiente para decidir qual solicitação de pagamento enviar, você envia um InputRequestpara o terminal, solicitando mais detalhes à sua equipe. Por exemplo, peça um número de mesa, selecione em uma lista de comandas ou um número de entrega. Consulte Etapa 2: colete informações de sua equipe.
- Sua equipe fornece a entrada solicitada no terminal.
- Você envia um PrintRequestpara imprimir a fatura usando o terminal. Isso é opcional. Depende das necessidades de seu negócio.
- Você envia um 
  PaymentRequestda caixa registradora para o terminal. Consulte Etapa 3: faça um pagamento.
- O terminal mostra o valor a ser pago, o  Split check, e monstra opções para:
- Dividir a conta Igualmente. O terminal solicitará em quantas partes a conta deverá ser dividida.
- Dividir a conta de forma Desigual. O terminal solicitará o valor da primeira parte a ser paga. Essa também é a opção a ser escolhida se há um único cliente pagando a conta inteira.
 
- Em seguida, o terminal mostra o valor dividido e as opções para:
- Pague em Dinheiro (Cash). Sua equipe recebe o dinheiro e seleciona o botão no visor do terminal para confirmar.
- Pagar com Cartão (Card). Sua equipe entrega o terminal ao cliente para que ele possa pagar sua parte da divisão e responder às opções de gorjeta no terminal (se configuradas).
 
- Depois que o pagamento dividido é Aprovado e Enviado, o terminal imprime um recibo.
- Você processa a resposta do pagamento dividido, para acompanhar o valor pago. Consulte Etapa 4: receber o resultado do pagamento.
- Se houver um valor restante a ser pago, o terminal mostrará a próxima parte da divisão e as seguintes opções:
- Pague depois. Essa opção é útil quando há um grupo de clientes que está pagando sua parte da fatura em momentos diferentes. Quando sua equipe seleciona esse botão, o terminal mostra Cancelled. Quando alguém do grupo estiver pronto para pagar, sua equipe precisará iniciar o Pagamento na mesa novamente.
- Pague o restante. Você envia outro PaymentRequestpara o próximo pagamento dividido (consulte Etapa 3 e Etapa 4).
 Com divisões iguais, o terminal calcula o valor do próximo pagamento parcelado com base no número de divisões. Com divisões desiguais, o terminal mostra o valor restante e sua equipe insere o valor do próximo pagamento parcelado.
 
Isso continua até que o valor total tenha sido pago.
No terminal, você pode:
Pressionar  para voltar um passo no fluxo. Isso é possível até o momento em que Dinheiro ou Cartão é selecionado.
 para voltar um passo no fluxo. Isso é possível até o momento em que Dinheiro ou Cartão é selecionado.
Pressionar  para cancelar o fluxo a qualquer momento.
 para cancelar o fluxo a qualquer momento.
Antes de você começar
Antes de fazer transações de pagamento na mesa, certifique-se de:
- Ler e entender os fundamentos da API de terminais.
- Criar uma integração que permita efetuar um pagamento.
- Configurar notificações de eventos. Isso é necessário para permitir que o terminal envie uma notificação para a caixa registradora. A notificação informa à caixa registradora que o terminal está aguardando para receber uma solicitação de pagamento.
Verifique também se você está usando terminais de pagamento com uma impressora integrada e uma conexão Wi-Fi, por exemplo:
- V400c
- V400m. Este modelo pode mudar automaticamente para uma conexão 3G / 4G se a conexão Wi-Fi cair.
Etapa 1: configurar o pagamento à mesa
Nesta etapa, você:
- Habilite o recurso que permite ao terminal enviar uma notificação SaleWakeUpde evento para a caixa registradora. Esta notificação alerta a caixa registradora que o terminal está aguardando para receber uma solicitação de pagamento.
- Escreva o texto do botão que sua equipe seleciona no visor do terminal para iniciar o Pagamento na mesa. Selecionar o botão aciona a notificação SaleWakeUpdo evento.
- (Opcional) Escreva o texto para solicitar à sua equipe que digite o número de referência. A notificação SaleWakeUpdo evento incluirá o número de referência digitado pela sua equipe. Você pode usar isso, por exemplo, para recuperar uma conta associada ou registrar vendas e dicas por cada membro da equipe.
- Adicione lógica à sua caixa registradora para poder lidar com a notificação SaleWakeUpdo evento.
Depois de concluir esta etapa, você não precisará executá-la novamente.
Para ativar o pagamento à mesa e definir o texto mostrado no visor do terminal:
- 
Em sua Customer Area, vá para In-person payments > Terminals e selecione selecione seu terminal. 
- 
Na página do terminal, selecione a guia Terminal API. 
- 
Em Event Notification Buttons defina os seguintes valores: Campo Descrição Enable notification button Selecione Yes Notification category Selecione Sale wake up Title Digite o texto a ser exibido no botão que inicia o fluxo do terminal. Por exemplo, Pay@tTable Details Digite o texto para solicitar um número de referência. O número de referência pode consistir em no máximo 10 dígitos. Se você deixar esse campo vazio, o terminal enviará a notificação de evento SaleWakeUp imediatamente quando o botão for selecionado. 
- 
Selecione Save. 
O terminal agora pode enviar notificações 
  SaleWakeUp
 de eventos para a caixa registradora. Essas notificações incluem:
- EventToNotify: SaleWakeUp
- EventDetails: O número de referência que sua equipe digitou.
Quando a caixa registradora recebe essas notificações de eventos, ela precisa lidar com elas. Verifique se sua caixa registradora é capaz de:
- Processar o número de referência recebido no campo EventDetailsda notificação do evento.
- 
Recuperar as transações de venda (as contas) associadas ao terminal ou o número de referência e decida o que fazer a seguir. Por exemplo: - Se houver apenas uma fatura em aberto, envie o PaymentRequest. Ou envie aPrintRequest, para permitir que o terminal imprima a fatura, seguido daPaymentRequest.
- Se houver mais faturas em aberto, envie um 
  InputRequestpara solicitar mais detalhes à sua equipe.
 
- Se houver apenas uma fatura em aberto, envie o 
Etapa 2: colete informações de sua equipe
Ao receber uma notificação SaleWakeUp de evento do terminal, você precisa encontrar a fatura associada ao terminal ou o número de referência incluído na notificação e enviar uma solicitação de pagamento. No entanto, pode haver várias contas em aberto para você escolher. Nesse caso, faça o seguinte:
- Faça uma 
  InputRequest(ou uma série de solicitações de entrada) para solicitar que sua equipe insira mais informações no terminal.
 Por exemplo: Primeiro, solicite o número da tabela com uma solicitação de entrada de texto. Em seguida, envie uma solicitação de entrada do menu para mostrar uma lista de contas associadas ao número da tabela e peça à sua equipe para selecionar uma
- Processe as respostas às suas solicitações de entrada para que sua caixa registradora possa recuperar a fatura correta para enviar uma solicitação de pagamento.
Etapa 3: efetue um pagamento
Tecnicamente, o pagamento na mesa é um fluxo de pagamentos divididos. Você faz várias solicitações de pagamento subsequentes para a mesma venda até que o valor total tenha sido pago. Se um único cliente pagar a fatura inteira, você a trataria como uma divisão desigual do valor total e precisará de apenas uma solicitação de pagamento dividido para receber o valor total pago.
Nesse fluxo de pagamentos divididos, você:
- Defina o sinalizador de pagamentos divididos como true em cada solicitação de pagamento.
- Especifique um ID de transação de venda exclusivo na primeira solicitação de pagamento e repita esse mesmo ID em todos os pagamentos parcelados subsequentes para a mesma venda.
- Verifique se a sua caixa registradora controla o valor que já foi pago.
Depois de receber uma notificação SaleWakeUp de evento do terminal e coletar informações para determinar para qual fatura o terminal deseja receber uma solicitação de pagamento, faça o seguinte:
- 
Na sua caixa registradora, faça uma solicitação POST para um endpoint da API de terminais, especificando: - 
MessageHeader: Segue a estrutura daMessageHeaderpadrão, explicada nos fundamentos da API de terminais, que incluem:- ProtocolVersion: 3.0
- MessageClass: Service
- MessageCategory: Payment.
- MessageType: Request
- SaleID: Seu ID exclusivo para a caixa registradora.
- ServiceID: Seu ID exclusivo para esta 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.
 
- 
PaymentRequest.SaleData: O objetoSaleDataserá repetido na resposta. Este contém:- SaleTransactionID.TransactionID: Sua referência exclusiva para a venda (por exemplo, a fatura da tabela 5). Todos os pagamentos divididos pertencentes à mesma venda (a mesma fatura) devem usar essa mesma- TransactionIDda venda.
- SaleTransactionID.TimeStamp: Data e hora da solicitação de pagamento, no formato UTC.
- 
Outros campos, conforme necessário.. 
 Por exemplo, você pode usar tenderOption=AskGratuity noSaleToAcquirerDatapara acionar o terminal e mostrar as opções de gorjeta que você configurou.
 Ou você pode usar oSaleToAcquirerDataeTokenRequestedTypepara o reconhecimento cliente.
 
- 
PaymentRequest.PaymentTransaction: Esta parte do corpo da solicitação indica quanto resta a ser pago e quanto já foi pago:- AmountsReq.Currency: A moeda da transação.
- AmountsReq.RequestedAmount: A quantia que resta a ser paga. Para a primeira parcela, esse é o valor total da venda. Para uma parcela subsequente, esse é o valor da venda menos o- PaidAmount.
- 
PaidAmount: O valor já pago. Para a primeira parcela, este valor é zero. Para uma parcela subsequente, essa é a soma dos valores pagos em pagamentos parcelados anteriores para a mesma venda.
 
- 
PaymentRequest.PaymentData: Esta parte do corpo da solicitação é onde você define o sinalizador de pagamento dividido:- PaymentType: Normal
- SplitPaymentFlag: true
 
 Para obter mais informações sobre a estrutura de solicitação da API de terminais, consulte os fundamentos da API de terminais . A solicitação de pagamento é roteada para o terminal. Isso mostra as opções para dividir de forma Igual (Equally) ou de forma Desigual (Unequally), conforme descrito em Como funciona. 
 Quando o pagamento é processado, você recebe o resultado do pagamento.Se apenas um valor parcial tiver sido pago, o terminal mostrará opções para Pagar mais tarde (Pay later) ou Pagar o remanescente (Pay remainder). 
 Se Pay remainder for selecionado, o terminal calculará automaticamente a próxima parcela em caso de divisões iguais, ou solicitará o próximo valor em caso de parcelas desiguais.
 Em seguida, você faria a próxima solicitação de pagamento dividido, conforme mostrado no próximo exemplo.
- 
Etapa 4: receber o resultado do pagamento
Quando um pagamento dividido é processado, você recebe seu resultado.
- 
Se o pagamento for bem-sucedido, o corpo da PaymentResponsena resposta da API do terminais conterá:- 
SaleData: Esta parte doPaymentResponseecoa o objetoSaleDatadoPaymentRequest. Este inclui aTransactionIDda venda (a fatura) à qual esse pagamento dividido pertence.
- 
PaymentResult: Esta parte doPaymentResponsemostra o método de pagamento e o valor pago:- OnlineFlag: true para um pagamento com cartão ou carteira ou false para um pagamento em dinheiro.
- PaymentInstrumentData.PaymentInstrumentType: Cash ou Card
- AmountsResp.AuthorizedAmount: O valor pago com esta transação. Sua caixa registradora deve acompanhar isso e adicioná-la ao- PaidAmountdo pagamento dividido subsequente para a mesma venda.
- 
PaymentType: Normal
 
- 
Response: Esta parte doPaymentResponsemostra se são necessários mais parcelas do pagamento dividido para pagar a fatura:- Result: Success indica que o valor total da- RequestedAmountfoi pago. Partial indica que ainda há um valor para ser pago, portanto, são necessárias mais parcelas do pagamento dividido.
- AdditionalResponse: Uma sequência base64. Quando decodificado, este é um objeto JSON com dados de transação adicionais. Para um pagamento à vista, este campo não está incluído.
 
 
- 
- 
Se Pay later for selecionado no terminal ao receber uma solicitação de pagamento divido subsequente, o terminal exibirá Cancelled. Você recebe um resultado de pagamento contendo: - PaymentResponse.Response.Result: Failure
- 
PaymentResponse.Response.ErrorCondition: PaymentRestriction. Isso indica que o fluxo de pagamento à mesa foi interrompido. Não foi a parcela do pagamento divido anterior que falhou.
 
- 
Se o pagamento falhar, o terminal mostra Declined e você recebe um resultado de pagamento contendo: - PaymentResponse.Response.Result: Failure
- 
PaymentResponse.Response.ErrorCondition: ndica porque o pagamento falhou. Por exemplo, Refused indica que o emissor do cartão recusou a transação e Cancel indica que a transação foi cancelada no terminal. Consulte nossa documentação sobre motivos de recusa.
 
Mantendo sua equipe informada
O terminal mostrará as mensagens de progresso usuais enquanto um pagamento é processado. No entanto, quaisquer erros que ocorram em outros momentos do fluxo de pagamento na mesa são recebidos na caixa registradora. Como sua equipe não está perto da caixa registradora, eles não saberão o que aconteceu e o que precisam fazer. Para ajudá-los, você pode criar uma 
  DisplayRequest
 para enviar uma mensagem da caixa registradora para o terminal