Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17619
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Script para calcular frete do PagSeguro PHP e jQuery

31-08-2013 20:23

Esse script que vou postar aqui serve para fazer o cálculo do frete de um produto, baseado no preço e peso usando o PagSeguro.

Esse exemplo que vou postar vai usar também o jQuery, para que o usuário digite o CEP, e obtenha o valor do frete em uma div.

A referência para o script é desse link https://gist.github.com/davidchc/5326321

Para usar o script, você precisa criar uma class, exemplo: class_pagseguro.php, com o seguinte código:

<?php      class FretePagSeguro{         private $cepOrigem;         private $cepDestino;         private $peso;         private $preco;         private $url = 'https://pagseguro.uol.com.br/desenvolvedor/simulador_de_frete_calcular.jhtml?postalCodeFrom=%s&weight=%s&value=%s&postalCodeTo=%s';         private $sedex;         private $pac;           public function __construct($cepOrigem){             $this->cepOrigem = $cepOrigem;         }           public function setCepDestino($cep){             $this->cepDestino = $cep;             return $this;         }         public function setPeso($peso){             $this->peso = $peso;             return $this;         }           public function setPreco($preco){             $this->preco = $preco;             return $this;         }                      private function acessarCURL($url){             $ch = curl_init();             curl_setopt($ch, CURLOPT_URL, $url);             curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);             curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);                          curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);                          $result = curl_exec($ch);                           curl_close($ch);                           return $result;         }           public function executar(){             $url   = sprintf($this->url, $this->cepOrigem, $this->peso, $this->preco, $this->cepDestino);             $result = $this->acessarCURL($url);             list($resposta, $uf, $item, $sedex, $pac) = explode('|', $result);             if($resposta !== 'ok'){                 return false;             }             $this->sedex = $sedex;             $this->pac = $pac;             return true;         }           public function getSedex(){             return number_format($this->sedex, 2, ',', '.');         }         public function getPac(){             return number_format($this->pac, 2, ',', '.');         }       } ?>

Agora vou passar um exemplo do input texto, onde o usuário irá digitar o CEP, e clicar no botão para obter os dados do PagSeguro

<script src="jquery.js"></script>   <script> $(document).ready(function() {   $("#calcular_frete").click(function(){   $("#frete_calculado").html('Carregando....'); $("#frete_calculado").load('pagseguro.php?cep='+$('#cep').val()).fadeIn('slow'); });   }); </script>


<form> <input type="text" name="" id="cep" value=""> <input type="button" name="" id="calcular_frete" value="Calcular"> </form> <div id="frete_calculado"></div>

Como observado acima, o script que processa a informação deve ser o pagseguro.php, com o seguinte conteúdo:

<?php sleep(1); include("class_pagseguro.php"); // CASO O PREÇO ESTEJA INTEIRO, TIPO 700 // FORMATE ASSIM: formataValor('700') = resultado 700,00 function formataValor($v) { return number_format($v, 2, ',', ''); } // CASO O PESO ESTEJA NO FORMATO INTEIRO, TIPO 500 // FORMATE ASSIM: formataPeso('500') = resultado = 0,500 function formataPeso($p) { if(strlen($p)==1) { return "0,00".$p; } if(strlen($p)==2) { return "0,0".$p; } if(strlen($p)==3) { return "0,".$p; } if(strlen($p)==4) { return substr($p,0,1).",".substr($p,1,3); } } // FRETE DE QUEM ENVIA $frete = new FretePagSeguro('27963-762'); // FRETE DE QUEM RECEBE ENVIADO POR GET, PESO E PREÇO DO PRODUTO $frete->setCepDestino($_GET['cep'])->setPeso('0,300')->setPreco('200,00');    if($frete->executar()){       echo "SEDEX ".$frete->getSedex();       echo '<br />';       echo "PAC ".$frete->getPac();   } ?>

Nesse script, coloquei duas funções. Uma para formatar o peso do produto, caso esteja inteiro, e outra para o valor. Caso tenham dúvidas, só perguntar.
1
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Bing [Bot]