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:
cepcodigodataO valor deve: ou ser uma string contendo a data no formato 'Y-m-d', ou seja, 'aaaa-mm-dd', ou ser um timestamp.
itenspessoa_tipo1.1 para pessoa Jurídica e2 para pessoa Física.volumesParâmetros dos itens:
quantidadevalor_totalVeja 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:
codigodatacepcidade_nomecidade_ibgepeso_totalpessoa_tipo1 para pessoa Jurídica e 2 para pessoa Física.resultadostam_cubico_totaluf_nomeuf_siglavalor_totalvolumesRetorno dos resultados do cálculo do frete:
tabela_descricaotransportadora_nomeatendetrue se a transportadora atende ou false se não atende.precoeconomiadata_previsao_entregadias_entregaVeja 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
        },
    }
}