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

Pedidos (REST)

A API de pedidos gerencia os pedidos de clientes da sua loja: criar, consultar, atualizar e excluir.

Os pedidos são o centro de qualquer plataforma de e-commerce. A API de pedidos permite gerenciar os pedidos de clientes da sua loja Venddor: você pode criar, consultar, atualizar e excluir pedidos. Um pedido é o registro de uma compra, com o cliente, os produtos, o pagamento e os dados de entrega.

Todas as chamadas desta página usam as credenciais HTTP Basic de um administrador ($EMAIL:$API_KEY) e o endereço da sua loja ($BASE_URL). Por isso os endpoints abaixo aparecem como $BASE_URL/api/orders.

Pontos principais
  • A API cobre o ciclo de vida completo do pedido e atende tanto pedidos enviados pelo cliente quanto pedidos criados por um administrador.
  • Um pedido recém-criado sempre começa com o status O (Aberto). Você só consegue mudar o status atualizando o pedido.
  • Ids, totais e datas voltam como strings. Os preços são strings decimais como "19.99" e as datas são timestamps UNIX.
  • Um PUT que envia products substitui a lista inteira de produtos: qualquer produto que você deixar de fora é removido do pedido.
  • Excluir um pedido é permanente. Na maioria dos casos de negócio, a referência recomenda atualizar o status em vez de excluir.

Como funciona

Os pedidos costumam seguir este fluxo dentro da Venddor.

  1. O cliente monta o carrinho
    O cliente adiciona produtos ao carrinho e vai para o checkout.
  2. O cliente envia o pedido
    O cliente envia o pedido com as informações de entrega e de pagamento.
  3. O pedido é criado
    O pedido é criado no sistema com o status "Aberto".
  4. O pagamento é processado
    Se houver pagamento, ele é processado e o status do pedido é atualizado de acordo com o resultado.
  5. O pedido é atendido
    O pedido é atendido e enviado, e é marcado como concluído quando chega ao cliente.
Aberto→Em processamento→Concluído
Nota

Os administradores também podem criar pedidos manualmente, sem passar pelo checkout normal do cliente. Isso serve para pedidos feitos por telefone, acordos especiais com um cliente ou qualquer outro caso em que você precise criar o pedido diretamente.

Códigos de status do pedido

A visão geral de pedidos lista estes códigos de status.

CódigoStatusDescrição
OAberto (Open)O pedido foi criado, mas ainda não foi processado
PEm processamento (Processing)O pedido está sendo processado
CConcluído (Complete)O pedido foi atendido e concluído
FFalhou (Failed)O processamento do pedido falhou (por exemplo, pagamento recusado)
DRecusado (Declined)O pedido foi recusado pelo administrador
BEm espera por estoque (Backordered)O pedido contém produtos que estão atualmente em espera por estoque
XCancelado (Cancelled)O pedido foi cancelado pelo cliente ou pelo administrador
Nota

As páginas de listagem e de filtros desta seção nomeiam os códigos de forma um pouco diferente: elas descrevem P como processado, I como cancelado e acrescentam Y para "aguardando ligação". Os nomes e as funções dos status são configurados pelo dono da loja e podem variar de uma loja para outra. Veja Listar pedidos e Paginação, ordenação e filtros.

Conceitos principais

O que a listagem aceita

A visão geral descreve o GET /orders com estes parâmetros de consulta. Todos são opcionais.

ParâmetroTipoDescrição
statusstringFiltra os pedidos por status (por exemplo, "open", "processed", "completed")
user_idintegerFiltra os pedidos pelo id do cliente
date_fromstringFiltra os pedidos criados depois da data informada (formato: YYYY-MM-DD)
date_tostringFiltra os pedidos criados antes da data informada (formato: YYYY-MM-DD)
items_per_pageintegerQuantidade de pedidos por página (padrão: 10, máximo: 100)
pageintegerNúmero da página (padrão: 1)

A referência completa de paginação, ordenação e filtros está em Paginação, ordenação e filtros.

O pedido que você recebe

O GET /orders/{order_id} retorna as informações detalhadas de um pedido. A visão geral mostra este exemplo, com os detalhes do pagamento, os produtos e o endereço de entrega:

