Skip to main content
O acúmulo é o ciclo evento → pedido → seu ledger. A DeliveryVip nunca envia um “valor a acumular”: ela avisa que o pedido mudou de estado e expõe os dados; quem calcula é você.
A DeliveryVip envia o evento CONCLUDED, o operador busca o pedido com o bloco loyalty e credita no ledger; um CANCELLED desfaz o acúmuloA DeliveryVip envia o evento CONCLUDED, o operador busca o pedido com o bloco loyalty e credita no ledger; um CANCELLED desfaz o acúmulo

O ciclo do acúmulo

1

Receba o evento

Os eventos de pedido chegam por webhook (push na URL de notificação do app) ou por polling (GET /merchant/v3/events:polling). Nos dois canais o evento é só notificação: um envelope, sem dados de fidelidade.
  • eventType vem em MAIÚSCULAS (CONCLUDED, CANCELLED, …), e a grafia do campo de URL é orderURL.
  • Deduplique por eventId: o mesmo evento pode chegar mais de uma vez.
  • CONCLUDED é o gatilho de acúmulo; CANCELLED é o gatilho de estorno do acúmulo daquele pedido, nunca um mecanismo de débito.
2

Busque o pedido

Com o token de scope od.all, busque o pedido pela orderURL (ou GET /merchant/v3/orders/{orderId}).
No pedido de um cliente vinculado ao seu programa vem o bloco loyalty:
object
Só presente quando o cliente está vinculado ao seu programa.
Privacidade entre operadores: o bloco loyalty só aparece para o app cujo programa o cliente aderiu. Cada app vê apenas o próprio programa. Sem vínculo, o pedido não tem a chave loyalty; e o redemption só chega ao app que foi debitado.
3

Calcule a base: ela é sua

A DeliveryVip não manda valor calculado: a base de acúmulo é uma regra do seu programa, extraída dos totais do próprio pedido.
  • orderAmount (o total) inclui frete e taxas;
  • itemsPrice − discount é a base só de itens, sem frete.
Escolha a que o seu programa usa e aplique suas regras de percentual, campanha etc. O redemption.status muda a conta:Exemplo: itens de 40 com resgate de 25 estornado. Os totais indicam 15; 15 + 25 = 40 é o que o cliente realmente pagou.
4

Estorne o acúmulo no CANCELLED

Ao receber CANCELLED de um pedido sobre o qual você já acumulou, desfaça o acúmulo no seu ledger. O estorno do resgate (devolução do saldo debitado) é responsabilidade da DeliveryVip via reversal: o CANCELLED cuida só do acúmulo que você concedeu.

Webhook: regras de entrega

Se usar webhook como canal (recomendado), valem as regras da documentação de webhooks:
  • assinatura X-App-Signature: HMAC-SHA256 do corpo bruto com o Client Secret do app, a mesma verificação das chamadas do contrato;
  • o X-App-Id dos webhooks é um identificador fixo da plataforma, não o client_id do seu app;
  • qualquer 2xx é sucesso; apenas 408 e 429 são retentados (3 tentativas no total);
  • qualquer outro não-2xx, inclusive 5xx, é recusa definitiva (fica para reenvio manual);
  • 10 falhas consecutivas suspendem as entregas do app.
Responda 2xx rápido e processe o acúmulo de forma assíncrona. Se a busca do pedido falhar, não marque o eventId como processado: o polling (enquanto você não enviar o acknowledgment, por até 24 horas) ou um reenvio manual traz o evento de volta.