Pular para o conteúdo principal

Jornada ponta a ponta

Esta página responde a pergunta central de quem está implementando: em que momento do atendimento eu chamo cada API?

A sequência é a mesma para comanda, RFID e Wallet — muda só o caminho do endereço. O QR Code tem particularidades, descritas no fim da página.

O que a Enjoy.it te entrega antes de começar

Isto é configuração da integração, definida na homologação:

Você recebeExemploPara quê
x-api-keyabc123...Autenticar as chamadas
idPlaceP-PDVIdentificar cada loja autorizada
Modelo financeiropostpaid ou prepaidDefinir se há saldo a controlar
Forma de recebimentoWebhook, consulta ou os doisDefinir como os chopes chegam
Modo directHabilitado ou nãoSó se o seu app abrir torneiras sozinho

A linha do tempo de um atendimento

Um atendimento tem três momentos:

  1. Chegada — o caixa abre a comanda (checkin) e, só no pré-pago, registra o crédito que o cliente pagou (recharges).
  2. Consumo (repete quantas vezes o cliente quiser) — o cliente serve o chope e ele entra na conta pelo caminho que você escolheu: webhook ou consulta.
  3. Saída — o caixa confere a conta (GET transactions) e bloqueia a comanda (checkout).

Passo a passo

EtapaO que o cliente fazO que o seu sistema fazAPI
1. IdentificaçãoApresenta a comanda, o cartão ou entra no appConsulta se já existe sessão aberta, quando precisarGET do identificador
2. AberturaInforma os dados no caixa ou no totemAbre a sessão com o plano, o cliente e, se houver, as URLs de webhookPOST .../checkin
3. Crédito (só pré-pago)Paga o valor inicialRegistra o crédito depois que o pagamento for aprovadoPOST .../recharges
4. LiberaçãoEncosta a comanda na torneiraNada. A Enjoy.it reconhece sozinhaNenhuma
5. ConsumoServe o chopeNada. A Enjoy.it mede e cria a transação ao fim da servidaNenhuma
6. ConciliaçãoContinua consumindo ou pede o extratoRecebe o consumo por webhook ou consulta, grava sem duplicar e dá baixa no que processouconsumptionIpn — a baixa é a sua resposta de sucesso — ou GET .../transactions seguido de PUT .../acknowledge
7. ExtrasCompra outro produto, recarrega ou pede estornoRegistra o produto, a recarga, o saldo novo ou o estornoPOST .../transactions, POST .../recharges, PUT .../balance, DELETE .../transactions/{idTransaction}
8. SaídaVai embora e devolve a comandaFaz a conferência final, cobra e bloqueia a comandaGET .../transactions e depois POST .../checkout

Onde isso encaixa nas suas telas

Tela do seu PDVChamada que você acrescenta
Abertura de comanda / mesaPOST .../checkin, depois de identificar o cliente
Recebimento de crédito (só pré-pago)POST .../recharges, depois da aprovação do pagamento
Consulta de extrato / espelho da contaGET .../transactions antes de montar a tela
Rotina que grava o consumo no seu bancoPUT .../acknowledge para dar baixa — só em integrações por consulta; no webhook a baixa é a sua resposta de sucesso
Venda de outros produtosPOST .../transactions (opcional); no pré-pago, também PUT .../balance
Fechamento de contaGET .../transactions para conferência e, após o pagamento, POST .../checkout
Cancelamento de itemDELETE .../transactions/{idTransaction}
Troca de comanda danificadaPUT /places/{idPlace}/tabs com o número antigo e o novo

Só avance quando

Uma checagem por etapa, para não deixar o cliente na mão:

EtapaSó siga adiante quando
AberturaA resposta for 201. Entregar a comanda antes disso significa cliente parado na torneira
CréditoA recarga responder 201. Só então mostre o saldo novo ao cliente
ConciliaçãoO consumo estiver gravado no seu banco, sem duplicidade
SaídaO checkout responder 200. Só então libere o cliente e reutilize a comanda

O que significa encerrar

