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

Criar um pedido

Cria um pedido novo para um usuário existente ou para um visitante, com produtos, forma de pagamento e forma de envio.

Este endpoint cria pedidos por programa na sua loja Venddor. O pedido pode ser criado em nome de um usuário existente ou como uma compra de visitante (guest checkout). Use-o para trazer pedidos de outro sistema ou para registrar um pedido feito por telefone.

O pedido é criado com o status O (Aberto). Você só consegue mudar o status ao atualizar um pedido existente, veja Atualizar um pedido. Os preços dos produtos vêm do cadastro dos produtos, não do JSON que você envia.

POST/api/ordersAdmin

Criar um pedido

Corpo da requisição

user_idintegerobrigatório
O identificador único do usuário. Pode ser omitido ou definido como 0 somente se a requisição incluir user_data.
payment_idintegerobrigatório
Id da forma de pagamento. A forma de pagamento precisa estar disponível na loja.
shipping_idmixedobrigatório
Id da forma de envio ou um array de ids de formas de envio (para vários grupos de produtos). A forma de envio precisa estar disponível na loja e configurada para o endereço de entrega.
productsobjectobrigatório
Um objeto com as informações dos produtos pedidos. Pode ser estruturado de duas maneiras, veja "Produtos: duas formas de estruturar" mais abaixo.
user_dataobject

Obrigatório se user_id for omitido ou for 0. Contém os dados do cliente numa compra de visitante.

emailstringobrigatório
E-mail do cliente.
b_firstnamestringobrigatório
Nome (endereço de cobrança).
b_lastnamestringobrigatório
Sobrenome (endereço de cobrança).
b_addressstringobrigatório
Endereço (cobrança).
b_citystringobrigatório
Cidade (cobrança).
b_statestringobrigatório
Código do estado (cobrança), 2 caracteres.
b_countrystringobrigatório
Código do país (cobrança), 2 caracteres.
b_zipcodestringobrigatório
CEP/código postal (cobrança).
b_phonestringobrigatório
Telefone (cobrança).
s_firstnamestringobrigatório
Nome (entrega).
s_lastnamestringobrigatório
Sobrenome (entrega).
s_addressstringobrigatório
Endereço (entrega).
s_citystringobrigatório
Cidade (entrega).
s_statestringobrigatório
Código do estado (entrega), 2 caracteres.
s_countrystringobrigatório
Código do país (entrega), 2 caracteres.
s_zipcodestringobrigatório
CEP/código postal (entrega).
s_phonestringobrigatório
Telefone (entrega).

Envie os parâmetros no corpo da requisição HTTP, de acordo com o Content-Type que você informar.

Várias formas de envio

A partir da versão 4.3.7, você pode informar um array de ids de formas de envio como valor de shipping_id. As chaves do array são as chaves dos grupos de produtos do carrinho. Isso é útil em pedidos com produtos de vários vendedores ou fornecedores, ou quando os produtos são separados em grupos.

Dica

Você encontra os códigos de países e estados disponíveis no painel de administração, em Administração > Frete e impostos > Estados (Administration > Shipping & Taxes > States).

Produtos: duas formas de estruturar

Os preços dos produtos vêm do cadastro dos produtos, não do JSON. Um desconto num produto não pode ser informado no POST, apenas num PUT posterior.

Forma 1: ids de produto como chaves

json
"products": {
  "241": {
    "amount": "1",
    "product_options": {
      "12": "44",
      "13": "48"
    }
  }
}
Atenção

Se você quer que o pedido tenha várias ocorrências do mesmo produto, mas com opções e combinações de opções diferentes, não use ids de produto como chaves. Use a Forma 2.

Forma 2: números aleatórios como chaves

json
"products": {
  "1": {
    "product_id": "12",
    "amount": "1",
    "product_options": {
      "3": "12",
      "4": "17"
    }
  },
  "2": {
    "product_id": "12",
    "amount": "2",
    "product_options": {
      "3": "15",
      "4": "19"
    }
  }
}

Exemplos de requisição

Criar um pedido para um usuário existente

Esta requisição cria um pedido feito pelo cliente com user_id=3, usando a forma de envio shipping_id=1 e a forma de pagamento payment_id=2. O pedido contém um produto com product_id=12 e dois produtos com product_id=13.

bash
curl -X POST -u "$EMAIL:$API_KEY" "$BASE_URL/api/orders/" \
  -H "Content-Type: application/json" \
  -d '{
  "user_id": "3",
  "shipping_id": "1",
  "payment_id": "2",
  "products": {
    "1": {
      "product_id": "12",
      "amount": "1"
    },
    "2": {
      "product_id": "13",
      "amount": "2"
    }
  }
}'

Criar um pedido para um visitante

O visitante precisa informar o endereço e os dados de contato no checkout. Por isso você deve incluir o objeto user_data ao criar um pedido para um visitante.

bash
curl -X POST -u "$EMAIL:$API_KEY" "$BASE_URL/api/orders/" \
  -H "Content-Type: application/json" \
  -d '{
  "user_id": "0",
  "payment_id": "2",
  "shipping_id": "1",
  "products": {
    "1": {
      "product_id": "12",
      "amount": "1"
    },
    "2": {
      "product_id": "13",
      "amount": "2"
    }
  },
  "user_data": {
    "email": "guest@example.com",
    "firstname": "Guest",
    "lastname": "Guest",
    "s_firstname": "Guest",
    "s_lastname": "Guest",
    "s_country": "US",
    "s_city": "Boston",
    "s_state": "MA",
    "s_zipcode": "02125",
    "s_address": "44 Main street",
    "b_firstname": "Guest",
    "b_lastname": "Guest",
    "b_country": "US",
    "b_city": "Boston",
    "b_state": "MA",
    "b_zipcode": "02125",
    "b_address": "44 Main street"
  }
}'

Formato da resposta

Resposta de sucesso (201 Created)

201Pedido criado
json
{
  "order_id": "98"
}

Resposta de erro (400 Bad Request)

Retornada quando o pedido não pôde ser criado por causa de parâmetros inválidos ou de outros problemas.

StatusQuando
201 CreatedO pedido foi criado e o corpo traz o order_id dele.
400 Bad RequestO pedido não pôde ser criado por parâmetros inválidos ou outros problemas.

Notas de implementação

Ao criar pedidos, considere estas boas práticas.

  • Valide a disponibilidade dos produtos antes de criar um pedido, para evitar problemas de estoque.
  • Confira se as formas de envio e de pagamento informadas estão ativas e disponíveis.
  • Em pedidos de visitantes, informe dados de usuário completos e válidos para que o pedido seja processado com sucesso.
  • Ao trabalhar com opções, use os ids de opção e de variante corretos para os produtos.
  • Teste a sua implementação com pedidos pequenos antes de processar pedidos grandes ou complexos.
Anterior
Obter um pedido
Próxima
Atualizar um pedido
Nesta página
  • Produtos: duas formas de estruturar
  • Forma 1: ids de produto como chaves
  • Forma 2: números aleatórios como chaves
  • Exemplos de requisição
  • Criar um pedido para um usuário existente
  • Criar um pedido para um visitante
  • Formato da resposta
  • Resposta de sucesso (201 Created)
  • Resposta de erro (400 Bad Request)
  • Notas de implementação