Archive for the 'Tutoriais' Category

Correios, SEDEX e o tão famigerado Cálculo de Frete

Monday, February 11th, 2008

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:

http://www.correios.com.br/encomendas/precos/calculo.cfm?resposta=xml&servico=40010& cepOrigem=17012-350&cepDestino=01102-000&peso=0.31

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:
  1. <?php
  2.    
  3.     function getSEDEX($cepOrigem = "88818-520", $cepDestino = "88818-400", $peso = 0.5)
  4.     {
  5.         $urlCorreios = "http://www.correios.com.br/encomendas/precos/calculo.cfm?resposta=xml&servico=40010&cepOrigem=%s&cepDestino=%s&peso=%s";
  6.        
  7.         $urlCorreios = sprintf($urlCorreios, $cepOrigem, $cepDestino, $peso);
  8.        
  9.         //carregando url dos correios...
  10.         //caso o seu servidor não permita o uso da função file para url's externas
  11.         //recomenda-se a utilização de CURL - http://www.php.net/manual/en/ref.curl.php
  12.         $carrega = file($urlCorreios) or die("Problemas em obter os dados dos correios");
  13.        
  14.         //tratando string xml obtida. Removendo espaços e linhas para facilitar...
  15.         $conteudo = trim(str_replace(array("\n", chr(13)), "", implode($carrega, "")));
  16.        
  17.         if(strlen($conteudo) <1) return false;
  18.        
  19.         //informações de origem tratadas com RegExp...
  20.         preg_match_all("/<uf_origem>(.+)<\/uf_origem>/", $conteudo, $uf_origem);
  21.         preg_match_all("/<local_origem>(.+)<\/local_origem>/", $conteudo, $local_origem);
  22.         preg_match_all("/<cep_origem>(.+)<\/cep_origem>/", $conteudo, $cep_origem);
  23.        
  24.         //informações de destino tratadas com RegExp...
  25.         preg_match_all("/<uf_destino>(.+)<\/uf_destino>/", $conteudo, $uf_destino);
  26.         preg_match_all("/<local_destino>(.+)<\/local_destino>/", $conteudo, $local_destino);
  27.         preg_match_all("/<cep_destino>(.+)<\/cep_destino>/", $conteudo, $cep_destino);
  28.        
  29.         //informações sobre a encomenda tratadas com RegExp...
  30.         preg_match_all("/<peso>(.+)<\/peso>/", $conteudo, $peso);
  31.         preg_match_all("/<preco_postal>(.+)<\/preco_postal>/", $conteudo, $preco_postal);   
  32.        
  33.         //objeto contendo as informações sobre o frete...
  34.         $sedex = array(
  35.             "uf_origem" => $uf_origem[1][0],
  36.             "local_origem" => $local_origem[1][0],
  37.             "cep_origem" => $cep_origem[1][0],
  38.             "uf_destino" => $uf_destino[1][0],
  39.             "local_destino" => $local_destino[1][0],
  40.             "cep_destino" => $cep_destino[1][0],
  41.             "peso" => floatval($peso[1][0]),
  42.             "valor" => floatval($preco_postal[1][0])
  43.         );
  44.        
  45.         return $sedex;
  46.     }
  47.    
  48.     //informações processadas. Cep de Origem, Cep destino, Peso...
  49.     $sedex = getSEDEX("88818-520", "88818-400", 0.750);
  50.    
  51.     //enfim exibimos o valor de nossa encomenda...
  52.     echo "R$ " . number_format($sedex["valor"], 2, ",", ","); //valor do sedex, já formatado em reais...
  53.  
  54. ?>

Uma vez com a função getSEDEX executada, obtemos todos os dados tratado no retorno da mesma.

Fácil não?

Abracetas... ;)

Nova versão da FlashTag quase no ponto

Sunday, October 21st, 2007

Só para constar, pra quem utiliza a FlashTag e acompanha o blog, já já tem nova versão, só fazendo os últimos testes no Mac OSx(Safari).

O código, foi 80% refeito e dentre as novidades: Detector de versão do Plugin e melhora substancial no método automatic.

É isso aí, aguardem... ;)

Lightbox + Flash

Thursday, March 29th, 2007

Opa?

Acho que a maioria dos desenvolvedores web já conhecem o Lightbox. É um efeitinho super supimpa (tirando o peso) de ampliar imagens, baseado em Javascript e CSS.

