Jump to content
IgorWeldt

Problema com calculadora de frete Correios

Recommended Posts

Bom dia, galera.

 

Essa é a minha primeira postagem :grimace:

 

Seguinte, estou desenvolvendo um website simples de compra, onde o usuário fará o pagamento pela API do PagSeguro, o problema é que não estou conseguindo usar a calculadora de frete do Correios.

 

Encontrei diversos códios prontos pela internet, porém, nenhum funciona.

 

Minha página fica carregando e não sai disso.

 

Falta basicamente isso para finalizar o projeto, alguém pode me dar uma luz?

 

<?php
	$parametros = array();
	
	// Código e senha da empresa, se você tiver contrato com os correios, se não tiver deixe vazio.
	$parametros['nCdEmpresa'] = '';
	$parametros['sDsSenha'] = '';
	
	// CEP de origem e destino. Esse parametro precisa ser numérico, sem "-" (hífen) espaços ou algo diferente de um número.
	$parametros['sCepOrigem'] = '81810110';
	$parametros['sCepDestino'] = '80050530';
	
	// O peso do produto deverá ser enviado em quilogramas, leve em consideração que isso deverá incluir o peso da embalagem.
	$parametros['nVlPeso'] = '1';
	
	// O formato tem apenas duas opções: 1 para caixa / pacote e 2 para rolo/prisma.
	$parametros['nCdFormato'] = '1';
	
	// O comprimento, altura, largura e diametro deverá ser informado em centímetros e somente números
	$parametros['nVlComprimento'] = '16';
	$parametros['nVlAltura'] = '5';
	$parametros['nVlLargura'] = '15';
	$parametros['nVlDiametro'] = '0';
	
	// Aqui você informa se quer que a encomenda deva ser entregue somente para uma determinada pessoa após confirmação por RG. Use "s" e "n".
	$parametros['sCdMaoPropria'] = 'n';
	
	// O valor declarado serve para o caso de sua encomenda extraviar, então você poderá recuperar o valor dela. Vale lembrar que o valor da encomenda interfere no valor do frete. Se não quiser declarar pode passar 0 (zero).
	$parametros['nVlValorDeclarado'] = '200';
	
	// Se você quer ser avisado sobre a entrega da encomenda. Para não avisar use "n", para avisar use "s".
	$parametros['sCdAvisoRecebimento'] = 'n';
	
	// Formato no qual a consulta será retornada, podendo ser: Popup – mostra uma janela pop-up | URL – envia os dados via post para a URL informada | XML – Retorna a resposta em XML
	$parametros['StrRetorno'] = 'xml';
	
	// Código do Serviço, pode ser apenas um ou mais. Para mais de um apenas separe por virgula.
	$parametros['nCdServico'] = '40010,41106';
	
	
	$parametros = http_build_query($parametros);
	$url = 'http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx';

	$curl = curl_init($url.'?'.$parametros);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
	$dados = curl_exec($curl);
	$dados = simplexml_load_string($dados);

?>
<html>
<head>
<title>Frete Correios Testes</title>
</head>
<body>
<h1>Calculadora de frete dos Correios</h1>
<?php
foreach($dados->cServico as $linhas) {
		if($linhas->Erro == 0) {
			echo $linhas->Codigo.'</br>';
			echo $linhas->Valor .'</br>';
			echo $linhas->PrazoEntrega.' Dias </br>';
		}else {
			echo $linhas->MsgErro;
		}
		echo '<hr>';
	}
?>
</body>
</html>

 

