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

Cancelar um pedido

Cancela na hora um pedido que a loja ainda não aceitou ou registra o pedido de cancelamento quando o pedido já está em preparo.

O que o cliente consegue fazer depende da etapa do pedido, que segue a rotina da loja e não o pagamento. A etapa vem no campo stage de Ver o pedido.

Etapa (stage)O que acontece ao cancelar
incoming (a loja ainda não aceitou)Cancela na hora, mesmo que já esteja pago. Se estava pago, o estorno é feito no gateway. O estoque volta.
preparing (a loja aceitou e prepara)Não cancela: registra um pedido de cancelamento para a loja decidir. A resposta é status: "requested".
out, done, closed (enviado, entregue, encerrado)Recusa com 409 e status: "too_late".

Pedido com pagamento recusado é sempre tratado como incoming: cancela direto.

Cancelar

POST/api/v1/storefront/wa-coex/order/{token}/{orderID}/cancelPública

Cancela o pedido ou registra o pedido de cancelamento

Quando cancela na hora, o cliente recebe no WhatsApp o aviso de pedido cancelado. A decisão e a gravação acontecem sob uma trava do pedido, então um aceite da loja que chegue ao mesmo tempo não é atropelado: nesse caso a resposta é too_late.

Parâmetros de caminho

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

Corpo da requisição

reasonstring
Motivo informado pelo cliente, até 500 caracteres. Ausente grava "Cancelamento solicitado pelo cliente (mini-shop WhatsApp)". O corpo inteiro é opcional.

Exemplo de requisição

bash
curl -X POST "$BASE_URL/api/v1/storefront/wa-coex/order/$TOKEN/9f4a6d2e-1b7c-4c53-8d21-5e0b6a7c1f33/cancel" \
  -H "Content-Type: application/json" \
  -d '{"reason":"Comprei sem querer"}'

Resposta

200Cancelado na hora
json
{ "ok": true, "status": "cancelled", "stage": "incoming" }
200Pedido de cancelamento registrado
json
{ "ok": true, "status": "requested", "stage": "preparing" }

Campos da resposta

okboolean
true quando a ação foi aceita.
statusstring
cancelledrequested
cancelled: o pedido foi cancelado. requested: a loja foi avisada e decide.
stagestring
incomingpreparing
Etapa em que o pedido estava.

Erros

StatusQuandoCorpo
404O pedido não existe ou não é deste cliente.{"error":"order_not_found"}
409Já saiu, foi entregue ou encerrado, ou mudou de etapa durante a chamada.{"ok":false,"status":"too_late","stage":"out"}
409Já há um estorno em andamento no pedido.{"ok":false,"status":"refund_in_progress","error":"refund_in_progress","message":"Já há um estorno em andamento neste pedido. Aguarde alguns instantes ou fale com a loja."}
409O gateway não conseguiu estornar o pedido pago. Nada foi cancelado.{"ok":false,"status":"refund_failed","error":"refund_failed","message":"Não conseguimos estornar o pagamento agora, então o pedido não foi cancelado. Tente de novo em instantes ou fale com a loja."}
422reason com mais de 500 caracteres.{"error":"cancel_reason_too_long"}
503Falha ao gravar.{"error":"post_sale_unavailable"}
Cancelar um pedido pago depende do estorno

Para cancelar na hora um pedido já pago, o gateway precisa estornar. Se o estorno falhar, o pedido não é cancelado e a resposta é refund_failed. Mostre a mensagem ao cliente e deixe-o tentar de novo ou falar com a loja.

Depois do pedido de cancelamento

Com status: "requested", o detalhe do pedido passa a vir com cancel_requested: true, sem Pix e sem opção de trocar o pagamento. Não deixe o cliente pagar um pedido que ele pediu para cancelar.

Veja também

  • Ver o pedido
  • Pagamento do pedido
  • Pedir de novo
Anterior
Ver e acompanhar o pedido
Próxima
Pagamento do pedido
Nesta página
  • Cancelar
  • Exemplo de requisição
  • Resposta
  • Erros
  • Veja também