Este recurso possibilita o cálculo do valor de um frete com base em um CEP e uma lista de itens1.
1 É necessário que estes itens estejam previamente cadastrados.
URL base do recurso: https://www.swweb.info/api/sw_fretes/v1/calculo_frete
Ações suportadas para este recurso:
Consultar um registro
Você pode consultar um cálculo de frete. Serão retornados os dados do cálculo solicitado e os resultados do cálculo do frete.
Para isso, é preciso fazer uma requisição no seu servidor, utilizando o método GET, para a URL base do recurso, informada acima, adicionando ao final uma barra (/)
e o código do cálculo desejado, conforme o exemplo abaixo.
Veja um exemplo desta ação. Caso for implementá-la, é recomendado seguir o mesmo modelo de código abaixo:
Este é o código JavaScript, que deverá fazer uma requisição para o seu servidor:
let params = {
method: 'POST',
dataType: 'JSON',
data: {
codigo: 33
},
success: function(result) {
// Na variável result está o resultado do cálculo em um objeto
console.log(result);
}
};
// Na URL da requisição, substitua os parâmetros:
// "seu_dominio" pelo seu domínio.
// "caminho" pelo caminho onde estará o método que processará a requisição no seu servidor
$.ajax('https://seu_dominio/caminho', params);
Este é o código que fica no seu servidor. Neste exemplo, o código está escrito em PHP, porém pode ser adaptado para outra linguagem:
function consultarCalculo() {
$codigo = filter_input(INPUT_POST, 'codigo');
// Neste caso, a URL será https://www.swweb.info/api/sw_fretes/v1/calculo_frete/33
$curl = curl_init('http://www.swweb.info/api/sw_fretes/v1/calculo_frete/'. $codigo);
// Substitua $seu_token$ pelo token de segurança que você recebeu.
// Lembre-se de manter seu token em um lugar seguro.
// Nunca o coloque em um arquivo JavaScript.
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Authorization: Token $seu_token$'
]);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
$result = curl_exec($curl);
curl_close($curl);
echo $result;
}
Inserir um novo registro
Você pode inserir os dados, conforme a lista de parâmetros a seguir, para um cálculo de frete. Esses dados serão processados, o cálculo será realizado e serão retornados os resultados do cálculo.
Para isso, é preciso fazer uma requisição no seu servidor, utilizando o método POST, para a URL base do recurso, informada acima.
Parâmetros a serem informados na requisição:
cep
codigo
data
O valor deve: ou ser uma string contendo a data no formato 'Y-m-d'
, ou seja, 'aaaa-mm-dd'
, ou ser um timestamp.
itens
pessoa_tipo
1
.1
para pessoa Jurídica e2
para pessoa Física.volumes
Parâmetros dos itens:
quantidade
valor_total
Veja um exemplo desta ação. Caso for implementá-la, é recomendado seguir o mesmo modelo de código abaixo:
Este é o código JavaScript, que deverá fazer uma requisição para o seu servidor:
let params = {
method: 'POST',
dataType: 'JSON',
data: {
dados: JSON.stringify({
volumes: 11,
cep: '98010280',
itens: {
92: {
quantidade: 5,
valor: 60.29
},
129: {
quantidade: 2,
valor: 70
},
13: {
quantidade: 3
}
}
})
},
success: function(result) {
// Na variável result está o resultado do cálculo em um objeto
console.log(result);
}
};
// Na URL da requisição, substitua os parâmetros:
// "seu_dominio" pelo seu domínio.
// "caminho" pelo caminho onde estará o método que processará a requisição no seu servidor
$.ajax('https://seu_dominio/caminho', params);
Este é o código que fica no seu servidor. Neste exemplo, o código está escrito em PHP, porém pode ser adaptado para outra linguagem:
function calcularFrete() {
$dados = json_decode(filter_input(INPUT_POST, 'dados'), true);
$curl = curl_init('https://www.swweb.info/api/sw_fretes/v1/calculo_frete');
// Substitua $seu_token$ pelo token de segurança que você recebeu.
// Lembre-se de manter seu token em um lugar seguro.
// Nunca o coloque em um arquivo JavaScript.
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Authorization: Token $seu_token$'
]);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($dados));
$result = curl_exec($curl);
curl_close($curl);
echo $result;
}
Para quaisquer ações, o retorno será um JSON com os seguintes campos:
codigo
data
cep
cidade_nome
cidade_ibge
peso_total
pessoa_tipo
1
para pessoa Jurídica e 2
para pessoa Física.resultados
tam_cubico_total
uf_nome
uf_sigla
valor_total
volumes
Retorno dos resultados do cálculo do frete:
tabela_descricao
transportadora_nome
atende
true
se a transportadora atende ou false
se não atende.preco
economia
data_previsao_entrega
dias_entrega
Veja o exemplo de retorno para este recurso:
Este é o objeto no formato JSON:
{
codigo: "33",
data: "2018-11-05",
cep: "96820460",
valor_total: "70.90",
tam_cubico_total: "0.05832",
peso_total: "3.059",
volumes: "2",
pessoa_tipo: "1",
cidade_nome: "SANTA CRUZ DO SUL",
uf_nome: "RIO GRANDE DO SUL",
uf_sigla: "RS",
cidade_ibge: "4316808",
resultados: {
0: {
tabela_descricao: "TABELA 6",
transportadora_nome: "TRANSPORTADORA 6",
atende: true,
preco: "35.00",
economia: "69.30",
data_previsao_entrega: "08/11/2018",
dias_entrega: "Ter e qui"
},
1: {
tabela_descricao: "TABELA 3",
transportadora_nome: "TRANSPORTADORA 3",
atende: true,
preco: "40.00",
economia: "64.90",
data_previsao_entrega: "07/11/2018",
dias_entrega: "Seg, ter e qua"
},
2: {
tabela_descricao: "TABELA 2",
transportadora_nome: "TRANSPORTADORA 2",
atende: true,
preco: "42.00",
economia: "63.20",
data_previsao_entrega: "09/11/2018",
dias_entrega: "Ter e sex"
},
3: {
tabela_descricao: "TABELA 5",
transportadora_nome: "TRANSPORTADORA 5",
atende: true,
preco: "46.00",
economia: "59.60",
data_previsao_entrega: "07/11/2018",
dias_entrega: "Seg, ter, qua, qui e sex"
4: {
tabela_descricao: "TABELA PAC",
transportadora_nome: "EMPRESA BRASIL. DE CORREIOS E TELEGRAFOS",
atende: true,
preco: "71.00",
economia: "37.70",
data_previsao_entrega: "",
dias_entrega: ""
}
5: {
tabela_descricao: "TABELA SEDEX",
transportadora_nome: "EMPRESA BRASIL. DE CORREIOS E TELEGRAFOS",
atende: true,
preco: "114.00",
economia: "0.00",
data_previsao_entrega: "",
dias_entrega: ""
}
6: {
tabela_descricao: "TABELA 1",
transportadora_nome: "TRANSPORTADORA 1",
atende: false
},
7: {
tabela_descricao: "TABELA 4",
transportadora_nome: "TRANSPORTADORA 4",
atende: false
},
}
}