Documentação da API da SW Web para o SW Fretes

Aqui você encontra todos os recursos disponíveis para o SW Fretes na API:

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:

Campo
Descrição
Valor padrão do campo
Requisitos do campo
cep
O CEP de destino do cálculo.
Obrigatório
-
O CEP deve ser uma string formada apenas com números, ou seja, sem separadores, com no máximo até 8 caracteres.
codigo
O código do cálculo.
Opcional
Número sequencial com base nos últimos cálculos realizados.
O valor deve ser um número inteiro positivo.
data
A data do cálculo.
Opcional
Data atual, do momento em que foi realizada o solicitação.

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
A lista de itens a serem enviados.
Obrigatório
-
Esta lista deve ser um conjunto de itens, ou seja, um Array. Cada índice, ou chave, deste Array deve ser um número inteiro positivo igual ao código do produto correspondente cadastrado no sistema. Cada valor, cujo índice será o código do produto, será outro Array, segundo os parâmetros dos itens, listados abaixo.
pessoa_tipo
O tipo da pessoa que está solicitando o cálculo, se é Física ou Jurídica.
Opcional
O valor referente a pessoa Jurídica, no caso 1.
Os valores aceitos para este campo são:
1 para pessoa Jurídica e
2 para pessoa Física.
Qualquer valor além destes não será aceito, sendo retornado um erro 400.
volumes
A quantidade de volumes para o cálculo.
Opcional
A soma das quantidades de todos os itens do cálculo.
O valor deve ser um número inteiro positivo.

Parâmetros dos itens:

Campo
Descrição
Valor padrão do campo
Requisitos do campo
quantidade
A quantidade do item.
Obrigatório
-
O valor deve ser um número inteiro positivo.
valor_total
O valor do item.
Opcional
O valor padrão cadastrado no sistema.
O valor deve ser um número decimal positivo.

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:

Campo
Detalhes do campo
codigo
O código do cálculo.
data
A data do cálculo.
cep
O CEP de destino do cálculo.
cidade_nome
A cidade de destino.
cidade_ibge
O código IGBE da cidade de destino.
peso_total
O peso total dos itens.
pessoa_tipo
O tipo da pessoa que está solicitando o cálculo, sendo 1 para pessoa Jurídica e 2 para pessoa Física.
resultados
Os resultados do cálculo do frete. Cada item dos resultados estão listados abaixo.
tam_cubico_total
O tamanho cúbico total dos itens.
uf_nome
O nome do estado de destino.
uf_sigla
A sigla do estado de destino.
valor_total
O valor total da encomenda.
volumes
A quantidade de volumes da encomenda.

Retorno dos resultados do cálculo do frete:

Campo
Detalhes do campo
tabela_descricao
A descrição da tabela de frete do resultado.
transportadora_nome
O nome da transportadora do resultado.
atende
Se a transportadora atende esta cidade. true se a transportadora atende ou false se não atende.
Caso a transportadora não atenda o cálculo, os próximos campos não serão retornados.
preco
Preço do frete.
economia
Economia, em percentual, comparando o frete em questão em relação ao mais caro.
data_previsao_entrega
Data da previsão de entrega. Lembre-se que esta é uma previsão.
dias_entrega
Os dias que a transportadora entrega as mercadorias na cidade em questão. Caso este campo e o da data de previsão de entrega estejam em branco, significa que a transportadora não informou os dias de entrega para esta cidade.

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
        },
    }
}

Encontre-nos

placeAv. Pedro Cezar Saccol, Eixo Secundário 8, 555, Agro-industrial
97030-440, Santa Maria, RS, Brasil