Há algumas semanas atrás, comentamos sobre carrinho de compras, porém, atendendo a pedidos dos visitantes do webmaster.pt, hoje falaremos mais sobre este assunto.
Uma das maiores dificuldades de quem trabalha com vendas através da Internet é a “cobrança de preço justo”. Isto é: Alguns compradores estão na mesma cidade onde a empresa ou o vendedor estão, outros estão em outros Estados ou Países!
Se você for analisar a situação, nada mais justo que o Internauta que mora em outro Estado ou País pagar um pouco mais caro, concorda comigo?
Analisei na Internet sobre este assunto e pouco se fala sobre este assunto! O pouco que falam é cópia um do outro, importando às outras soluções os mesmos erros e dúvidas!
Por este motivo, nosso foco de hoje será elaborar script que calcule o valor do frete (para você posteriormente implementar no carrinho de compras).
Como de costume, no final de nossa matéria, disponibilizamos o código fonte para testes.
Como Funciona A Busca?
Antes de pensarmos em programar, o ideal é sabermos como o script funciona este script!
Nosso trabalho será apenas o de capturar os dados principais através do formulário, tratá-los junto ao site dos correios e em seguida, retornar em tela a informação necessária às suas atividades!
Descreverei abaixo qual a finalidade dos campos principais (que deverão passar suas informações ao site dos correios através do método GET):
nCdServico: Hoje um dos mais usados é o “40010”, porém, baseado nos exemplos abaixo, você pode alterar conforme sua necessidade.
- 40215 – SEDEX 10
- 40010 – SEDEX CONVENCIONAL
- 40096 – SEDEX
- 40045 – SEDEX A COBRAR
- 40290 – SEDEX HOJE
- 41017 – Encomenda Normal
sCepOrigem: Neste campo você poderá passar ao formulário o CEP de onde será retirado o produto a ser enviado.
sCepDestino: Através deste campo seu cliente poderá informar o CEP para onde será entregue o produto.
nVlPeso: Deverá ser apresentado (pelo administrador do site) o peso do produto.
OBS.: deverá ser usado peso máximo de 30. Caso haja necessidade de separar as casas decimais, deverá usar por exemplo 0.2
Bem… existem outros campos que você trará o resultado, mas… chega de teoria, né? Vamos agora à parte prática!
Através dos códigos abaixo você poderá trazer em tela as informações necessárias para implementar seu carrinho de compras.
Veja o código da página “index.php”:
Pesquisa valor de frete
* Digitar somente número no CEP
OBS.: Como você pode ver, o código acima não está limpo!
Nossa finalidade principal é apresentar a qualidade disponível no script que tratará as informações!
Veja abaixo como vai ficar a página “calcularfrete.php”
(.*)\<\/Valor>/",$info,$tarifa)) {
$total = $tarifa[1] + EMBALAGEM;
}
if(preg_match("/\
$PrazoEntrega = $PrazoEntrega[1];
}
}
// Neste exemplo estamos usando apenas PAC e SEDEX. Caso seja necessário, utilize outras opções.
switch ($cod_servico) {
case 41106:
$nome_servico = " PAC ";
break;
case 40010:
$nome_servico = " SEDEX ";
break;
}
// Caso venha valor de resposta é numerio e maior que o custo da embalagem senão ocorreu algum erro na solicitação.
if(is_numeric($total) and ($total > $embalagem)) {
// Quando encontra o valor da postagem, exibe na página formatando em padrão de moeda 10,89
// Caso você não queira formatar basta comentar a linha abaixo que será exibido assim 10.89 e basta executar o comando abaixo
$total = number_format($total,2,',','.');
echo $nome_servico . $total . ' prazo entrega de ' . $PrazoEntrega . ' dia(s) ';
} else {implementando-um-c
echo 'Erro ao consultar verifique se CEP esta correto';
}
}
?>
Após calcular o CEP, o script retornará as informações (conforme imagem a seguir)
Bem… talvez de início você fique meio perdido, mas… se você analisar detalhadamente o script “calcularFrete.php”, certamente não terá qualquer problema ao implementar sua loja virtual.
Não perca nossas próximas matérias!
Estaremos falando ainda mais sobre o carrinho de compras e scripts que podem facilitar ainda mais a vida do vendedor ou dono do site.
Download do código utilizado neste tutorial: Carrinho Compras – Calcular Valor Do Frete
15 Responses
boa noite testei de todas as formas mas está dando um erro veja ai por favor:
http://www.belojardim.pe.gov.br/ficheiros
Olá! O erro que eu vejo no URL que você indicou é: Parse error: syntax error, unexpected T_VARIABLE in /home/belojard/public_html/ficheiros/calcularFrete.php on line 77 Ora, este ficheiro calcularFrete.php fecha a tag php na linha 65. Termina aí o código. Você alterou o ficheiro. E o erro é de sintaxe do PHP. Um Abraço! Rui Soares
olá ainda nao consegui, vc tem um link dele funcionando ou poderia enviar para meu email os dois scripts para eu publicar no servidor, tanto o index.php (form) quanto o calcularfrete.php tenho muito interesse nisto, tenho um trabalho pendente que depende deste sistema, pois o que eu fiz dá erro na ENCOMENDA NORMAL só dá certo no SEDEX.
Parabéns pelo tutorial mas em um primeiro teste não rodou, claro que não sou um as no php mas de cara informa uma url inválida. Se tiver um tempinho da uma revisada. Parabéns mais uma vez.
Ta dando erro…. eu testei o codigo baixado e da esse erro….
Warning: file (http://shopping.correios.com.br/wbm/shopping/script/CalcPrecoPrazo.aspx?StrRetorno=xml&nCdServico=40010&nVlPeso=2&sCepOrigem=13060-854&sCepDestino=03534000&nCdFormato=1&nVlComprimento=20&nVlAltura=15&nVlLargura=20) [function.file]: failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in /home/th51807/public_html/teste/calcularFrete.php on line 28
Warning: Invalid argument supplied for foreach() in /home/th51807/public_html/teste/calcularFrete.php on line 31
Erro ao consultar verifique se CEP esta correto
Olá, parabéns pela matéria…
Bom, eu estou com o mesmo problema relatado pelo amigo Robson e não consigo resolver, preciso de uma ajuda porque é muito importante este script… outro detalhe se tenho vários itens no carrinho com tamanhos diferentes como calcular o montante deste itens no frete ou o peso?
No aguardo, Ronaldo
olá pessoal to com o mesmo erro, podem me ajudar?
Warning: file (http://shopping.correios.com.br/wbm/shopping/script/CalcPrecoPrazo.aspx?StrRetorno=xml&nCdServico=40010&nVlPeso=2&sCepOrigem=13060-854&sCepDestino=03534000&nCdFormato=1&nVlComprimento=20&nVlAltura=15&nVlLargura=20) [function.file]: failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in /home/th51807/public_html/teste/calcularFrete.php on line 28
Warning: Invalid argument supplied for foreach() in /home/th51807/public_html/teste/calcularFrete.php on line 31
Erro ao consultar verifique se CEP esta correto
o endereço está modificado:
http://ws.correios.com.br/calculador/CalcPrecoPra…
e bom so falta funcionar rsrsrsrsrsrs
Olá Jocimar! Penso que testei todos os scripts do Quemuel em ambiente Linux e MySQL. Um dia destes, publicamos um carrinhos de compras completo e open source. Um Abraço! Rui
Ola tbm estou com erro ao consultar cep podedia colocar um trecho onde ser trocado pelo novo endereço.
Esse código serve para calculos aqui no Brasil?
MANO EU TE DEVO A MINHA VIDA INTEIRA!
Hahsuehsau
Tenho a mesma dúvida. Serve para fazer calculos aqui no brasil?
Nossa! Obrigada. Esse código me ajudou muito.