Pagamento do pedido
Troca a forma de pagamento de um pedido que ainda não foi pago e consulta se o pagamento já foi confirmado.
Depois do checkout, o cliente pode precisar mexer no pagamento: o Pix venceu, o cartão foi recusado, ele prefere pagar de outro jeito. Estas duas rotas cobrem isso. Para tentar um cartão de novo, veja Pagar com cartão.
Trocar a forma de pagamento
/api/v1/storefront/wa-coex/order/{token}/{orderID}/paymentPúblicaTroca a forma de pagamento de um pedido não pago
Só pedidos aguardando pagamento ou com pagamento recusado podem trocar. Um pedido pago, enviado, entregue, cancelado ou de pagamento na entrega não troca (o campo can_change_payment do detalhe do pedido já diz). Entrega rápida só aceita forma online.
O total do pedido pode mudar com a nova forma: o servidor refaz a base do pedido (subtotal, frete, desconto e imposto) e aplica a taxa ou o desconto do método novo. Quando isso mudar o valor, a resposta traz total_cents e previous_total_cents. Trocando para Pix, a resposta já traz o código para pagar.
Parâmetros de caminho
tokenstringobrigatórioorderIDuuidobrigatórioCorpo da requisição
payment_methodstringobrigatóriocode, slug ou id de uma forma de pagamento ativa da loja (veja as formas disponíveis). Até 128 caracteres.invoiced_plan_idstringO corpo recusa campos desconhecidos: qualquer chave além das duas acima responde 400 invalid_body.
Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/storefront/wa-coex/order/$TOKEN/9f4a6d2e-1b7c-4c53-8d21-5e0b6a7c1f33/payment" \
-H "Content-Type: application/json" \
-d '{"payment_method":"pix"}'Resposta
{
"ok": true,
"payment_code": "pix",
"payment_name": "PIX",
"total_cents": 16387,
"previous_total_cents": 17250,
"auto_approved": false,
"processor_type": "online",
"can_change_payment": true,
"pix": {
"brcode": "00020126580014br.gov.bcb.pix0136123e4567-e89b-12d3-a456-4266141740005204000053039865802BR5913Loja Exemplo6009Sao Paulo62070503***6304ABCD",
"qr_png_base64": "iVBORw0KGgoAAAANSUhEUgAA..."
}
}Campos da resposta
okbooleantrue quando a troca foi gravada.payment_codestringpayment_name é o nome.total_centsintegerprevious_total_centsintegerauto_approvedbooleantrue quando a nova forma é faturada com aprovação automática e o pedido já avançou de status.processor_typestringonline, offline, invoiced.can_change_paymentbooleanpixobjectbrcode e qr_png_base64.Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | Corpo ilegível, maior que 4 KB ou com campo desconhecido. | {"error":"invalid_body"} |
| 400 | payment_method vazio, inexistente, inativo ou de ponto de venda (PDV). | {"error":"invalid_payment_method"} |
| 400 | Boleto faturado sem plano. | {"ok":false,"error":"invoiced_plan_required"} |
| 400 | Entrega rápida com forma offline. | {"ok":false,"error":"online_payment_required","message":"Entrega Rápida exige pagamento online"} |
| 404 | O pedido não existe ou não é deste cliente. | {"error":"order_not_found"} |
| 409 | O pedido não pode mais trocar (pago, enviado, entregue, cancelado...). | {"ok":false,"error":"payment_locked","stage":"out"} |
| 409 | O cliente pediu cancelamento do pedido. | {"ok":false,"error":"cancel_requested"} |
| 409 | Já existe um Pix ou boleto gerado por outro valor, e a troca mudaria o total. | {"ok":false,"error":"active_charge_exists","total_cents":17250,"message":"Já existe um Pix/boleto gerado para este pedido com outro valor. Fale com a loja para trocar a forma de pagamento."} |
| 409 | O novo total não pôde ser recalculado com certeza. Nada foi gravado. | {"ok":false,"error":"reprice_unavailable","total_cents":17250,"message":"Não foi possível recalcular o valor do pedido para essa forma de pagamento. Fale com a loja."} |
| 412 | A forma usa o limite de crédito e o limite não cobre o novo total. | {"ok":false,"error":"credit_limit_exceeded","limit_cents":50000,"available_cents":12000,"total_cents":16387,"message":"Limite de crédito insuficiente para este pedido."} |
| 503 | Falha ao gravar. | {"error":"post_sale_unavailable"} |
Consultar se o pagamento caiu
/api/v1/storefront/wa-coex/pay/{token}/status/{orderID}PúblicaEstado do pagamento de um pedido, para consulta repetida (polling)
Rota leve para consultar de poucos em poucos segundos enquanto o cliente paga: o Pix foi pago? O cartão em análise foi aprovado ou recusado? Só responde para pedido do próprio telefone.
Parâmetros de caminho
tokenstringobrigatórioorderIDuuidobrigatórioExemplo de requisição
curl "$BASE_URL/api/v1/storefront/wa-coex/pay/$TOKEN/status/9f4a6d2e-1b7c-4c53-8d21-5e0b6a7c1f33"Resposta
{
"payment_status": "C",
"status": "A",
"status_name": "Pago",
"status_color": "#16a34a",
"payment": { "state": "paid", "kind": "pix", "paid_at_unix": 1791745200 }
}Campos da resposta
payment_statusstringP pendente, C pago, F recusado...).statusstringstatus_name e status_color são o nome e a cor na loja.paymentobjectpayment do detalhe do pedido: state (paid, pending, analysis, refused, refunded, invoiced, on_delivery), kind e, conforme o caso, paid_at_unix, due_at_unix e card.Erros
| Status | Quando | Corpo |
|---|---|---|
| 204 | O pedido não existe, não é deste telefone, ou o banco está fora. | Sem corpo |