Obrigado à todos!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By alysson122010
      Galera estou começando a trabalhar com datatables porem tenho uma dificuldade pq tipo até 200 registros por pagina é aceitavel mas penso quando tiver 2000 registro carregar tudo numa pagina so da errado pq é muitos dados e pode travar tudo.
      Como posso fazer para listar com limite por pagina ou alguma maneira para poder colocar varios dados sem travar.
       
      estou usando assim:
      <script type="text/javascript">        $(document).ready(function() {             $('#example').DataTable({         "order": [[ 0, "desc" ]],         "language": {             "url": "//cdn.datatables.net/plug-ins/1.10.21/i18n/Portuguese-Brasil.json"         }     });         } );        </script> <table id="example" class="table table-striped table-bordered" style="width:100%">         <thead>             <tr>                 <th>Name</th>                 <th>Position</th>                 <th>Office</th>                 <th>Age</th>                 <th>Start date</th>                 <th>Salary</th>             </tr>         </thead>         <tbody>             <tr>                 <td>Tiger Nixon</td>                 <td>System Architect</td>                 <td>Edinburgh</td>                 <td>61</td>                 <td>2011/04/25</td>                 <td>$320,800</td>             </tr>             <tr>                 <td>Garrett Winters</td>                 <td>Accountant</td>                 <td>Tokyo</td>                 <td>63</td>                 <td>2011/07/25</td>                 <td>$170,750</td>             </tr>             <tr>                 <td>Ashton Cox</td>                 <td>Junior Technical Author</td>                 <td>San Francisco</td>                 <td>66</td>                 <td>2009/01/12</td>                 <td>$86,000</td>             </tr>             <tr>                 <td>Cedric Kelly</td>                 <td>Senior Javascript Developer</td>                 <td>Edinburgh</td>                 <td>22</td>                 <td>2012/03/29</td>                 <td>$433,060</td>             </tr>             <tr>                 <td>Airi Satou</td>                 <td>Accountant</td>                 <td>Tokyo</td>                 <td>33</td>                 <td>2008/11/28</td>                 <td>$162,700</td>             </tr>             <tr>                 <td>Brielle Williamson</td>                 <td>Integration Specialist</td>                 <td>New York</td>                 <td>61</td>                 <td>2012/12/02</td>                 <td>$372,000</td>             </tr>             <tr>                 <td>Herrod Chandler</td>                 <td>Sales Assistant</td>                 <td>San Francisco</td>                 <td>59</td>                 <td>2012/08/06</td>                 <td>$137,500</td>             </tr>             <tr>                 <td>Rhona Davidson</td>                 <td>Integration Specialist</td>                 <td>Tokyo</td>                 <td>55</td>                 <td>2010/10/14</td>                 <td>$327,900</td>             </tr>             <tr>                 <td>Colleen Hurst</td>                 <td>Javascript Developer</td>                 <td>San Francisco</td>                 <td>39</td>                 <td>2009/09/15</td>                 <td>$205,500</td>             </tr>         </tbody>         <tfoot>             <tr>                 <th>Name</th>                 <th>Position</th>                 <th>Office</th>                 <th>Age</th>                 <th>Start date</th>                 <th>Salary</th>             </tr>         </tfoot>     </table> <script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js"></script> <script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.10.22/js/dataTables.bootstrap4.min.js"></script>  
    • By AlexandrePrezzi
      Seguinte
      Tenho uma página chamada  "teste.php" nessa página tem um formulário com vários campos que o usuário usa para fazer um filtro dos campos a serem pesquisado...
       
      Ao clicar no Pesquisar (submit) ... o action da página faz a seguinte ação
       
      script type="text/javascript"> $(function($){ $('#meuFormulario').submit(function(){ var dados = jQuery(this).serialize(); jQuery.ajax({ type: "POST", url: "src/controller/request_teste.php", data: dados, cache: false, beforeSend: function() { $('#resultPesq').html("Carregando..."); }, success: function(e) { //window.alert(e); $('#resultPesq').html(e); }, error: function() { $('#resultPesq').html('Não foi encontrado dados!'); } }); return false; }); }); </script> O arquivo "request_teste.php", é quem recebe os dados do POST e faz o  tratamento desses dados....
       
      Ao final desse arquivo tem um  require_once 'result_teste.php' que vem a ser o arquivo onde irá mostrar o resultado da pesquisa.
       
      Nesse arquivo eu fiz uma páginação ao final do resultado.
       
      Entao primeiramente o link que estou acessando é 
       
      principal.php?link=teste.php  (abre a pagina com o formulário)
      ao clicar em pesquisar o link nao muda
       
      quando clico em página 2, é feito um refresh e a url fica principal.php?link=teste.php&pag=2
       
      O que acontece é que como a página faz um refresh eu perco todos dados do meu POST e tambem preciso clicar no botão pesquisar pra carregar os dado da página 2.
       
      Alguem sabe como ajustar isso ?

      Se precisarem de mais informações me avisem
       
       
       
    • By New Job
      Tenho um checkout pagseguro configurado em um site e gostaria de ajustar o código. Linguagem é PHP.
    • By Sapinn
      Iai galera beleza? Estou com um erro simples aqui como eu faço para estender minha conexão para outros arquivos ? Estou tentado fazer mas está dado um erro aqui
       
      arquivo connection.php
       
      <?php
      class Conexao{
          public $db_name = 'pessoa';
          public $host = 'localhost';
          public $user = 'root';
          public $pass = '';
       
          public function __construct()
          {
              try {
                  $pdo = new PDO("mysql:db_name=".$this->db_name.";host=".$this->host,$this->user,$this->pass);                                         
              } catch (PDOException $e) {
                  echo "Erro no banco ".$e->getMessage();
                  exit();
              }
          }
           
      }
       
      arquivo Pessoa.php
       
      <?php
      include 'connection.php';
      class Pessoa {
          private $pdo;
       
          public function __construct()
          {   
              $this->pdo = new Conexao();
          }
       
          public function buscarDados(){
              $stmt = [];
              $sql = $this->pdo->query("SELECT * FROM pessoa
              order by id desc");
              $stmt = $sql->fetchAll(PDO::FETCH_ASSOC);
              return $stmt;
          }
      }
       
      arquivo index.php
       
      <?php
          require_once 'models/Pessoa.php';
          $p = new Pessoa();
      ?>
      <!DOCTYPE html>
      <html lang="pt-br">
      <head>
          <meta charset="UTF-8">
          <meta http-equiv="X-UA-Compatible" content="IE=edge">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <link rel="stylesheet" href="assets/css/style.css">
          <title>Crud PDO </title>
      </head>
      <body>
          <section id="esquerda">
              <form action="">
                  <h2>Cadastrar Pessoa</h2>
                  <label for="nome">Nome: </label>
                  <input type="text" name="nome" id="nome">
                  <label for="telefone">Telefone: </label>
                  <input type="text" name="telefone" id="telefone">
                  <label for="email">Email:</label>
                  <input type="text" name="email" id="email">
                  <input type="submit" value="Cadastrar">
              </form>
          </section>
          <section id="direita">
          <?php
              $p->buscarDados();
          ?>
              <table>
                  <tr id="titulo">
                      <td>Nome</td>
                      <td>Telefone</td>
                      <td colspan="2">Email</td> 
                  </tr>
                  <tr>
                      <td>Maria</td>
                      <td>00000000</td>
                      <td>maria@gmail.com</td>
                      <td><a href="">Editar</a> <a href="">Excluir</a></td>
                  </tr>
              </table>
          </section>
      </body>
      </html>
       
      Erro que é apresentado:
      Fatal error: Uncaught Error: Call to undefined method Conexao::query()
    • By unset
      Olá, estou começando a usar o twig template e estou com uma dúvida e não encontrei a resposta também não sei se é possível mais espero que seja possível
       
      Bom eu tenho um arquivo com várias funções, como eu faço para chamar essas funções no HTML?
       
      Não funciona assim {{ funcao() }}
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.