~TiuTalk~ 7 Denunciar post Postado Junho 9, 2008 Espero que gostem... Qualquer dúvida é só falar! <?php function calcula_frete($cep_org,$cep_dst,$peso,$mao,$valor,$aviso) { /* ********************************************* VARIAVEIS ********************************************* $CEP_ORG - CEP DE ORIGEM $CEP_DST - CEP DE DESTINO $PESO - PESO DA ENCOMENDA $MAO - ENTREGA EM MAOS ( DEFINIR (S)- SIM OU (N)-NAO $VALOR - VALOR DECLARADO DO CONTEUDO (FORMATO COM VIRGULA: 10,00) */ $url="http://www.correios.com.br/encomendas/precos/calculo.cfm?resposta=paginaCorreios&servico=40010&cepOrigem={$cep_org}&cepDestino={$cep_dst}&peso={$peso}&MaoPropria={$mao}&valorDeclarado={$valor}&avisoRecebimento={$aviso}"; $html = implode("", file($url)); $html = explode('<td align="center" colspan="2">', $html); $html = $html[5]; $html = explode("<b>",$html); $html = $html[1]; $html = explode("</b>",$html); return str_replace(',', '.', substr($html[0], 3)); } echo calcula_frete("45810000","22753005","5","N","20,00","N"); ?> Pra quem tem o file com URL desativado no servidor, e precisa usar o CURL: function calcula_frete($cep_org,$cep_dst,$peso,$mao,$valor,$aviso) { $url="http://www.correios.com.br/encomendas/precos/calculo.cfm?resposta=paginaCorreios&servico=40010&cepOrigem={$cep_org}&cepDestino={$cep_dst}&peso={$peso}&MaoPropria={$mao}&valorDeclarado={$valor}&avisoRecebimento={$aviso}"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); $html = curl_exec ($ch); curl_close ($ch); $html = explode('<td align="center" colspan="2">', $html); $html = $html[5]; $html = explode("<b>",$html); $html = $html[1]; $html = explode("</b>",$html); return str_replace(',', '.', substr($html[0], 3)); } Informações importantes: - O peso deve ser um número inteiro: 2 - O valor deve ser separado por vírgula: 2,00 Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Junho 9, 2008 É bem útil ;) Compartilhar este post Link para o post Compartilhar em outros sites
« Léo » 0 Denunciar post Postado Junho 10, 2008 Eita cara... vlw msm!! exatamente o q eu estava procurando!!! Abs Compartilhar este post Link para o post Compartilhar em outros sites
~TiuTalk~ 7 Denunciar post Postado Junho 10, 2008 Adicionei também uma parte pra quem precisa usar o CURL em vez do file() com URL... Compartilhar este post Link para o post Compartilhar em outros sites
rmini83 0 Denunciar post Postado Junho 12, 2008 Olá TiuTalk, pois utilizei o Curl porque meu servidor nao aceita via file, pois então demora muito em fazer a conexão e no final não dá resultado nenhum, o que será por favor, estou precisando usar esse script(); att Ruben Compartilhar este post Link para o post Compartilhar em outros sites
~TiuTalk~ 7 Denunciar post Postado Junho 12, 2008 1. Os CEPs são válidos? 2. Seu servidor tem a biblioteca CURL ativada? Compartilhar este post Link para o post Compartilhar em outros sites
--Danilo-- 0 Denunciar post Postado Junho 18, 2008 ~TiuTalk~, estou tentando utilizar sua function com CURL para o cálculo do frete, mas não estava retornando nada. Então, tentei acessar diretamente a URL que tem nela, e coloquei os parâmetros manualmente para ver o que iria retornar. O resultado foi uma página dos Correios dizendo: SERVIÇO INDISPONÍVEL / SERVICE UNAVAILABLE Infelizmente, estamos com o serviço indisponível no momento. Retorne dentro de alguns instances. Obrigado Sorry, service unavailable, please could you back in some minutes. Thank you. Se o acesso se deu através de um "link quebrado", por favor, deixe uma mensagem em nosso serviço de Fale com os Correios, informando os endereços da página onde o problema ocorreu e da página anterior, para que possamos corrigi-lo. If you come from a "broken link", please, leave a message by clicking here , and please inform the page you came from and the page you're trying to reach, so we will be able to correct the error. Se preferir volte para nossa Página Principal para continuar navegando em nosso site. If you prefer, go back to our Home Page to continue navigating on our web site. Este tópico é recente, portanto creio que eu esteja fazendo algo errado. Os CEPs estão corretos, pois são da minha casa e da casa de um amigo, mas de qualquer forma, estou postando abaixo o código completo: <?php function calcula_frete($cep_org,$cep_dst,$peso,$mao,$valor,$aviso) { $url="http://www.correios.com.br/encomendas/precos/calculo.cfm?resposta=paginaCorreios&servico=40010&cepOrigem={$cep_org}&cepDestino={$cep_dst}&peso={$peso}&MaoPropria={$mao}&valorDeclarado={$valor}&avisoRecebimento={$aviso}"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); $html = curl_exec ($ch); curl_close ($ch); $html = explode('<td align="center" colspan="2">', $html); $html = $html[5]; $html = explode("<b>",$html); $html = $html[1]; $html = explode("</b>",$html); return str_replace(',', '.', substr($html[0], 3)); } echo calcula_frete("17025700","17026740","5","N","20,00","N"); ?> Já verifiquei com meu servidor, e segundo eles, a biblioteca CURL está ativa e pode ser usuada. Onde será que estou errando? Ou é a página dos Correios que está realmente fora? Bom, desde já, agradeço sua atenção. Compartilhar este post Link para o post Compartilhar em outros sites
~TiuTalk~ 7 Denunciar post Postado Junho 18, 2008 Amigo, hoje de manhã utilizei esse código no desenvolvimento de um site e funcionou perfeitamente... Tente dar um echo na URL gerada, e tente acessá-la (acho que foi isso que você fez), o erro que apareceu, dos correios, pode ser por um momento de manutenção mesmo, isso acontece com sites que tem muitas requisições durante o dia... Talvez se você tentar novamente depois de alguns minutos pode dar tudo certo... Outra coisa que esqueci de falar (e vou editar o tópico principal), o peso deve ser um número inteiro. Abraços! Compartilhar este post Link para o post Compartilhar em outros sites
rmini83 0 Denunciar post Postado Junho 18, 2008 Na verdade aqui está postando um erro é o seguinte: file(http://www.correios.com.br/encomendas/precos/calculo.cfm?resposta=paginaCorreios&servico=40010&cepOrigem=50710090&cepDestino=22071000&peso=14&MaoPropria=N&valorDeclarado=20,00&avisoRecebimento=N) [function.file]: failed to open stream: Connection timed out in /home/lognetin/public_html/Lognet/Apresentacao/WEB/compra.php on line 94 Warning: implode() [function.implode]: Bad arguments. in /home/lognetin/public_html/Lognet/Apresentacao/WEB/compra.php on line 94 Favor aguardo resposta Compartilhar este post Link para o post Compartilhar em outros sites
--Danilo-- 0 Denunciar post Postado Junho 18, 2008 Boa noite pessoal... ~TiuTalk~, agora funcionou... pelo menos está retornando resultado. Creio que o problema era no site dos Correios mesmo. Muito obrigado, e parabéns pela iniciativa. rmini83, veja se seu servidor suporta a utilização da função file() por URL. No meu caso, por exemplo, eu consegui apenas usando a biblioteca CURL. Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
~TiuTalk~ 7 Denunciar post Postado Junho 18, 2008 Fico feliz que a função funcione 'perfeitamente'... =) Compartilhar este post Link para o post Compartilhar em outros sites
alissong 1 Denunciar post Postado Junho 30, 2008 Por que está exibindo esse erro: Warning: Unexpected character in input: '\' (ASCII=92) state=1 in C:\Arquivos de programas\Apache Group\Apache2\htdocs\cep\cep.php on line 2 Parse error: syntax error, unexpected T_STRING in C:\Arquivos de programas\Apache Group\Apache2\htdocs\cep\cep.php on line 2 Alissong Compartilhar este post Link para o post Compartilhar em outros sites
~TiuTalk~ 7 Denunciar post Postado Julho 1, 2008 @alissong Verifique a linha 2 do seu script... Compartilhar este post Link para o post Compartilhar em outros sites
alissong 1 Denunciar post Postado Julho 12, 2008 Tiu Talk, Como faço para instalar isso no windows 2000, pois baixei esse versão no site do php: versão: curl-7.18.2-ssl-sspi-zlib-static-bin-w32 para o php 5.2.3. Exibe esse mensagem A biblioteca curl não está instalada ! Um abraço. Alissong Compartilhar este post Link para o post Compartilhar em outros sites
~TiuTalk~ 7 Denunciar post Postado Julho 13, 2008 Tiu Talk, Como faço para instalar isso no windows 2000, pois baixei esse versão no site do php: versão: curl-7.18.2-ssl-sspi-zlib-static-bin-w32 para o php 5.2.3. Exibe esse mensagem A biblioteca curl não está instalada ! Um abraço. Alissong Talvez isso te ajude! :rolleyes: Compartilhar este post Link para o post Compartilhar em outros sites
Duman 0 Denunciar post Postado Setembro 14, 2008 Cara parabens funcionou certinho! Só estou com um probleminha... você sabe como exibir o PRAZO DE ENTREGA??? Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
nknk 3 Denunciar post Postado Setembro 16, 2008 Muito bom! Será que alguem tem uma solução para todos os tipos de envio, parece que certos parametros so funciona para o SEDEX 10 e outros para SEDEX comum. Compartilhar este post Link para o post Compartilhar em outros sites
nknk 3 Denunciar post Postado Setembro 16, 2008 Bom, eu dei uma olhada nos correios os minimos parametros para cada tipo são: SEDEX http://www.correios.com.br/encomendas/prec...no=Y&peso=2 SEDEX 10 http://www.correios.com.br/encomendas/prec...no=Y&peso=2 SEDEX A COBRAR http://www.correios.com.br/encomendas/prec...Declarado=XX,XX SEDEX HOJE http://www.correios.com.br/encomendas/prec...no=Y&peso=2 PAC http://www.correios.com.br/encomendas/prec...no=Y&peso=2 Compartilhar este post Link para o post Compartilhar em outros sites
Felipe Canuso 0 Denunciar post Postado Janeiro 17, 2009 Aqui também ta funcionando perfeito. Será que é possível conseguir o prazo de entrega? pelo que eu vi.. eu dei um print_r no arquivo $html e ele exibiu a página dos correios e não tinha a informação do prazo ali.. valeu. abraços Compartilhar este post Link para o post Compartilhar em outros sites
SoulDark 0 Denunciar post Postado Fevereiro 24, 2009 Po cara, mto bom... Evita um tempo perdido naquele site horrivel que é dos correios (lento) Um abração. Compartilhar este post Link para o post Compartilhar em outros sites