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
/api/v1/storefront/wa-coex/order/{token}/{orderID}/cancelPúblicaCancela 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órioToken da mini-loja.
orderIDuuidobrigatórioId do pedido.
Corpo da requisição
reasonstringMotivo 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
okbooleantrue quando a ação foi aceita.statusstringcancelledrequestedcancelled: o pedido foi cancelado. requested: a loja foi avisada e decide.stagestringincomingpreparingEtapa em que o pedido estava.
Erros
| Status | Quando | Corpo |
|---|---|---|
| 404 | O pedido não existe ou não é deste cliente. | {"error":"order_not_found"} |
| 409 | Já saiu, foi entregue ou encerrado, ou mudou de etapa durante a chamada. | {"ok":false,"status":"too_late","stage":"out"} |
| 409 | Já 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."} |
| 409 | O 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."} |
| 422 | reason com mais de 500 caracteres. | {"error":"cancel_reason_too_long"} |
| 503 | Falha ao gravar. | {"error":"post_sale_unavailable"} |