json
{
  "order_id": "12345",
  "status": "P",
  "user_id": "42",
  "timestamp": "1618500452",
  "payment": {
    "payment_id": "PM12345",
    "payment_method": "credit_card",
    "status": "paid"
  },
  "products": [
    {
      "item_id": "456",
      "product_id": "101",
      "product_code": "TSH-BLK-L",
      "product_name": "Black T-shirt",
      "price": "19.99",
      "amount": "2"
    },
    {
      "item_id": "457",
      "product_id": "204",
      "product_code": "CAP-RED",
      "product_name": "Red Cap",
      "price": "12.50",
      "amount": "1"
    }
  ],
  "shipping_address": {
    "address": "123 Main Street",
    "city": "Anytown",
    "state": "CA",
    "country": "US",
    "zipcode": "12345"
  },
  "shipping_method": "standard",
  "total": "52.48"
}

A referência campo a campo do objeto de pedido, com os formatos devolvidos pela consulta, está em Obter um pedido.

Criar, atualizar e excluir

Para criar um pedido (POST /orders), a visão geral pede estes parâmetros, todos obrigatórios: user_id (integer, o cliente que faz o pedido), products (array com os produtos pedidos), shipping_address (objeto com o endereço de entrega), shipping_method (string, a forma de envio escolhida) e payment_method (string, a forma de pagamento escolhida). A página Criar um pedido traz a referência completa dos parâmetros.

Dica

Ao criar pedidos por programa, vale conferir a disponibilidade e o preço dos produtos antes de enviar o pedido, para que os dados fiquem corretos.

Para atualizar um pedido (PUT /orders/{order_id}) você pode alterar qualquer propriedade do pedido e inclui apenas os campos que quer mudar.

Atenção

Atualizar certas propriedades do pedido, como o status do pagamento ou a lista de produtos, pode afetar o controle de estoque, as notificações ao cliente e outros processos do sistema. Tenha cuidado ao atualizar pedidos e teste bem antes.

Para excluir um pedido (DELETE /orders/{order_id}) você envia o id do pedido no caminho.

Cuidado

Excluir um pedido o remove permanentemente do sistema. A ação não pode ser desfeita. Na maioria dos casos de negócio, é recomendável atualizar o status do pedido em vez de excluí-lo por completo.

Endpoints

MétodoCaminhoFinalidadeAutenticação
GET/api/ordersListar todos os pedidos, com filtros opcionaisAdministrador
GET/api/ordersParâmetros de paginação, ordenação e filtros da mesma chamadaAdministrador
GET/api/orders/{order_id}Obter um pedido específicoAdministrador
POST/api/ordersCriar um pedidoAdministrador
PUT/api/orders/{order_id}Atualizar um pedidoAdministrador
DELETE/api/orders/{order_id}Excluir um pedidoAdministrador

Erros comuns

  • Tentar definir o status ao criar um pedido. Um pedido novo é sempre O (Aberto); mude o status depois, com um PUT.
  • Enviar num PUT apenas os produtos que você quer acrescentar. O objeto products precisa conter todos os produtos que devem continuar no pedido, e o mesmo vale para as variantes de opções dos produtos.
  • Usar o id do produto como chave de products quando o mesmo produto aparece com opções diferentes. Use números aleatórios como chaves, como descreve Criar um pedido.
  • Esperar um e-mail quando o status muda. Mudar o status pela API não envia notificação, a menos que você ative as flags notify_*, veja Atualizar um pedido.
  • Excluir um pedido que você só queria encerrar. A exclusão não pode ser desfeita, então atualize o status.

Próximos passos

Listar pedidos
Leia os pedidos da loja e entenda a resposta.
Filtrar e ordenar
Reduza a lista por status, cliente, vendedor, e-mail e fatura.
Criar um pedido
Crie um pedido para um cliente cadastrado ou para um visitante.
Atualizar um pedido
Mude o status, os produtos ou os dados do cliente.
Anterior
Atualizar status do pedido
Próxima
Listar pedidos
Nesta página
  • Como funciona
  • Códigos de status do pedido
  • Conceitos principais
  • O que a listagem aceita
  • O pedido que você recebe
  • Criar, atualizar e excluir
  • Endpoints
  • Erros comuns
  • Próximos passos