O encerramento acontece quando o cliente vai embora. Não é apenas fechar a conta no PDV: é preciso bloquear a comanda na Enjoy.it para que ela não libere outra torneira depois da saída.

A ordem importa:

  1. O cliente avisa que vai sair.
  2. Recolha a comanda ou o cartão físico. Em Wallet, tire do app a opção de abrir torneiras.
  3. Consulte e importe os últimos consumos.
  4. Confira o saldo ou cobre o valor pós-pago.
  5. Chame o checkout usando exatamente o mesmo identificador usado na abertura.
  6. Aguarde 200 OK.
  7. Só então conclua o atendimento e devolva a comanda ao estoque de cartões.
Pagamento não é encerramento

Mesmo com pagamento recebido, a comanda continua liberando chope até o checkout ser concluído.

E não chame o checkout antes da conferência final: uma servida terminada poucos segundos antes da saída pode ainda não ter sido importada pelo seu sistema. Recolher o cartão antes de conferir resolve essa corrida — sem o cartão, ninguém serve mais nada.

Qual endpoint usar em cada caso

Troque {idPlace} e o identificador entre chaves pelos valores reais.

OperaçãoComandaRFIDWallet
ConsultarGET /places/{idPlace}/tabs/{idTab}GET /places/{idPlace}/rfids/{rfid}GET /places/{idPlace}/customers/{reference}
Abrir sessãoPOST /places/{idPlace}/tabs/{idTab}/checkinPOST /places/{idPlace}/rfid/{rfid}/checkinPOST /places/{idPlace}/customers/{reference}/checkin
Registrar recargaPOST /places/{idPlace}/tabs/{idTab}/rechargesPOST /places/{idPlace}/rfid/{rfid}/rechargesPOST /places/{idPlace}/customers/{reference}/recharges
Consultar consumosGET /places/{idPlace}/tabs/{idTab}/transactionsGET /places/{idPlace}/rfid/{rfid}/transactionsGET /places/{idPlace}/customers/{reference}/transactions
Registrar produto externoPOST /places/{idPlace}/tabs/{idTab}/transactionsPOST /places/{idPlace}/rfid/{rfid}/transactionsPOST /places/{idPlace}/customers/{reference}/transactions
Atualizar saldoPUT /places/{idPlace}/tabs/{idTab}/balancePUT /places/{idPlace}/rfid/{rfid}/balancePUT /places/{idPlace}/customers/{reference}/balance
Bloquear na saídaPOST /places/{idPlace}/tabs/{idTab}/checkoutPOST /places/{idPlace}/rfid/{rfid}/checkoutPOST /places/{idPlace}/customers/{reference}/checkout

Particularidades do QR Code

O QR Code é criado pela própria API — não é um cartão que já existe na loja. Por isso a sequência é um pouco diferente.

MomentoChamadaResultado
Criar a sessãoPOST /places/{idPlace}/qrcodes/checkin201 com o novo qrcode
Creditar pagamentoPOST /places/{idPlace}/qrcodes/{qrCode}/recharges201 com a recarga registrada
Entregar ao clienteExibir na tela ou POST /places/{idPlace}/qrcodes/{qrCode}/methods/whatsappO cliente recebe o código
ConciliarPreferencialmente consumptionIpn; havendo exatamente uma credencial ativa para o telefone, GET /places/{idPlace}/transactions/users?method=phone&phone={phone}Consumo gravado sem duplicidade
Invalidar na saídaDELETE /places/{idPlace}/qrcodes?phone={phone}Os códigos anteriores param de funcionar
QR Code não tem checkout

Na API atual, o QR Code não possui um endpoint de checkout equivalente ao de comanda, RFID e Wallet.

Quando for obrigatório impedir novos consumos na saída, invalide os códigos pelo telefone e não entregue ao cliente o novo código que vem na resposta. Esse novo código preserva saldo e bônus; o tratamento desse valor deve ser combinado na homologação.

Próximo passo

Veja como trazer os chopes para o seu sistema em Receber os consumos e dar baixa, e o detalhamento do modelo que você escolheu: pós-pago ou pré-pago. Para totens e aplicativos, veja Totens e Wallets.