VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API legada/Guia rápido

Pedidos

Como funcionam os pedidos na API compatível com a Venddor 1.0, o ciclo de status em letras, o modelo de sub-pedidos e o mapa de todas as rotas da API compatível com a Venddor 1.0.

Um pedido é o registro de uma compra: quem comprou, o que, por quanto, como vai pagar, para onde vai e em que etapa está. Ele nasce no checkout da loja (ou por esta API, quando a venda vem de um ERP, de um PDV ou do atendimento) e acompanha toda a vida da compra: pagamento, separação, envio, entrega, devolução.

Esta seção documenta como operar pedidos pela API compatível com a Venddor 1.0 (/api/v1.0/orders...): o contrato da Venddor 1.0, para clientes escritos para a plataforma antiga. As respostas têm valores em string decimal, datas em Unix timestamp e status em letra.

Pontos-chave
  • O status do pedido é uma letra (O, P, S...), mas a letra não é a inicial do nome e cada loja tem o seu cadastro de status. Peça o cadastro da loja em vez de assumir (veja a tabela de status da home da seção).
  • Compras com produtos de mais de um seller viram um pedido pai e um pedido por seller. O detalhe do pai traz is_parent_order: "Y" e os ids dos filhos em suborder_ids; na lista, o pai aparece como N e sem filhos.
  • Dinheiro é string decimal ("49.90") e datas são Unix timestamp em segundos. A exceção é o amount do refund, que é inteiro em centavos.
  • O DELETE de um pedido cancela o pedido e não estorna o pagamento (Cancelar pedido).

Como funciona

O ciclo de vida de um pedido

Pendente→Processando→Enviado→Entregue→Concluído

O caminho mais comum numa loja padrão. Pago é um passo opcional entre pendente e enviado (muitos gateways levam o pedido direto a Processando quando o pagamento é aprovado). Cancelado, Falho, Em espera, Reembolsado e Chargeback são os desvios.

codeLetraQuando acontece
pendingOO pedido foi recebido e aguarda pagamento ou confirmação.
processingPPagamento aprovado ou pedido em preparação.
paidAPagamento confirmado (passo opcional).
on_holdHParado por alguém da loja, à espera de algo.
failedFPagamento recusado. O estoque volta.
shippedSO pacote saiu da loja.
deliveredCO cliente recebeu.
completedKConcluído, sem pendências de pós-venda.
cancelledICancelado. O estoque volta. Pode ser reaberto.
refundedRDinheiro devolvido. Estado final.
chargebackZO cliente contestou o pagamento no cartão.

Essa é a instalação padrão. Cada loja pode renomear, esconder e criar status, e mudar letras. Como mudar o status está em Alterar o status.

O fluxo típico de uma integração (ERP, WMS)

  1. Buscar pedidos novos

    Chame Listar pedidos filtrando pelo status inicial e pela data do último pedido que você processou. Guarde o id de cada pedido: ele é a chave para todo o resto.

  2. Ler o detalhe

    Consultar pedido devolve itens, endereços, pagamento e sub-pedidos. Importe no seu sistema.

  3. Confirmar a importação e devolver a nota

    Grave o código do pedido no ERP e a nota fiscal no pedido (Sincronização com ERP) ou, para observações e rastreio, use Alterar pedido.

  4. Despachar

    Grave o código de rastreio com Alterar pedido (tracking_number) e depois mude o status para enviado. O cliente recebe o e-mail de envio, se o status estiver configurado para isso.

  5. Tratar exceções

    Cancelamentos (Cancelar pedido), devoluções e reembolsos (Reembolsos).

Conceitos-chave

Formato da API

ItemComo a API trabalha
AutenticaçãoHTTP Basic com e-mail:chave_de_api de um administrador, ou Bearer JWT
PermissãoAdministrador
IdsUUID em string (decimal em string em /api/...)
DinheiroString decimal: "49.90"
DataUnix timestamp em segundos (timestamp)
StatusLetra: "P"
Lista{"orders":[...],"params":{page,items_per_page,total_items}}
Erros{"message":"...","status":404}

Autenticação

Um administrador gera uma chave de API para o próprio usuário no painel e você envia Authorization: Basic base64(e-mail:chave) em toda chamada. Authorization: Bearer <JWT> também funciona. Usuário que não é administrador recebe 403. A mesma rota responde com e sem /v1.0 (/api/orders e /api/v1.0/orders), com maiúsculas ou minúsculas e com barra no final.

Token de app. Para apps de terceiros, sem usuário, veja Pedidos por token de app.

Ids

Em /api/v1.0, todo id é um UUID em string (a8a3c7a3-5f15-45a8-a385-4f20fbf8b722). Na forma sem versão (/api/orders), pensada para clientes que esperam o id inteiro da Venddor 1.0, os ids saem como números decimais dentro de uma string ("681822115"), derivados do UUID. Eles também são aceitos na entrada (caminho, query e corpo). Não misture as duas formas no mesmo cliente: escolha uma. O UUID é aceito nas duas rotas.

Dinheiro, datas e fuso

