VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API atual/Referência completa/Mini-loja WhatsApp: pedidos

Oferta pós-compra

Lê, aceita ou recusa a oferta de um clique que o seller faz ao cliente logo depois do pedido, paga com um Pix adicional.

O upsell pós-compra é uma oferta que o seller configura no painel: logo depois de um pedido, o cliente vê "leve também este produto com desconto, só por alguns minutos". As regras escolhem uma oferta por pedido no momento em que o pedido é criado, com preço e prazo congelados.

Na mini-loja o cliente não tem cartão salvo na hora, então aceitar cria um pedido filho pago com um Pix adicional. Estas rotas só atendem pedido do próprio cliente; para qualquer outro, respondem 404 order_not_found.

Pedido criado→Oferta vigente→Aceitar (Pix) ou Recusar

Ler a oferta

GET/api/v1/storefront/wa-coex/order/{token}/{orderID}/post-purchase-offerPública

Oferta pós-compra vigente de um pedido

Quando não há o que mostrar (nenhuma regra serviu, venceu, já foi respondida ou a loja não usa upsell), a resposta é 200 com offer: null.

Parâmetros de caminho

tokenstringobrigatório
Token da mini-loja.
orderIDuuidobrigatório
Id do pedido.

Resposta

200Oferta vigente
json
{
  "offer": {
    "id": "e3c1c8f2-7c1d-4f2c-9b1a-5a3c9d1b7e10",
    "product": {
      "id": "3a872b9c-45e3-4307-85b2-e9a07ef7db06",
      "name": "Mouse sem fio",
      "image_url": "/uploads/exemplo/mouse.png"
    },
    "offer_price_cents": 4990,
    "original_price_cents": 6990,
    "expires_at": "2026-10-11T19:05:00Z",
    "payment_mode": "pix"
  }
}
200Sem oferta
json
{ "offer": null }

Campos da resposta

offerobject

A oferta, ou null.

iduuid
Id da oferta.
productobject
Produto oferecido: id, name, image_url.
offer_price_centsinteger
Preço da oferta, em centavos, congelado na criação do pedido.
original_price_centsinteger
Preço normal do produto, em centavos.
expires_atstring
Quando a oferta vence, em RFC 3339.
payment_modestring
cardpix
Como a oferta é paga. Na mini-loja o aceite é sempre por Pix.

Erros

StatusQuandoCorpo
404O pedido não existe ou não é deste cliente.{"error":"order_not_found"}
500Falha ao ler a oferta.{"error":"offer_failed"}

Aceitar a oferta

POST/api/v1/storefront/wa-coex/order/{token}/{orderID}/post-purchase-offer/acceptPública

Aceita a oferta e gera o Pix do pedido filho

Cria o pedido filho com o produto da oferta e devolve o Pix para pagá-lo. A oferta só pode ser aceita uma vez e enquanto estiver vigente.

Parâmetros de caminho

tokenstringobrigatório
Token da mini-loja.
orderIDuuidobrigatório
Id do pedido que recebeu a oferta.

Não tem corpo.

Exemplo de requisição

bash
curl -X POST "$BASE_URL/api/v1/storefront/wa-coex/order/$TOKEN/9f4a6d2e-1b7c-4c53-8d21-5e0b6a7c1f33/post-purchase-offer/accept"

Resposta

200Oferta aceita
json
{
  "payment_mode": "pix",
  "pix_code": "00020126580014br.gov.bcb.pix0136123e4567-e89b-12d3-a456-4266141740005204000053039865802BR5913Loja Exemplo6009Sao Paulo62070503***6304ABCD",
  "pix_qr_code": "iVBORw0KGgoAAAANSUhEUgAA...",
  "expires_at": "2026-10-11T19:35:00Z"
}

Campos da resposta

payment_modestring
Forma de pagamento do pedido filho. Na mini-loja, pix.
pix_codestring
Código Pix copia e cola do pedido filho.
pix_qr_codestring
Imagem do QR Code do Pix.
expires_atstring
Quando o Pix vence, em RFC 3339.

Erros

StatusQuandoCorpo
400A oferta não pôde ser aceita por outro motivo.{"error":"accept_failed"}
404O pedido não existe, não é deste cliente, ou a loja não usa upsell.{"error":"order_not_found"}
409A oferta já foi respondida, ou o produto acabou.{"error":"offer_gone"}
410A oferta venceu.{"error":"offer_expired"}

Recusar a oferta

POST/api/v1/storefront/wa-coex/order/{token}/{orderID}/post-purchase-offer/declinePública

Recusa a oferta

Fecha a oferta. Depois de recusada, GET volta offer: null.

Parâmetros de caminho

tokenstringobrigatório
Token da mini-loja.
orderIDuuidobrigatório
Id do pedido que recebeu a oferta.

Resposta

200Oferta recusada
json
{ "status": "declined" }

Erros

StatusQuandoCorpo
400A oferta não pôde ser recusada.{"error":"accept_failed"}
404O pedido não existe, não é deste cliente, ou a loja não usa upsell.{"error":"order_not_found"}
409A oferta já foi respondida.{"error":"offer_gone"}
410A oferta venceu.{"error":"offer_expired"}
O erro de recusa se chama accept_failed

Quando a recusa falha por um motivo inesperado, o corpo traz accept_failed, o mesmo código do aceite. Trate os dois do mesmo jeito.

Veja também

  • Ver o pedido
  • Pagamento do pedido
  • Pedir de novo
Anterior
Pedir de novo
Próxima
Proposta do representante
Nesta página
  • Ler a oferta
  • Resposta
  • Erros
  • Aceitar a oferta
  • Exemplo de requisição
  • Resposta
  • Erros
  • Recusar a oferta
  • Resposta
  • Erros
  • Veja também