webARTz - Um pouco de Loucura, Arte, Programação e Tecnologia

11
Jun/08

PHP: Script para Cálculo de Frete dos Correios

Escrito por Rodrigo Luis
Categoria(s): PHP

Um dos grandes problemas de quem está pensando em montar uma Loja Virtual (e-Commerce) é o tal do cálculo de frete, isso dava uma dor de cabeça enorme para os desenvolvedores, pois para quase qualquer procedimento de compra online, o frete é vital, e necessita ser calculado e adicionado ao valor total que o cliente irá pagar.

Há algum tempo atrás, o site dos Correios disponibilizou uma ferramenta online para cálculo de valores e tarifas de postagem para seus principais serviços, como Sedex, PAC, Malote, Encomenda Normal, etc. No momento em que essa ferramenta foi disponibilizada, nos facilitou a vida, pois tínhamos uma forma funcional e com valores corretos para cálculo, e não como se utilizava há tempos atrás com um valor aproximado, muitas vezes maior do que realmente a postagem custava.

Como é o funcionamento dessa ferramenta, hoje ela funciona somente nos sites dos correios, porém pode ser acessada por qualquer um, inclusive por um script, e isso o que fazemos, acessamos a página de resultado, onde o frete é calculado, e capturamos somente o dado que nos é necessário, a tarifa da postagem. Para utilização, precisamos passar alguns parâmetros para essa página dos correios, que são o CEP de Origem, que no caso deve ser o da Loja Virtual, o CEP de Destino, que será o da pessoa que está comprando na Loja por exemplo, e o Peso total da encomenda, juntamente com o Código do Serviço de envio que será utilizado, no caso Sedex, PAC, Sedex 10, etc… Esses códigos dos tipos de serviços estão disponíveis junto no script.

Bom, vamos ao que interessa, o script:

< ?php
############################################
# Código dos Serviços dos Correios
# 	FRETE PAC = 41106
# 	FRETE SEDEX = 40010
# 	FRETE SEDEX 10 = 40215
# 	FRETE SEDEX HOJE = 40290
# 	FRETE E-SEDEX = 81019
# 	FRETE MALOTE = 44105
# 	FRETE NORMAL = 41017
#	SEDEX A COBRAR = 40045
############################################

// Código do Serviço que deseja calcular, veja tabela acima:
$cod_servico = 41017;
// CEP de Origem, em geral o CEP da Loja
$cep_origem = 93800000;
// CEP de Destino, você pode passar esse CEP por GET ou POST vindo de um formulário
$cep_destino = 11430000;
// Peso total do pacote em Quilos, caso seja menos de 1Kg, ex.: 300g, coloque 0.300
$peso = 1;
// URL de Consulta dos Correios
$correios = "http://www.correios.com.br/encomendas/precos/calculo.cfm?servico=".$cod_servico."&cepOrigem=".$cep_origem."&cepDestino=".$cep_destino."&peso=".$peso."&MaoPropria=N&avisoRecebimento=N&resposta=xml";

// Capta as informações da página dos Correios
$correios_info = file($correios);
// Processa as informações vindas do site dos correios em um Array
foreach($correios_info as $info){
	// Busca a informação do Preço da Postagem
	if(preg_match("/\
(.*)\< \/preco_postal>/",$info,$tarifa)){
		// Quando encontra o valor da postagem, exibe na página formatando em padrão de moeda 10,89
		print number_format($tarifa[1],2,',','.');
		// Caso você não queira formatar, será exibido assim 10.89 e basta executar o comando abaixo
		print $tarifa[1];
		// Você utilizará um ou outro método acima para exibição dos dados
	}
}
?>

.

Como sempre, eu disponibilizo o arquivo PHP do artigo aqui para Download.

Os parâmetros de configuração estão escritos no script do arquivo, mas podem também ser passados por GET ou POST, dependendo da sua necessidade de uso. A tarifa da postagem vem no formato 10.89 mas já inclui no script uma formatação para impressão no padrão da moeda brasileira, com (,) ou seja, exibindo o valor no formato 10,89.

Qualquer dúvida ou sugestão, escreva um comentário.


Compartilhe esse Artigo:
  • Digg
  • StumbleUpon
  • Technorati
  • Slashdot
  • del.icio.us
  • Reddit
  • Google
  • Facebook
  • Live
  • Rec6
  • YahooMyWeb
  • Furl
  • Spurl
  • Taggly
  • Smarking
  • description
  • TwitThis
  • Fark
  • Ma.gnolia
  • Propeller
  • De.lirio.us
  • Print this article!
  • E-mail this story to a friend!







15 Comentários para “PHP: Script para Cálculo de Frete dos Correios”

  1. katyacyllene disse:
  2. Rodrigo Luis disse:
  3. Bruno_TS. disse:
  4. Rodrigo Luis disse:
  5. Bruno_TS. disse:
  6. Bruno_TS. disse:
  7. katyacyllene disse:
  8. Rodrigo Luis disse:
  9. katyacyllene disse:
  10. Rodrigo Luis disse:
  11. cacau disse:
  12. Rodrigo Luis disse:
  13. cacau disse:
  14. Rodrigo Luis disse:
  15. cacau disse:

Escreva um Comentário

Você precisa estar logado ou ser cadastrado para enviar um Comentário.