

Resgate dentro da criação do pedido e estorno depois
Débito síncrono (redemptions)
201, ou estourar o timeout, o pedido inteiro sofre rollback: o pedido não nasce, o cliente vê um aviso e o checkout continua sem o desconto.
Corpo da requisição
O UUID do pedido na DeliveryVip. É a chave de idempotência: um débito por pedido.
string
obrigatório
Sempre
balance na v1.number
obrigatório
Valor a debitar do saldo, como número JSON (até 2 casas;
25.0 e 25.00 são o mesmo número). É sempre o valor efetivamente descontado no pedido: pode ser menor do que o cliente reservou, se o carrinho encolheu. Já respeita os limites de resgate que você declarou.object
obrigatório
Resumo do pedido para o seu extrato.
Exemplo
Limites já aplicados
Se você declarouredemptionLimits no programa, ou na conta, o amount que chega aqui já os respeita: nunca abaixo do mínimo, nunca acima do máximo. A aplicação acontece no checkout da DeliveryVip, antes desta chamada.
Tetos percentuais são calculados sobre os itens do pedido (subtotal menos os demais descontos de carrinho), nunca sobre o total: frete e taxas não são resgatáveis. Se a sua própria regra incide sobre o total, o valor que chega aqui pode ser menor que o seu teto, nunca maior.
Isso não dispensa a sua validação: continue rejeitando com
422 e um code (ex.: below_minimum_order) o que as suas regras recusarem. Os limites declarados reduzem a chance de rejeição no checkout, mas a autoridade sobre o saldo e as regras é sempre sua.Respostas do débito
Resposta (201)
Idempotência
- O mesmo
relatedOrderIdcom o mesmoamountdeve responder201de novo, com o mesmoredemptionId. - O mesmo
relatedOrderIdcomamountdiferente deve ser rejeitado com422ecode: "idempotency_conflict". Reserve o409para saldo insuficiente.
Estorno (reversal)
string
obrigatório
O
redemptionId que você devolveu no 201 do débito.- Cancelamento e rejeição do pedido;
- Não-pagamento: pedidos que seguem aguardando pagamento 30 minutos depois de criados passam a não pagos, e o resgate é estornado. Falhas de cobrança que ainda podem ser tentadas de novo não disparam estorno, só a desistência definitiva.
O que o seu lado deve garantir
No acúmulo, um resgate estornado aparece no bloco
loyalty do pedido com redemption.status: "REVERSED". Os totais do pedido continuam mostrando o desconto que ele custeava.