Pular para o conteúdo principal

QR Code

Use estes endpoints em totens de autoatendimento e jornadas sem cartão físico. Diferente da comanda e do RFID, o QR Code é criado pela própria API — não é uma credencial que já existe na loja.

Resumo

MétodoEndpointFinalidade
POST/places/{idPlace}/qrcodes/checkinCriar um QR Code de consumo
POST/places/{idPlace}/qrcodes/{qrCode}/rechargesRegistrar uma recarga
POST/places/{idPlace}/qrcodes/{qrCode}/methods/whatsappEnviar o QR Code por WhatsApp
DELETE/places/{idPlace}/qrcodes?phone={phone}Cancelar e substituir os QR Codes de um consumidor

Parâmetros e erros comuns

Parâmetros de caminho

ParâmetroTipoObrigatórioDescrição
idPlacestringSimCódigo do estabelecimento. Precisa estar no escopo da sua chave
qrCodestringSimO código devolvido em Criar um QR Code

Erros comuns

StatusCódigoMensagemQuando acontece
400validação do payloadCampo obrigatório ausente ou com tipo errado
403Not authorized to interact with this place (idPlace)A chave não tem acesso a esse estabelecimento
4044042RFID card not found in userRfid table.O qrCode informado não corresponde a nenhuma credencial
4234231Place suspended!O estabelecimento está suspenso
Não existe checkout de QR Code

A API não possui um endpoint de checkout equivalente ao de comanda, RFID e Wallet. Para impedir consumo na saída, use Cancelar e substituir e não entregue o novo código devolvido.

Criar um QR Code

Cadastra o consumidor, gera um novo código e abre a sessão. É o check-in do fluxo de totem.

POST /places/{idPlace}/qrcodes/checkin

Corpo da requisição

CampoTipoObrigatórioDescrição
planstringSimprepaid ou postpaid
consumerobjetoSimDados do consumidor. Ver tabela abaixo
hasConsumptionLimitbooleanNãoEm pré-pago use true, senão a torneira libera sem saldo
balancenumberNãoSaldo inicial em reais
bonusnumberNãoCrédito de cortesia em reais
consumptionIpnstringNãoURL chamada a cada consumo. Informe apenas se você usa webhook
balanceIpnstringNãoURL consultada pela Enjoy.it para obter o saldo antes de liberar a torneira
broughtGlassbooleanNãoIndica que o consumidor trouxe o próprio copo
glassPricenumberNãoValor do copo, quando aplicável

Campos de consumer:

CampoTipoObrigatórioDescrição
namestringSimNome apresentado no totem e nos relatórios
cellphonestringNãoNecessário para enviar o código por WhatsApp e para cancelar depois
consumerReferencestringNãoCódigo do consumidor no seu sistema
documentstringNãoDocumento, apenas dígitos
emailstringNãoE-mail
genderstringNãomale, female ou other
birthdatestringNãoData de nascimento
showLeaderboardbooleanNãoAutoriza exibir o consumidor em ranking
optInsobjetoNãoPermissões de contato. Contém marketing (boolean)
regionobjetoNãoEndereço: street, postalcode, number, neighborhood, city, state
{
"plan": "prepaid",
"hasConsumptionLimit": true,
"consumer": {
"name": "Maria Silva",
"cellphone": "+5511999999999",
"document": "12345678900"
}
}

Resposta 201

CampoTipoDescrição
qrcodestringO código gerado. Guarde: é ele que identifica a credencial nas demais chamadas
{
"qrcode": "ENJ0000123456ABCD"
}
aviso

A chave da resposta é qrcode, toda em minúsculas, enquanto o parâmetro de caminho dos outros endpoints é {qrCode}.

Guarde o código sem exibi-lo ainda: em operação pré-paga, entregue-o ao consumidor somente depois de registrar a recarga, senão ele vai à torneira e não consegue servir.

Erros

StatusCódigoMensagemQuando acontece
4224221It was not possible to link the phone number with the document provided.Telefone e documento pertencem a cadastros diferentes

Registrar uma recarga

Credita saldo no QR Code. Chame somente depois de o pagamento ser aprovado.

POST /places/{idPlace}/qrcodes/{qrCode}/recharges

Corpo da requisição

CampoTipoObrigatórioDescrição
valuenumberSimValor creditado, em reais
paymentMethodstringNãodebit-card, credit-card, cash ou on-the-house (cortesia)
{
"value": 100,
"paymentMethod": "credit-card"
}

Resposta 201

Corpo vazio. Só exiba, imprima ou envie o QR Code depois deste 201.

{}

Erros

StatusCódigoMensagemQuando acontece
404Missing value!value ausente ou não numérico. Repare que o status é 404, não 400
4004002This tab is not open.A credencial não tem sessão aberta

Enviar por WhatsApp

Envia o QR Code e o saldo atual para o telefone cadastrado no check-in.

POST /places/{idPlace}/qrcodes/{qrCode}/methods/whatsapp

Parâmetros de caminho

ParâmetroTipoObrigatórioDescrição
methodstringSimÚnico valor aceito hoje: whatsapp

Não possui corpo. O destino é o cellphone informado no check-in — se o consumidor não tiver telefone cadastrado, não há para onde enviar.

Resposta 200

Corpo vazio.

{}

Erros

StatusMensagemQuando acontece
400Method not supportedmethod diferente de whatsapp
400Missing qrCodeCaminho sem o código

Cancelar e substituir QR Codes do consumidor

Invalida todos os QR Codes ativos do consumidor no estabelecimento e devolve um novo código com os saldos consolidados.

DELETE /places/{idPlace}/qrcodes?phone={phone}

Query string

ParâmetroTipoObrigatórioDescrição
phonestringSimTelefone do consumidor. Codifique o + como %2B

Não possui corpo.

Resposta 200

CampoTipoDescrição
qrcodestringNovo código, já ativo, que substitui todos os anteriores
balancenumberSoma dos saldos das credenciais canceladas, em reais
bonusnumberSoma dos créditos de cortesia das credenciais canceladas
{
"qrcode": "ENJ0000987654WXYZ",
"balance": 42.5,
"bonus": 0
}
O que fazer com o novo código depende da sua intenção
Sua intençãoO que fazer
Substituir um código perdidoEntregue o novo código e remova os anteriores do totem ou do app
Encerrar o acesso na saídaNão exiba nem envie. O saldo consolidado segue a regra comercial combinada na homologação

Erros

StatusCódigoMensagemQuando acontece
4044042User not foundNenhum consumidor com esse telefone
4044041No QR codes found for this userO consumidor existe, mas não tem QR Code ativo neste estabelecimento