Envios
Códigos de tipos de serviços, utilizado na listagem de serviços e cotação:
Type | Nome | Descrição |
---|---|---|
1 | Normal | Serviço de envio normal. |
2 | Expresso | Serviço de envio expresso. |
Códigos referente a abrangência dos serviços, utilizado na listagem de serviços e cotação:
Level | Nome | Descrição |
---|---|---|
1 | Municipal | Serviço abrange somente envios municipais. |
2 | Intermunicipal | Serviço abrange envios intermunicipais. |
3 | Interestadual | Serviço abrange envios interestaduais. |
4 | Global | Serviço abrange envios entre países. |
Códigos de status, utilizado na cotação:
Status | Nome | Descrição |
---|---|---|
0 | Indisponível | Serviço de frete indisponível. |
1 | Disponível | Serviço de frete disponível. |
Códigos de estados de envios, utilizado na listagem de informações do envio e na resposta do cancelamento:
State | Nome | Descrição |
---|---|---|
1 | Pendente | Existe alguma pendência de pagamento, ou o mesmo ainda não foi processado. |
2 | Liberado | Envio liberado para postagem. |
3 | Postado | Envio postado ou coletado. |
4 | Entregue | Envio entregue ao destinatário. |
0 | Cancelado | Envio cancelado pelo usuário ou por não pagamento. |
-1 | Não entregue | Envio não entregue devido a imprevistos. |
Listar serviços de envios:
Serviços de envios podem ser listados utilizando o seguinte endpoint:
Endpoint GET /shipping/services
Exemplo com CURL:
curl \
-X GET \
-u 'API_KEY:SECRET_TOKEN' \
'https://api.melhorenvio.com.br/v1/shipping/services'
Resposta:
[
{
"name": "Correios", // nome da transportadora
"icon": "http://www.melhorenvio.com.br/shipping-companies/images/Correios.png", // ícone da transportadora
"services": [ // serviços da transportadora
{
"id": 1, // identificador do serviço de envio
"name": "Expresso", // nome do serviço de envio
"type": 2, // tipo de envio, 1 = normal, 2 = expresso
"level": 3, // abrangência do serviço, 3 = interestadual
"non-commercial": 1, // aceita envio de pessoa física para pessoa física 0 = não, 1 = sim (essa informação pode depender do cep de destino, havendo alteração no momento da cotação)
"requirements": [ // campos adicionais e obrigatórios para compra deste serviço de envio
// invoice pode ser obrigatório para compra de frete dependendo da transportadora ou se não for um envio de pessoa física para pessoa física
],
"optionals": [ // informações requiridas para opcionais do serviço da transportadora (pode aumentar o valor do envio)
"invoice" // invoice = nota fiscal
"declared_value", // valor declarado (pode ser obrigatório para algumas transportadoras como Jadlog)
"own_hand", // mão própria (opcional), 0 = não, 1 = sim
"receipt" // Aviso de recebimento (opcional) 0 = não, 1 = sim (utilizado nos correios)
]
},
{
"id": 2, // identificador do serviço de envio
"name": "PAC", // nome do serviço de envio
"type": 1, // tipo de envio, 1 = normal, 2 = expresso
"level": 3, // abrangência do serviço, 3 = interestadual
"non-commercial": 1, // aceita envio de pessoa física para pessoa física 0 = não, 1 = sim (essa informação pode depender do cep de destino, havendo alteração no momento da cotação)
"requirements": [ // campos adicionais e obrigatórios para compra deste serviço de envio
// invoice pode ser obrigatório para compra de frete dependendo da transportadora ou se não for um envio de pessoa física para pessoa física
],
"optionals": [ // informações requiridas para opcionais do serviço da transportadora (pode aumentar o valor do envio)
"invoice" // invoice = nota fiscal
"declared_value", // valor declarado (pode ser obrigatório para algumas transportadoras como Jadlog)
"own_hand", // mão própria (opcional), 0 = não, 1 = sim
"receipt" // Aviso de recebimento (opcional) 0 = não, 1 = sim (utilizado nos correios)
]
}
]
},
... // outras transportadoras
]
Cotação:
Envios podem ser cotados utilizando o seguinte endpoint e payload:
Endpoint POST /shipping/calculate
Payload:
{
"from": { // remetente
"postal_code": "04320040", // CEP (somente números)
"address": "Rua 1", // (obrigatório somente para listar serviços de envios municipais)
"number": "100" // (obrigatório somente para listar serviços de envios municipais)
},
"to": { // destinatário
"postal_code": "01505010", // CEP (somente números)
"address": "Rua 2", // (obrigatório somente para listar serviços de envios municipais)
"number": "200" //(obrigatório somente para listar serviços de envios municipais)
},
"package": { // informações do objeto de envio
"width": 5, // largura (centímetros)
"height": 5, // altura (centímetros)
"length": 5, // comprimento (centímetros)
"weight": 0.2 // peso (kilogramas)
},
"options": { // informações requiridas para opcionais do serviço da transportadora (pode aumentar o valor do envio)
"declared_value": 0, // valor declarado (pode ser obrigatório para algumas transportadoras como Jadlog)
"own_hand": 0, // mão própria (opcional), 0 = não, 1 = sim
"receipt": 0 // Aviso de recebimento (opcional) 0 = não, 1 = sim (utilizado nos correios)
},
"filters": { // opções de filtro de serviços (opcional)
"id": [1, 2], // filtra pelo serviço 1 (Correios: Expresso) e 2 (Correios: PAC) (opcional)
"type": [1, 2], // filtra por serviços de envio normal e expresso (opcional)
"level": 3, // filtra por serviços com abrangência interestaduais ou superiores
"status": 1, // lista somente serviços disponíveis para compra
"non-commercial": 1, // filtra por serviços de envio que aceitam o envio de pessoa física para pessoa física
"optionals": [
"own_hand" // filtra por serviços que disponham da opção mão própria
],
"mode": 1 // 1 = filtro como white list (padrão), 2 = filtro como black list (lista todos os serviços com exção dos que são filtrados)
}
}
Resposta:
[
{
"name": "Correios", // nome da transportadora
"icon": "http://www.melhorenvio.com.br/shipping-companies/images/Correios.png", // ícone da transportadora
"services": [ // serviços da transportadora
{
"id": 1, // identificador do serviço
"name": "Expresso", // nome do serviço
"type": 2, // tipo do serviço 1 = normal, 2 = expresso
"level": 3, // abrangência do serviço, 3 = interestadual
"non-commercial": 1, // aceita envio de pessoa física para pessoa física 0 = não, 1 = sim
"requirements": [ // campos adicionais e obrigatórios para compra deste serviço de envio
"invoice" // invoice = nota fiscal
],
"optionals": [ // informações requiridas para opcionais do serviço da transportadora (pode aumentar o valor do envio)
"declared_value", // valor declarado (pode ser obrigatório para algumas transportadoras como Jadlog)
"own_hand", // mão própria (opcional), 0 = não, 1 = sim
"receipt" // Aviso de recebimento (opcional) 0 = não, 1 = sim (utilizado nos correios)
],
"status": 1, // status do serviço para compra 0 = indisponível, 1 = disponível
// informações da cotação (se status = 0, então essas informações não estarão disponíveis)
"price": 50.3, // preço do envio em R$
"delivery_time": 3, // tempo de entrega estimado em dias úteis
"discount": 1.5 // desconto em R$ ao comprar com o Melhor Envio
},
{
"id": 2, // identificador do serviço
"name": "PAC", // nome do serviço
"type": 1, // tipo do serviço 1 = normal, 2 = expresso
"level": 3, // abrangência do serviço, 3 = interestadual
"non-commercial": 0, // aceita envio de pessoa física para pessoa física 0 = não, 1 = sim
"requirements": [ // campos adicionais e obrigatórios para compra deste serviço de envio
"invoice" // invoice = nota fiscal
],
"optionals": [ // informações requiridas para opcionais do serviço da transportadora (pode aumentar o valor do envio)
"declared_value", // valor declarado (pode ser obrigatório para algumas transportadoras como Jadlog)
"own_hand", // mão própria (opcional), 0 = não, 1 = sim
"receipt" // Aviso de recebimento (opcional) 0 = não, 1 = sim (utilizado nos correios)
],
"status": 1, // status do serviço para compra 0 = indisponível, 1 = disponível
// informações da cotação (se status = 0, então essas informações não estarão disponíveis)
"price": 10.3, // preço do envio em R$
"delivery_time": 7, // tempo de entrega estimado em dias úteis
"discount": 0.8 // desconto em R$ ao comprar com o Melhor Envio
}
]
},
... // outras transportadoras
]
Compra:
Envios podem ser comprados utilizando o seguinte endpoint e payload:
Endpoint POST /shipping/cart
Payload:
{
"email": "[email protected]", //email de quem irá comprar os envios (fretes)
"cart": [ // lista de envios
// dados para compra de um envio
{
"ref": "a8098c1a-f86e-11da-bd1a-00112444be1e", // referência do pedido dentro da sua plataforma ou loja (pode ser um id, uuid ou outro valor único referente ao pedido)
"from": { // remetente
"name": "Fulano", // nome
"phone": "53984000000", // telefone com ddd
"postal_code": "04320040", // CEP
"address": "Rua 1", // logradouro (rua)
"number": "100", // número da casa,
"district": "Sé", // bairro
"city": "São Paulo", // cidade
"uf": "SP", // estado (uf)
"complement": "BL 4 AP 501", // (opcional)
"note": "Casa Azul", // observação (opcional)
"cnpj": "", // (opcional) (somente números - 14 digítos) pode ser requerido para algumas transportadoras se for logística normal
"cpf": "", // (opcional) (somente números - 11 digítos) pode ser requerido para algumas transportadoras se for logística normal com envio pessoa física ou então se for logística reversa
"ie": "" // inscrição estadual (opcional) (somente números) pode ser requerido para algumas transportadoras se for logística normal
},
"to": { // destinatário
"name": "Fulano", // nome
"phone": "53984000000", // telefone com ddd
"postal_code": "01505010", // CEP
"address": "Rua 2", // logradouro (rua)
"number": "200", // número da casa
"district": "Sé", // bairro
"city": "São Paulo", // cidade
"uf": "SP", // estado (uf)
"complement": "BL 2 AP 404", // (opcional)
"note": "Próximo a praça", // observação (opcional)
"cnpj": "", // (opcional) (somente números - 14 digítos) pode ser requerido para algumas transportadoras se for logística reversa
"cpf": "", // (opcional) (somente números - 11 digítos) pode ser requerido para algumas transportadoras se for logística reversa com envio pessoa física ou então se for logística normal
"ie": "" // inscrição estadual (opcional) (somente números) pode ser requerido para algumas transportadoras se for logística reversa
},
"package": { // informações do objeto de envio
"width": 5, // largura (centímetros)
"height": 5, // altura (centímetros)
"length": 5, // comprimento (centímetros)
"weight": 0.2 // peso (kilogramas)
},
"service": 1, // identificador do serviço de envio a ser comprado (Correios: Expresso)
// no caso de logística reversa, o objeto é postado ou recolhido no "cliente" e enviado para o "vendedor" (ex: devoluções)
// from será o local do remetente e to destinatário mesmo com a logística reversa
"reverse": 0, // (opcional) 0 = normal (padrão), 1 = logística reversa,
"non-commercial": 0, // envio de pessoa física para pessoa física 0 = não, 1 = sim (algumas transportadoras podem não aceitar esse modo de envio, neste caso a compra não será realizada)
"invoice": "número da nota fiscal (somente números)", // número da nota fiscal (9 digítos)
"invoice-key": "chave da nota fiscal", // (opcional) porém agiliza o envio com transportadoras como a jadlog
"agency": 0, // (opcional) id da agência de postagem para transportadoras que requerem a seleção da mesma como a jadlog, caso não seja fornecida a mesma pode ser selecionada posteriormente na confirmação anterior ao pagamento
"optionals": { // informações requiridas para opcionais do serviço da transportadora (pode aumentar o valor do envio)
"declared_value": 0, // valor declarado (pode ser obrigatório para algumas transportadoras como Jadlog)
"own_hand": 0, // mão própria (opcional), 0 = não, 1 = sim
"receipt": 0 // Aviso de recebimento (opcional) 0 = não, 1 = sim (utilizado nos correios)
},
"reminder": "pendrive, cod: 123" // lembrete (opcional)
},
... // dados de outros envios a serem comprados
]
}
Resposta:
{
"url": "http://www.melhorenvio.com.br/carrinho?client=2e6f9b0d5885b6010f9167787445617f553a735f"
}
É retornado a url para qual o usuário deva ser direcionado para que conclua a compra.
No momento que a loja submete uma lista de envios a serem comprados à um email de usuário e direciona o mesmo ao link retornado, o usuário irá realizar o login no Melhor Envio para este email ou então caso não exista um usuário com este email, o mesmo poderá fazer o cadastro. Logo após, o usuário irá confirmar a compra dos envios submetidos ao seu carrinho pela loja e realizará o pagamento e impressão das etiquetas para os envios.
Listar estados dos envios:
O estato dos envios de um usuário submetidos pela sua loja podem ser listados utilizando o seguinte endpoint e payload:
Endpoint POST /shipping
{
"email": "[email protected]", //email do usuário que comprou os envios (fretes)
"filter": [ // filtra pela referência dos pedidos da sua loja
"a8098c1a-f86e-11da-bd1a-00112444be1e"
]
}
Exemplo com CURL:
curl \
-X POST \
-u 'API_KEY:SECRET_TOKEN' \
-H 'Content-Type: application/json;charset=UTF-8' \
-d '{"email":"[email protected]","filter":["a8098c1a-f86e-11da-bd1a-00112444be1e"]}' \
'https://api.melhorenvio.com.br/v1/shipping'
Resposta:
[
{
"ref": "a8098c1a-f86e-11da-bd1a-00112444be1e", // referência do pedido na sua loja
"state": 3, // estato do envio (3 = postados)
"tracking": null, // url para rastreio se estiver disponível
"price": 50.3, // preço pago
"created_at": "2017-01-01T12:00:00Z", // datetime de compra do envio
"updated_at": "2017-01-01T13:00:00Z" // datetime de atualização da compra do envio
},
... // outros envios
]