Ir para conteúdo

POWERED BY:

Arquivado

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

regina

[Resolvido] Cálculo de frete e soma ao Carrinho de compras

Recommended Posts

Bom dia,

 

estou tentando incluir o cálculo de frete a um carrinho de compras e preciso que o valor do frete seja somado ao subtotal do carrinho.

 

Encontrei a seguinte função para calcular o frete e esta funciona perfeitamente

 function calculaFrete($cod_servico, $cep_origem, $cep_destino, $peso, $altura='2', $largura='11', $comprimento='16', $valor_declarado='0.50'){
$correios = "http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?nCdEmpresa=&sDsSenha=&sCepOrigem=".$cep_origem."&sCepDestino=".$cep_destino."&nVlPeso=".$peso."&nCdFormato=1&nVlComprimento=".$comprimento."&nVlAltura=".$altura."&nVlLargura=".$largura."&sCdMaoPropria=n&nVlValorDeclarado=".$valor_declarado."&sCdAvisoRecebimento=n&nCdServico=".$cod_servico."&nVlDiametro=0&StrRetorno=xml";
$xml = simplexml_load_file($correios);
if($xml->cServico->Erro == '0')
  return $xml->cServico->Valor;
else
  return false;
}#function frete

No carrinho eu tenho um input para o cliente digitar o seu CEP, aqui começa minha dificuldade, como passar este dado, para adicionar ou remover um item eu uso um link normal <a href='arquivo_processa_carrinho.php?soma=codigo_item'>Adicionar</a>

No input como devo fazer? Tentei da seguinte forma

print '<tr id="trtotal">
     <td colspan="5" class="cep"><fieldset>
<label for="cep">CEP:<input type="text" class="diversos" id="cep" name="cep" onkeyup="javascritp:if(this.value.length == 9) ColocaFocus(\'CalcularFreteBt\', event);" onkeypress="SomenteNumero2(event,this,\'#####-###\');" maxlength="9" /></label>
<a href="processa.php?cep=document.getElementById("cep").value\" class="btCalcular"><img title="Calcular" name="CalcularFreteBt" id="CalcularFreteBt" src="http://www.etna.com.br/Imagens/bt_calcular.gif"/></a>
<input type="submit" style="display:none;" id="CalcularFreteBt2" value="" name="CalcularFreteBt2"/></fieldset></td>
     <td>
<label>Frete:</label>
  <td class="tdsubtotal">R$ '.number_format($_SESSION["frete"],2,',','.').'</td>
</tr>';

 

Eu pego minha sessão no carrinho assim:

	  foreach($_SESSION as $campo => $quantidade) {

uso assim para remover uma unidade

if(isset($_GET['rem'])) {
$_SESSION['produto_'.$_GET['rem']]--;
header("Location: ".$pagina);
}

e tentei usar assim para calcular mas não deu certo:

if(isset($_GET['cep'])) {
 $_SESSION["cep"]=$_GET['cep'];
 $cod_servico="41106";
 $cep_origem ="26255170";
 $cep_destino=$_GET['cep'];
 $peso="0.1";
 $_SESSION["frete"]=calculaFrete('40045','26255170','96825150','0.1');;
 echo "CEP ".$_GET['cep'];
#  header("Location: ".$pagina);
}

Como eu devo fazer esta parte, pois eu vou precisar pegar outros valores, como o peso e as dimensões do produto e fazer a verificação se eles estão dentro das medidas dos correios.

 

Desde já agradeço a quem se dispor a me dar uma luz.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dando um echo eu vejo o CEP e o valor do frete.

 

if(isset($_POST['cep'])) {
 $_SESSION["cep"]=$_POST['cep'];
#  $_SESSION["tipo"]=$_GET['tipo'];
 $cod_servico="41106";
 $cep_origem ="26255170";
 $cep_destino=str_replace("-","",$_POST['cep']);
 $peso="0.2";
 $frete=calculaFrete($cod_servico,$cep_origem,$cep_destino,$peso);
 $_SESSION["frete"]=$frete;
 echo $_SESSION["cep"];
 echo $_SESSION["frete"];
#  header("Location: ".$pagina);
}

Calcula o valor, mas não consigo pegar esse valor, e também exibe a seguinte mensagem de erro:

Fatal error: Uncaught exception 'Exception' with message 'Serialization of 'SimpleXMLElement' is not allowed' in [no active file]:0 Stack trace: #0 {main} thrown in [no active file] on line 0

 

Como devo resolver esses problemas?

 

Obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia,

 

continuo com esses problemas

 

Fatal error: Uncaught exception 'Exception' with message 'Serialization of 'SimpleXMLElement' is not allowed' in [no active file]:0 Stack trace: #0 {main} thrown in [no active file] on line 0

 

O estranho é que seu eu der um print ele me traz os valores certinho, verifico no próprio site dos Correios,

 

gravei na sessão mas não consigo recuperá-la

 

Deve ser simples mas eu não estou conseguindo, podem me ajudar??

 

if(isset($_POST['cep'])) {
 $_SESSION["cep"]=$_POST['cep'];
 $cod_servico="41106";
 $cep_origem ="26255170";
 $cep_destino=str_replace("-","",$_POST['cep']);
 $peso="0.2";
 $frete=calculaFrete($cod_servico,$cep_origem,$cep_destino,$peso);
 $_SESSION["frete"]=$frete;
 echo $_SESSION["cep"];
 echo $_SESSION["frete"];
}

Grata

Compartilhar este post


Link para o post
Compartilhar em outros sites

Regina, eu não sei se você já conseguiu resolver o seu problema, mas eu passei pelo o mesmo problema hoje, e achei a solução neste fórum. http://stackoverflow.com/questions/6058966/uncaught-exception-exception-with-message-serialization-of-simplexmlelement

 

Então a forma como resolvi foi assim:

 

$previsao = array("imagem" =>(string)'http://www.google.com'.$atual[0]->icon['data'],'temperatura' =>(string)$atual[0]->temp_f['data'],'condicao' =>(string)$atual[0]->condition['data']);

 

ou seja eu coloquei (string), quando eu passo a informação, para o meu array.

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.