Cálculo de frete dos correios em PHP

Aprenda a calcular o frete em php usando o webservice dos correios. Neste artigo vou demonstrar como você pode fazer o cálculo de frete com base no site dos correios. Estive pesquisando pela internet e diversos destes códigos prontos que encontrei estão com problemas e desatualizados.

Por | @nmuller99 Programação

Neste artigo vou demonstrar como você pode fazer o cálculo de frete com base no site dos correios. Estive pesquisando pela internet e diversos destes códigos prontos que encontrei estão com problemas e desatualizados. Pois bem, fui até o site dos correios e encontrei um arquivo onde explica o que você deve passar por parâmetro para eles e o que é retornado.

Com base nestas informações, montei uma função em PHP para que você tenha apenas o trabalho de coletar o retorno da função. Esta tem alguns parâmetros que são obrigatórios como código do serviço, cep de origem, cep de destino, peso do pacote, outras informações são necessárias somente para alguns serviços que os correios fornecem. Há valores que passei por padrão na chamada da função, estes valores servem para que haja compatibilidade se você não souber dos valores. Caso você tenha estas informações é necessário que passe juntamente para a função pois o valor do frete é influenciado pelo peso, altura, largura, comprimento e valor declarado.

A função esta apta a funcionar com:

  • PAC
  • SEDEX
  • SEDEX a cobrar
  • SEDEX 10


Segue o código completo do arquivo:
cServico->Erro == '0')
        return $xml->cServico->Valor;
    else
        return false;
}
echo "

Cálculo de FRETE PAC: ". calculaFrete('41106','26255170','96825150','0.1')."
"; echo "

Cálculo de FRETE SEDEX: ". calculaFrete('40010','26255170','96825150','0.1')."
"; echo "

Cálculo de FRETE SEDEX a cobrar: ". calculaFrete('40045','26255170','96825150','0.1')."
"; echo "

Cálculo de FRETE SEDEX 10: ". calculaFrete('40215','26255170','96825150','0.1')."
"; ?>


O valor é retornado do XML é:
SimpleXMLElement Object
(
    [cServico] => SimpleXMLElement Object
        (
            [Codigo] => 40045
            [Valor] => 37,20
            [PrazoEntrega] => 2
            [ValorMaoPropria] => 0,00
            [ValorAvisoRecebimento] => 0,00
            [ValorValorDeclarado] => 0,50
            [EntregaDomiciliar] => S
            [EntregaSabado] => N
            [Erro] => 0
            [MsgErro] => SimpleXMLElement Object
                (
                )
        )
)


Feito isto você já pode fazer sua implementação usando esta função. Qualquer dúvida poste abaixo ou em nosso fórum.

Mais sobre: php código frete
Share Tweet
Recomendado
Comentários
Destaquesver tudo