Cálculo do frete via SEDEX com PHP e AJAX
O resto do arquivo é puro HTML.
vamos pra a parte principal, que é do cálculo do frete.
Arquivo calcularFrete.php
Esse será o nosso arquivo que vai ser requisitado sem causar transferência visual pra o usuário. Nosso PHP vai entrar em cena agora.
Linha a linha comentada:
Capturamos os valores vindo do formulário, e quem nos enviou foi a função javascript via POST.
Valor do peso de nossa embalagem, via SEDEX peso mínimo de 1Kg
Essa variável é a URL que vai calcular o valor de seu frete.
No arquivo PHP será mostrado “Valor do Frete via SEDEX: xxx”
Pode-se utilizar o preg_match_all() para filtrar esse resultado. Pois se o HTML for alterado vc não precisa varrer a linha pra retornar o valor. Porém torna-se a execuçao do script mais lenta. Fica a critério. =)
vamos pra a parte principal, que é do cálculo do frete.
Arquivo calcularFrete.php
Esse será o nosso arquivo que vai ser requisitado sem causar transferência visual pra o usuário. Nosso PHP vai entrar em cena agora.
Linha a linha comentada:
<?php // cep de origem e cep de destino $cepOrigem = $_POST['cepOrigem']; $cepDestino = $_POST['cepDestino']; ?>
Capturamos os valores vindo do formulário, e quem nos enviou foi a função javascript via POST.
<?php // altere aqui o peso $peso = 1; // 1 kg ?>
Valor do peso de nossa embalagem, via SEDEX peso mínimo de 1Kg
<?php // esta é a URL dos correios $url = "http://www.correios.com.br/encomendas/precos/calculo.cfm?resposta=paginaCorreios&servico=40010&cepOrigem=".$cepOrigem."&cepDestino=".$cepDestino."&peso=".$peso."&MaoPropria=n&valorDeclarado=&avisoRecebimento=N"; ?>
Essa variável é a URL que vai calcular o valor de seu frete.
<?php // captura as linhas da URL retornada $lines = file($url); // varro as linhas e procuro o valor do frete, no caso está na linha 660 // caso não retorne descomene a linha dentro do foreach e veja qual a linha que retorna o valor foreach ($lines as $line_num => $line) { //echo "Line #{$line_num} : " .strip_tags($line). "<br />\n"; if( $line_num == 660 ){ echo "Valor do Frete via SEDEX: ".strip_tags($line); } } ?>
No arquivo PHP será mostrado “Valor do Frete via SEDEX: xxx”
Pode-se utilizar o preg_match_all() para filtrar esse resultado. Pois se o HTML for alterado vc não precisa varrer a linha pra retornar o valor. Porém torna-se a execuçao do script mais lenta. Fica a critério. =)
como faço para pegar o peso de uma variavel do meu carrinho e ela seja adicioanda ao campo "peso" sem que eu tenha que digitar manualmente?
17/04/2009 4:23am
(~15 anos atrás)
Estou batendo cabeça com o Ajax e um dos motivos é este cálculo.
Foi bem legal!!!!
Meu único problema é um erro que continua dando:
Warning: file(http://www.correios.com.br/encomendas/precos/calculo.cfm?resposta=http://172.24.22.59/renata/tarsus/calculofrete.htm&servico=40010&cepOrigem=24360060&cepDestino=22231140&peso=1&MaoPropria=n&valorDeclarado=&avisoRecebimento=N) [function.file]: failed to open stream: Connection refused in /producao/html/renata/tarsus/calcularfrete.php on line 21
Warning: Invalid argument supplied for foreach() in /producao/html/renata/tarsus/calcularfrete.php on line 25
AH! E dica onde achar um material legal para minhas cabeçadas.
Um abraço
Foi bem legal!!!!
Meu único problema é um erro que continua dando:
Warning: file(http://www.correios.com.br/encomendas/precos/calculo.cfm?resposta=http://172.24.22.59/renata/tarsus/calculofrete.htm&servico=40010&cepOrigem=24360060&cepDestino=22231140&peso=1&MaoPropria=n&valorDeclarado=&avisoRecebimento=N) [function.file]: failed to open stream: Connection refused in /producao/html/renata/tarsus/calcularfrete.php on line 21
Warning: Invalid argument supplied for foreach() in /producao/html/renata/tarsus/calcularfrete.php on line 25
AH! E dica onde achar um material legal para minhas cabeçadas.
Um abraço
16/08/2007 1:20pm
(~17 anos atrás)
Esse artigo é muito bom, será útil para muitos usuários do PHP.
Parabéns...
Parabéns...
12/06/2007 7:10am
(~17 anos atrás)
02/05/2007 11:11am
(~17 anos atrás)
Amigo ao invez de usar essa gambiarra pra ler o arquivo inteiro e melhor vc ler um xml fica muito mais rapido.....
http://www.correios.com.br/encomendas/precos/calculo.cfm?cepOrigem=15085893&cepDestino=15040190&peso=3&MaoPropria=N&avisoRecebimento=N&resposta=xml
Assim que der posto um novo topico com a versão xml
Os codigos dos Serviços...
40215 - SEDEX 10
40010 - SEDEX CONVENCIONAL
40096 - SEDEX
40045 - SEDEX A COBRAR
40290 - SEDEX HOJE
41017 - Encomenda Normal
http://www.correios.com.br/encomendas/precos/calculo.cfm?cepOrigem=15085893&cepDestino=15040190&peso=3&MaoPropria=N&avisoRecebimento=N&resposta=xml
Assim que der posto um novo topico com a versão xml
Os codigos dos Serviços...
40215 - SEDEX 10
40010 - SEDEX CONVENCIONAL
40096 - SEDEX
40045 - SEDEX A COBRAR
40290 - SEDEX HOJE
41017 - Encomenda Normal
02/05/2007 11:08am
(~17 anos atrás)
Valeu cara eu conheço sim e já usei, na verdade é mais pra mostrar o AJAX do que a aplicação =)
valeu mesmo
valeu mesmo
19/04/2007 2:57pm
(~17 anos atrás)
Aderbal não sei se você conhece o xajax (http://www.xajaxproject.org/), mas ele já faz toda essa parte de ajax que você escreveu na munheca aí. Iria economizar umas duas páginas no seu artigo! Mas valeu pela iniciativa.
O bom é que a galera que não conhece como o ajax funciona passa a conhecer. Eu utilizo essa url dos correios juntamente com outra locaweb para calcular o frete mas o cálculo fica um pouco lento, mesmo utilizando ajax e o principal problema é que a conexão com essa url está sempre falhando. O ideal é comprar a tabela de frete dos correios.
Um abraço
O bom é que a galera que não conhece como o ajax funciona passa a conhecer. Eu utilizo essa url dos correios juntamente com outra locaweb para calcular o frete mas o cálculo fica um pouco lento, mesmo utilizando ajax e o principal problema é que a conexão com essa url está sempre falhando. O ideal é comprar a tabela de frete dos correios.
Um abraço
19/04/2007 10:30am
(~17 anos atrás)
a consulta se torna mais lenta, existe as vantagens! vou por mas quem quizer pode usar de qualquer forma! VALEU vcs
=)
=)
16/04/2007 7:07am
(~17 anos atrás)
Rhácius obrigado pelo comentário =) eu utilizei aqui no meu código de um e-commerce, mas esqueci de alterar aqui, valeu por lembrar =)
Abraço
Abraço
16/04/2007 6:29am
(~17 anos atrás)