Pois bem, devido ao fato de ser JS e CSS, muita gente fica na mão se deseja utilizar o recurso no Flash, contando que estejam sem tempo ou sem conhecimento, para desenvolver tal efeito 100% Flash. Aí que entra a integração que apresentarei aqui ;)

Lightbox + Flash

Para utilizar o LightBox acionado a partir do flash, primeiro você deve fazer o de praxe como apresentado neste link(carregar os arquivos .js e .css, as imagens e etc), deixar tudo certinho como se fosse usar o LightBox normalmente, isso tudo você acerta no HTML que receberá o SWF(Flash) com a ação em questão.

Depois coloque a seguinte função JavaScript(entre as tags SCRIPT) no mesmo HTML:

JavaScript:
  1. function showFoto(src)
  2. {
  3.     //criando um link falso, para o LightBox captar as informações
  4.     var a_false = document.createElement("A");
  5.     a_false.rel = "lightbox";
  6.     a_false.href = src;
  7.     //chamando a função do lightbox responsável pelo início das ações
  8.     myLightbox.start(a_false);
  9.     //anulando o link
  10.     a_false = null;
  11. }

E no Flash, em nosso botão, chamamos na ação onRelease, o seguinte AS:

Actionscript:
  1. getURL("javascript:showFoto('MINHAFOTOAQUI.jpg');", "_self");

Agora, é só publicar, botar o SWF no html preparado e só alegria =D

Obs.: Para o efeito ficar completo, é necessário o SWF estar com fundo transparent(wmode=transparent) ou opaco(wmode=opaque), para que o lightbox não fique por trás do SWF.

[update]

Na ultima versão do LightBox, colocaram uma função para esconder os SWFs da página na hora do efeito, logo quem notar que seu SWF sumiu do fundo ao aciona-lo, já sabe o porque :S

Neste link http://www.huddletogether.com/projects/lightbox2/#download tem o changelog da versão, com as mudanças que teve.

Abracetas... ;)

Feeds no FeedBurner

Wednesday, November 15th, 2006

Opa!

Aí galerinha do mal que acompanha meu blog, negócio é o seguinte, me rendi ao feedburner também:

http://feeds.feedburner.com/lucasferreira

Pois então, favor atualizar o endereço do rss de vcs ;)

Abraços!


Flex SDK

Tuesday, October 24th, 2006

Opa, to vivo sim, não precisam ficar preucupados :P

Volto a esse espaço, pra mensionar os ótimos tutoriais pra quem quer adentrar no mundo flex, especialmente de maneira "free". My Friend Igor Costa iniciou uma série de 3 tutoriais, explicando como instalar a flex 2 sdk e compilar seus .mxml de forma fácil. Eu dei uma ajudinha nesta séria, fazendo a segunda parte, que fala da flex 2 sdk no linux =D Seguem os links:

Abracetas... ;)

Tutorial - Newsticker em Flash

Thursday, August 10th, 2006

OooOOOooooiiIIIIiiieeeeEEÊ ??

Desculpem a ausência, estou trabalhando as pampas!!

Bom tutorial novo aí gente, quem quiser dar una olhadinha. Ensino como fazer um painel de destaques simples no flash ;)

http://www.lucasferreira.com/tutoriais/tuto9_desc.htm

Abracetas... ;)

Salvando um MC como Imagem

Saturday, February 25th, 2006

Dae Povo, quanto tempo eim??

A Burn ta me deixando numa correria hehe mais não da nada.

Mais um tutorial legalzudo para vcs! Desta vez uma coisa muito util, que deveria ser recurso nativo do flash mais ainda não é, como transformar um MC ou Snapshot de Vídeo e etc em uma imagem JPG ou PNG, super show, confiram mais no link abaixo:

http://www.fugpr.com.br/?s=artigos&a=v&id=28

Abracetas... ;)

Tutoria Video Player - 2ª Parte

Monday, January 9th, 2006

Como prometido a segunda parte do tutorial do Video Player

http://www.fugpr.com.br/?s=artigos&a=v&id=25

Aprenderemos como construir a progress bar responsável por dizer quantos bytes do FLV ja foram carregados, junto a seek bar, aquela que a gente avança ou volta o filme.

Abracetas... ;)