Home
Button Mobile Webdesign em Foco
Newsletter Webdesign em Foco
Support Webdesign em Foco
Contribuition Webdesign em Foco
Doe para a Webdesign em Foco
Suporte da Webdesign em Foco
Fechar

Integrando site aos Correios

22/04/2018

Nessa vídeo-aula vamos aprender como integrar nosso site com os Correios realizando a busca pelo CEP e calculando prazo e preço do frete.

Buscando CEP pela API

Vamos realizar a busca do endereço pelo CEP digitado pelo cliente utilizando a API disponível no site VIACEP. Vamos fazer um ajax para a URL da documentação do referido CEP tendo como retorno um json. Segue o código abaixo:

<!doctype html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>API Correios</title>
</head>
<body>
    <h1>Correios</h1>
    <h2>Busca Cep:</h2>
    <form name="Form1" id="Form1">
        CEP: <input type="text" name="Cep" id="Cep"><br>
        <input type="submit" value="Buscar">
    </form>
    <div class="ResultadoCep"></div>

    <!-- Baixe o jquery no site jquery.com -->
    <script src="myjquery.js"></script>
</body>
</html>

No JQuery vamos fazer a nossa requisição Ajax.

//Busca do CEP
$('#Form1').on('submit',function(event){
    event.preventDefault();
    var Dados=$(this).serialize();
    var Cep=$('#Cep').val();

    $.ajax({
        url: 'https://viacep.com.br/ws/'+Cep+'/json/',
        method:'get',
        dataType:'json',
        data: Dados,
        success:function(Dados){
            $('.ResultadoCep').html('').append('
'+Dados.logradouro+','+Dados.bairro+'-'+Dados.localidade+'-'+Dados.uf+'
'); }, error:function(Dados){ alert('Cep não encontrado. Tente Novamente'); $('#Cep').val(''); } }); });

Pesquisando preço e prazo

Para pesquisar preço e prazo vamos utilizar a API oficial dos correios. Nesse caso teremos como retorno um arquivo XML. Para tanto vamos criar uma ClassCorreios e um ControllerCorrios. A ClassCorreios fará a ligação com a API e o ControllerCorreios vai receber as variáveis e chamar o método pesquisaPrecoPrazo().

#ControllerCorreios
include("ClassCorreios.php");

$CepOrigem=filter_input(INPUT_POST,'CepOrigem',FILTER_SANITIZE_SPECIAL_CHARS);
$CepDestino=filter_input(INPUT_POST,'CepDestino',FILTER_SANITIZE_SPECIAL_CHARS);
$Peso=filter_input(INPUT_POST,'Peso',FILTER_SANITIZE_SPECIAL_CHARS);
$Formato=filter_input(INPUT_POST,'Formato',FILTER_SANITIZE_SPECIAL_CHARS);
$Comprimento=filter_input(INPUT_POST,'Comprimento',FILTER_SANITIZE_SPECIAL_CHARS);
$Altura=filter_input(INPUT_POST,'Altura',FILTER_SANITIZE_SPECIAL_CHARS);
$Largura=filter_input(INPUT_POST,'Largura',FILTER_SANITIZE_SPECIAL_CHARS);
$MaoPropria=filter_input(INPUT_POST,'MaoPropria',FILTER_SANITIZE_SPECIAL_CHARS);
$ValorDeclarado=filter_input(INPUT_POST,'ValorDeclarado',FILTER_SANITIZE_SPECIAL_CHARS);
$AvisoRecebimento=filter_input(INPUT_POST,'AvisoRecebimento',FILTER_SANITIZE_SPECIAL_CHARS);
$Codigo=filter_input(INPUT_POST,'Codigo',FILTER_SANITIZE_SPECIAL_CHARS);
$Diametro=filter_input(INPUT_POST,'Diametro',FILTER_SANITIZE_SPECIAL_CHARS);

$Correios=new ClassCorreios();
$Correios->pesquisaPrecoPrazo($CepOrigem,$CepDestino,$Peso,$Formato,$Comprimento,$Altura,$Largura,$MaoPropria,$ValorDeclarado,$AvisoRecebimento,$Codigo,$Diametro);
#ClassCorreios
class ClassCorreios{

    public $Retorno;

    #Pesquisa de preço e prazo de encomendas do correio
    public function pesquisaPrecoPrazo($CepOrigem,$CepDestino,$Peso,$Formato,$Comprimento,$Altura,$Largura,$MaoPropria,$ValorDeclarado,$AvisoRecebimento,$Codigo,$Diametro)
    {
        $Url="http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?nCdEmpresa=&sDsSenha=&sCepOrigem={$CepOrigem}&sCepDestino={$CepDestino}&nVlPeso={$Peso}&nCdFormato={$Formato}&nVlComprimento={$Comprimento}&nVlAltura={$Altura}&nVlLargura={$Largura}&sCdMaoPropria={$MaoPropria}&nVlValorDeclarado={$ValorDeclarado}&sCdAvisoRecebimento={$AvisoRecebimento}&nCdServico={$Codigo}&nVlDiametro={$Diametro}&StrRetorno=xml&nIndicaCalculo=3";
        $this->Retorno=simplexml_load_string(file_get_contents($Url));
        echo "Valor: ".$this->Retorno->cServico->Valor;
        echo "<br>";
        echo "Prazo: ".$this->Retorno->cServico->PrazoEntrega;
    }
}

Para mais detalhes acesse o Manual dos Correios clicando aqui.

Bons estudos :)

Receba as aulas da Webdesign em Foco em Seu Email
Suporte Webdesign em Foco

Posts Relacionados

Contador de Visitas com Validação de Usuário por IP
Nessa vídeo-aula criaremos um contador de visitas com validação de usuários pela data, hora e ip, evitando assim que o mesmo usuário some várias visitas.
Saiba mais!
Armazenar senhas no MySql com PHP
No vídeo de hoje trataremos de gravação de senha com hash no banco de dados. Faremos também a verificação desse hash com a senha digitada pelo usuário.
Saiba mais!
PHP
PHP é uma das principais linguagens de programação utilizada nas plataformas web. Isso porque além de ser uma linguagem leve, o PHP é robusto.
Saiba mais!