Correios, SEDEX e o tão famigerado Cálculo de Frete
Opa?
Nesta vida de desenvolvedor web alguns desafio tendem a surgir em nosso caminho, um deles sem dúvida será este que abordarei aqui, de forma rápida de direta, o Cálculo de Frete dos Correios. Com base em cep de origem, cep de destino e o peso da encomenda, obteremos o valor do SEDEX. Recurso muito utilizado em lojas virtuais e sistemas com delivery na web =)
Algo que muitas pessoas não sabem, é que os Correios disponibilizam um serviço de consulta web, com resposta em XML(as possibilidades iniciam aí :P), de forma simples, acessado via URL, sem webservices, ai vai um exemplo deste acesso:
Percebam que ao acessarmos o endereço acima, obtemos um XML simples, com todos os dados necessários para a consulta. Tudo que devemos fazer é completar a URL acima com nossos dados, da seguinte forma:
servico=40010 é sedex, outros serviços tem que procurar no site dos correios
cepOrigem=17012-350 -> CEP de Origem (do teu cliente no caso)
cepDestino=88818-400 -> de quem vai receber
peso=0.62 -> peso da encomenda
Uma vez com nossa requisição devidamente configurada, basta tratarmos o XML da forma mais interessante para seu projeto. Javascript, Flash, PHP, Java, Ruby on Rails e por aí vai =P
Neste caso, criaremos uma função de exemplo em PHP para tratarmos esta resposta, e obtermos os dados de forma fácil e direta. Aí vai ela "mastigadinha":
-
<?php
-
-
function getSEDEX($cepOrigem = "88818-520", $cepDestino = "88818-400", $peso = 0.5)
-
{
-
$urlCorreios = "http://www.correios.com.br/encomendas/precos/calculo.cfm?resposta=xml&servico=40010&cepOrigem=%s&cepDestino=%s&peso=%s";
-
-
-
//carregando url dos correios...
-
//caso o seu servidor não permita o uso da função file para url's externas
-
//recomenda-se a utilização de CURL - http://www.php.net/manual/en/ref.curl.php
-
-
//tratando string xml obtida. Removendo espaços e linhas para facilitar...
-
-
-
//informações de origem tratadas com RegExp...
-
-
//informações de destino tratadas com RegExp...
-
-
//informações sobre a encomenda tratadas com RegExp...
-
-
//objeto contendo as informações sobre o frete...
-
"uf_origem" => $uf_origem[1][0],
-
"local_origem" => $local_origem[1][0],
-
"cep_origem" => $cep_origem[1][0],
-
"uf_destino" => $uf_destino[1][0],
-
"local_destino" => $local_destino[1][0],
-
"cep_destino" => $cep_destino[1][0],
-
);
-
-
return $sedex;
-
}
-
-
//informações processadas. Cep de Origem, Cep destino, Peso...
-
$sedex = getSEDEX("88818-520", "88818-400", 0.750);
-
-
//enfim exibimos o valor de nossa encomenda...
-
echo "R$ " . number_format($sedex["valor"], 2, ",", ","); //valor do sedex, já formatado em reais...
-
-
?>
Uma vez com a função getSEDEX executada, obtemos todos os dados tratado no retorno da mesma.
Fácil não?
Abracetas...
45 Comments
Comments RSS
TrackBack Identifier URI
Leave a comment
Uncategorized 