Todo valor é string decimal com ponto e duas casas ("225.00"), exceto o amount do refund, que é inteiro em centavos. As datas são Unix timestamp em segundos (UTC). O filtro de data por dia (time_from/time_to) trabalha em dias inteiros.

Pedido pai e pedidos filhos

Uma compra com itens de sellers diferentes gera um pedido pai (o que o cliente vê) e um pedido por seller (o que o seller cuida). O pai não deve ser alterado à mão: o status dele é calculado a partir dos filhos. Os filhos apontam para o pai em parent_order_id e usam o número do pai mais -V1, -V2... O detalhe do pai (GET /orders/{id}) informa is_parent_order: "Y" e suborder_ids.

Cancelar, reembolsar e excluir

Cancelar muda o status e devolve o estoque; o dinheiro não volta sozinho, só com o reembolso. Reembolsar devolve o pagamento. O DELETE desta API cancela, não apaga o registro. São coisas diferentes: Cancelar pedido, Reembolsos.

Endpoints

Auth: Admin é o administrador (Basic ou Bearer). Seller é o usuário do seller. App é o token de app.

MétodoRotaO que fazAuthPágina
GET/api/v1.0/ordersLista pedidosAdminListar pedidos
GET/api/v1.0/users/{id}/ordersPedidos de um clienteAdminListar pedidos
GET/api/v1.0/orders/{id}Consulta um pedidoAdminConsultar pedido
GET/api/v1.0/orders/{id}/productsItens do pedidoAdminConsultar pedido
POST/api/v1.0/ordersCria pedidoAdminCriar pedido
PUT/api/v1.0/orders/{id}Altera dados ou statusAdminAlterar pedido, Alterar o status
GET/api/v1.0/orders/{id}/status-historyHistórico de statusAdminHistórico do pedido
DELETE/api/v1.0/orders/{id}Cancela o pedidoAdminCancelar pedido
POST/api/v1.0/orders/{id}/refundReembolsaAdminReembolsos
PUT/api/v1.0/extra_order_fields/{order_id}Grava a nota fiscal do ERPAdminSincronização com ERP
PUT/api/v1.0/orders_ext/{id}Grava o orderSAPAdminSincronização com ERP
GET/api/v1.0/vendor_orders (vn_orders_list_api)Pedidos do seller (app)SellerApp do seller
GET, PUT/api/v1.0/vendor_order/{id} (vn_order_api/{id})Pedido do seller (app)SellerApp do seller
GET, POST, PUT, DELETE/api/v1.0/statuses (/{id})Cadastro de status de pedidoAdminStatus de pedido
GET, POST, PUT, DELETE/api/v1.0/shipments (/{id})Envios do pedidoAdminEnvios do pedido
GET/api/admin/orders, /api/admin/orders/{id}Leitura por token de appAppToken de app
PUT/api/admin/orders/{id}/statusStatus por token de appAppToken de app
GET, POST/api/admin/orders/{id}/shipmentsRemessas por token de appAppToken de app

Duas rotas da API 1.0 existem só para responder 405 (Method Not Allowed): PUT /api/v1.0/orders (sem id) e POST /api/v1.0/orders/{id}. Elas não fazem parte da integração.

Erros comuns

  1. Filtrar a lista por nome de status (status=shipped). A tabela antiga mapeia nomes longos para outras letras (shipped vira P, refunded vira D) e o filtro devolve pedidos errados ou nenhum. Filtre pela letra.
  2. Mudar o status com um nome longo ({"status":"shipped"}). Nomes fora da tabela antiga viram pending sem erro e o pedido volta para pendente. Mande a letra do cadastro de status da loja.
  3. Presumir que a letra é a inicial do nome: C é entregue (não cancelado), cancelado é I. Peça o cadastro da loja ao administrador (padrão na tabela de status da home da seção).
  4. Tratar pai e filhos como pedidos independentes ao somar vendas. A lista traz os dois; somar tudo conta o dinheiro em dobro. Ignore itens com parent_order_id, ou ignore os pais, mas nunca os dois.
  5. Enviar dinheiro no formato errado. Os valores são string decimal ("49.90"). No refund, o amount do corpo é inteiro em centavos.
  6. Esperar que cancelar estorne o pagamento. O cancelamento só muda o status e devolve o estoque; o reembolso é uma chamada à parte.

Próximos passos

Listar pedidos
Busque pedidos por status, data, cliente e mais.
Alterar o status
As regras de transição e o que cada mudança dispara.
Criar pedido
Registre uma venda de ERP, PDV ou atendimento.
Sincronização com ERP
Grave a nota fiscal e o código do pedido no ERP.
Anterior
Perguntas frequentes
Próxima
Listar pedidos
Nesta página
  • Como funciona
  • O ciclo de vida de um pedido
  • O fluxo típico de uma integração (ERP, WMS)
  • Conceitos-chave
  • Formato da API
  • Autenticação
  • Ids
  • Dinheiro, datas e fuso
  • Pedido pai e pedidos filhos
  • Cancelar, reembolsar e excluir
  • Endpoints
  • Erros comuns
  • Próximos passos