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
InputRequest
para 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
PrintRequest
para imprimir a fatura usando o terminal. Isso é opcional. Depende das necessidades de seu negócio. - Você envia um
PaymentRequest
da 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
PaymentRequest
para 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.
Pressionar 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
SaleWakeUp
de 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
SaleWakeUp
do evento. - (Opcional) Escreva o texto para solicitar à sua equipe que digite o número de referência. A notificação
SaleWakeUp
do 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
SaleWakeUp
do 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
: SaleWakeUpEventDetails
: 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
EventDetails
da 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
InputRequest
para 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 daMessageHeader
padrão, explicada nos fundamentos da API de terminais, que incluem:ProtocolVersion
: 3.0MessageClass
: ServiceMessageCategory
: Payment.MessageType
: RequestSaleID
: 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 objetoSaleData
será 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 mesmaTransactionID
da 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 noSaleToAcquirerData
para acionar o terminal e mostrar as opções de gorjeta que você configurou.
Ou você pode usar oSaleToAcquirerData
eTokenRequestedType
para 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 oPaidAmount
.-
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
: NormalSplitPaymentFlag
: 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
PaymentResponse
na resposta da API do terminais conterá:-
SaleData
: Esta parte doPaymentResponse
ecoa o objetoSaleData
doPaymentRequest
. Este inclui aTransactionID
da venda (a fatura) à qual esse pagamento dividido pertence. -
PaymentResult
: Esta parte doPaymentResponse
mostra 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 CardAmountsResp.AuthorizedAmount
: O valor pago com esta transação. Sua caixa registradora deve acompanhar isso e adicioná-la aoPaidAmount
do pagamento dividido subsequente para a mesma venda.-
PaymentType
: Normal
-
Response
: Esta parte doPaymentResponse
mostra se são necessários mais parcelas do pagamento dividido para pagar a fatura:Result
: Success indica que o valor total daRequestedAmount
foi 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