accounts:link, chamado uma vez na adesão, e a consulta de saldo, chamada sempre que o checkout precisa mostrar quanto o cliente tem. Depois do vínculo, a DeliveryVip só conhece o cliente pelo accountId que você devolveu.


Vínculo da conta, com PIN opcional
Vincular o cliente (accounts:link)
consent.grantedAt é o momento do clique, com o offset da plataforma (-03:00). O perfil do cliente é atestado pela DeliveryVip: nunca chega um convidado nem um cadastro incompleto.
Corpo da requisição
string
obrigatório
O identificador do programa que você enviou no config push (
program.id).object
obrigatório
Perfil do cliente, completo.
object
obrigatório
Registro do consentimento (LGPD). Guarde-o no seu lado.
boolean
obrigatório
Espelha a capability
enrollment do programa. Se true e o CPF não for membro, cadastre-o. Se false, um não-membro deve receber 404.object
Presente apenas no reenvio depois de um desafio de PIN:
{"type": "pin", "answer": "<PIN digitado>"}.Exemplo
Respostas do link
- 200 conta
- 200 desafio de PIN
- 403 PIN reprovado
- 404 adesão fechada
Qualquer outra resposta (outro código, timeout, JSON inválido) conta como falha para o circuit breaker e o cliente vê o programa como indisponível no momento.
Saldo da conta
accountId opaco, nunca o CPF.
string
obrigatório
O
id que você devolveu no accounts:link.Resposta (200)
number
obrigatório
Saldo atual em BRL, como número JSON. Zeros à direita não são significativos:
25.0 e 25.00 são o mesmo número.string
BRL. Se omitido, a DeliveryVip assume BRL.object
Opcional. Limites de resgate só deste cliente; veja Limites por conta.
- A DeliveryVip cacheia a resposta por 60 segundos por conta: o saldo exibido pode atrasar até 1 minuto em relação ao seu ledger.
404significa que a conta não existe mais do seu lado: a DeliveryVip desfaz o vínculo e oferece a adesão de novo ao cliente. Nunca conta como falha para o circuit breaker.
Limites por conta
A resposta de saldo aceita, opcionalmente, o mesmo objetoredemptionLimits dos limites do programa:
Substituição integral, não merge campo a campo. Quando presente, o objeto da conta substitui por inteiro os limites do programa para aquele cliente.Declarar só
max na conta significa que aquele cliente não tem mínimo, mesmo que o programa declare um:O raciocínio: você é a autoridade sobre as suas próprias regras. Um merge produziria uma faixa que nenhum dos dois lados declarou. Este é o ponto que mais gera bug de integração: se o cliente deve manter o mínimo do programa, repita-o na conta.
- Omita o limite ausente; nunca envie
null.nullafirmaria “este cliente não tem mínimo”, que é diferente de “não declarei nada”. - Objeto ausente ou malformado (tipo fora de
fixed/percent, valor ausente ou não positivo): valem os limites do programa. - Viaja no mesmo cache de 60 segundos do saldo: mudar a regra de um cliente leva até 1 minuto para chegar ao checkout.
Quando usar: só se as suas regras de fato variam por cliente, como tier, segmento ou acordo individual. Uma regra única para todos pertence ao programa, não repetida em toda conta.E um alerta de modelagem que vale generalizar: o canal em que um dado chega não determina o escopo do dado. Um limite que chega dentro de uma consulta por cliente não é, por isso, um limite por cliente. Se o valor é o mesmo para todos, ele é do programa, ainda que a sua API o devolva junto do cadastro do portador.
Próximo passo
Resgate e estorno
Com o cliente vinculado e o saldo na tela, o próximo passo é o débito do resgate no fechamento do pedido.