Ir para conteúdo
Fórum Script Brasil
  • 0

Calculo de frete


Carlos Rocha

Pergunta

Ola pessoal.

Estou precisando de uma orientaçao.

Peguei um codigo para me retornar valor de frete dos correios que vou postar no final dessw tópico.

Meu problema é o seguinte:

Tenho uma lojinha virtual beeeeeeeeeeeeem simples e gostaria de implementar calculo altomatico do frete.

Quando cliente temina o carrinho e vai para a pagina de identifricação, é mostrado para ele um formulario (após a identificação usuario/senha é claro).

Nesse formulario é apresentado ao cliente o valor da compra, e pede o cep para onde será enviado a compra.

Nessew mesmo formulaio, tem um campo para o cliente escolher como quer que enviemos a emcomenda (PAC, SEDEX, SEDEX10) o que eu quero?

Na hora que o cliente validar o usuario e senha, já apareça o calculo do frete por padrão SEDEX numa label.

Detalhe, quando abre esse formulario, já traz nos campos do form os dados do cliente de seu cadastro (endereço, bairro, cep..) caso ele queira alterar o enderço de entrega ele o fará sem problemas.

Mas, se ele trocar o cep da encomenda ou o tipo de frete (PAC, SEDEX, SEDEX10), ai a função calcula frete devera ser chamada e entregar o valor para a label.

Bom, como faz isso:

Aqui esta o código que achei sobre o sedex:

<?php
define('FRETE_PAC',        '41106');
define('FRETE_SEDEX',      '40010');
define('FRETE_SEDEX_10',   '40215');
define('FRETE_SEDEX_HOJE', '40290');
define('FRETE_E_SEDEX',    '81019');
define('FRETE_MALOTE',     '44105');

function calcula_frete ($servico, $origem, $destino, $peso) {
  if (!$sock = fsockopen('www.correios.com.br', 80, $errornro, $error, 60)) {
    throw new Exception($error, $errornro);
  }
   
  $msg = "GET /encomendas/precos/calculo.cfm?"
        ."Servico={$servico}&cepOrigem={$origem}&cepDestino={$destino}"
        ."&peso={$peso}&resposta=localhost HTTP/1.1\n"
        ."Host: www.correios.com.br\nConnection: Close\n\n";

  fwrite($sock, $msg);

  while (!feof($sock)) {
    $line = fgets($sock);
    if (!preg_match('/^Location: \w+\?(.*)$/i',$line, $match)) continue;

    $data = array();
    foreach(split('&', $match[1]) as $item) {
      $t = split('=', $item);
      $data[$t[0]] = trim($t[1]);
    }

    break;
  }
  $data['Servico'] = urldecode($data['Servico']);
  $data['erro'] = urldecode($data['erro']);

  return $data;
}
$result = calcula_frete(FRETE_SEDEX, '20512170', '78053378', '2');
var_dump($result);
?>

Agradeço a quem puder ajudar

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...