Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Guilherme Peixoto

Calcular frete, correios

Recommended Posts

Galera estou desenvolvendo um sistema de carrinho de compras com integração ao pagseguro, o carrinho está ok, só que preciso de calcular o valor do frete e procurei muitos scripts e nenhum esta dando certo, atualmente estou com este aqui:

 

<?php
$sCepDestino = htmlspecialchars($_GET['cep']); //LIMPA A VARIAVEL
$sCepDestino = str_replace("-", "", $sCepDestino); //REMOVE O - CASO POSSUA

//PEGA O TIPO DE FRETE E CONVERTE NO CODIGO
if ($_GET['tipo'] == "PAC") {
$nCdServico = 41106;
}
if ($_GET['tipo'] == "SEDEX") {
$nCdServico = 40010;
}

//DADOS PARA O CORREIO
       $nCdEmpresa          = "";
       $sDsSenha            = "";
       $sCepOrigem          = 74000000; //CEP DE ORIGEM
	$nVlPeso             = 100; //PESO É IMPORTANTE PARA O CALCULO
       $nCdFormato          = 1;
       $nVlComprimento      = 20;
       $nVlAltura           = 20;
       $nVlLargura          = 20;
       $nVlDiametro         = 0;
       $sCdMaoPropria       = "N";
       $nVlValorDeclarado   = 0;
       $sCdAvisoRecebimento = "S";
//

// URL QUE FARÁ AS CONSULTAS NOS CORREIOS
$URLcorreios ="http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?"
."nCdEmpresa=$nCdEmpresa&"
."sDsSenha=$sDsSenha&"
."sCepOrigem=$sCepOrigem&"
."sCepDestino=$sCepDestino&"
."nVlPeso=$nVlPeso&"
."nCdFormato=$nCdFormato&"
."nVlComprimento=$nVlComprimento&"
."nVlAltura=$nVlAltura&"
."nVlLargura=$nVlLargura&"
."sCdMaoPropria=$sCdMaoPropria&"
."nVlValorDeclarado=$nVlValorDeclarado&"
."sCdAvisoRecebimento=$sCdAvisoRecebimento&"
."nCdServico=$nCdServico&"
."nVlDiametro=$nVlDiametro&"
."StrRetorno=xml";

//PEGAMOS OS DADOS DE RETORNO XML COM O SIMPLEXML DO PHP  
$dados_correios = simplexml_load_file($URLcorreios);
$total = $dados_correios->xpath('cServico/Valor'); 
$total = floatval(str_replace(',', '.', $total[0]));
$PrazoEntrega = $dados_correios->xpath('cServico/PrazoEntrega');   
$erros = $dados_correios->xpath('cServico/Erro');   
$ValorAvisoRecebimento = $dados_correios->xpath('cServico/ValorAvisoRecebimento');   
//						   

//IMPRIME A RESPOSTA COM O VALOR DO FRETE
$resposta[valor] =  number_format($total, 2, ',', '.');
print_r($resposta[valor]);

?>

<form action="" method="POST">


cep <input name="sCepDestino" type="text">


tipo 
SEDEX<input name="tipo" type="radio" value="SEDEX">
PAC<input name="tipo" type="radio" value="PAC">



<input type="submit" value="Vai!">
</form>

 

ele está dando os seguintes erros:

 

Notice: Undefined index: cep in C:\wamp\www\!PROJETO-QUERO-SHOP\cep.php on line 2

 

Notice: Undefined index: tipo in C:\wamp\www\!PROJETO-QUERO-SHOP\cep.php on line 6

 

Notice: Undefined index: tipo in C:\wamp\www\!PROJETO-QUERO-SHOP\cep.php on line 9

 

Notice: Undefined variable: nCdServico in C:\wamp\www\!PROJETO-QUERO-SHOP\cep.php on line 42

 

Notice: Undefined offset: 0 in C:\wamp\www\!PROJETO-QUERO-SHOP\cep.php on line 49

 

Notice: Use of undefined constant valor - assumed 'valor' in C:\wamp\www\!PROJETO-QUERO-SHOP\cep.php on line 56

 

Notice: Use of undefined constant valor - assumed 'valor' in C:\wamp\www\!PROJETO-QUERO-SHOP\cep.php on line 57

 

Alguem pode me ajudar, pois já quebrei muito a cabeça com isso e nada!.

 

Desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acontece que ele está notificando sobre a variavel não iniciada, para isso é so desabilitar o NOTICE do seu servidor, ou toda variavel quando você for comprar os GETs você deverá primeiro ver se ele existe.

 

veja o codigo abaixo

<?php
$nCdServico = null;
$sCepDestino = null;
$sCepDestino = isset($_GET['cep']) ? htmlspecialchars($_GET['cep']) : null; //LIMPA A VARIAVEL
$sCepDestino = str_replace("-", "", $sCepDestino); //REMOVE O - CASO POSSUA
//PEGA O TIPO DE FRETE E CONVERTE NO CODIGO
if (isset($_GET['tipo']) && $_GET['tipo'] == "PAC") {
$nCdServico = 41106;
}
if (isset($_GET['tipo']) && $_GET['tipo'] == "SEDEX") {
$nCdServico = 40010;
}

//DADOS PARA O CORREIO
   	$nCdEmpresa      	= "";
   	$sDsSenha        	= "";
   	$sCepOrigem      	= 74000000; //CEP DE ORIGEM
           	$nVlPeso         	= 100; //PESO É IMPORTANTE PARA O CALCULO
   	$nCdFormato      	= 1;
   	$nVlComprimento  	= 20;
   	$nVlAltura       	= 20;
   	$nVlLargura      	= 20;
   	$nVlDiametro     	= 0;
   	$sCdMaoPropria   	= "N";
   	$nVlValorDeclarado   = 0;
   	$sCdAvisoRecebimento = "S";
//

// URL QUE FARÁ AS CONSULTAS NOS CORREIOS
$URLcorreios ="http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?"
."nCdEmpresa=$nCdEmpresa&"
."sDsSenha=$sDsSenha&"
."sCepOrigem=$sCepOrigem&"
."sCepDestino=$sCepDestino&"
."nVlPeso=$nVlPeso&"
."nCdFormato=$nCdFormato&"
."nVlComprimento=$nVlComprimento&"
."nVlAltura=$nVlAltura&"
."nVlLargura=$nVlLargura&"
."sCdMaoPropria=$sCdMaoPropria&"
."nVlValorDeclarado=$nVlValorDeclarado&"
."sCdAvisoRecebimento=$sCdAvisoRecebimento&"
."nCdServico=$nCdServico&"
."nVlDiametro=$nVlDiametro&"
."StrRetorno=xml";

//PEGAMOS OS DADOS DE RETORNO XML COM O SIMPLEXML DO PHP  
$dados_correios = simplexml_load_file($URLcorreios);
$total = $dados_correios->xpath('cServico/Valor'); 
$total = floatval(str_replace(',', '.', $total[0]));
$PrazoEntrega = $dados_correios->xpath('cServico/PrazoEntrega');   
$erros = $dados_correios->xpath('cServico/Erro');   
$ValorAvisoRecebimento = $dados_correios->xpath('cServico/ValorAvisoRecebimento');   
//                                             	

//IMPRIME A RESPOSTA COM O VALOR DO FRETE
$resposta[valor] =  number_format($total, 2, ',', '.');
print_r($resposta[valor]);

?>

<form action="" method="POST">


cep <input name="sCepDestino" type="text">


tipo 
SEDEX<input name="tipo" type="radio" value="SEDEX">
PAC<input name="tipo" type="radio" value="PAC">



<input type="submit" value="Vai!">
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.