Código PHP para rastreamento de objetos dos Correios

Fala galera!
Recebemos recentemente uma notificação dos Correios referente a uma atualização do Sistema de Rastreamento de Objetos – SRO. A versão antiga não funciona mais, e somos redirecionados para uma página com o aviso sobre essa atualização.
Codificamos então uma maneira rápida e prática para realizar as consultas de acordo com as novas diretivas utilizando código PHP para rastreamento de objetos dos Correios.

Código php para rastreamento de objetos dos correiosCódigo PHP para rastreamento de objetos dos Correios

Antigamente, poderíamos consultar o andamento das entregas enviando os dados necessários através do método GET. Porém, a nova versão funciona com o método POST. O link de destino também foi atualizado: o novo endereço é https://www2.correios.com.br/sistemas/rastreamento/resultado_semcontent.cfm.

POST ATUALIZADO

Galera, o Correios atualizou o local do script de pesquisa, sendo agora OBRIGATÓRIO consultar pelo HTTPS, e não HTTP. Os códigos abaixo foram corrigidos!

Vamos ao código PHP completo:

$post = array('Objetos' => 'CODIGO_RASTREAMENTO');
// iniciar CURL
$ch = curl_init();
// informar URL e outras funções ao CURL
curl_setopt($ch, CURLOPT_URL, "https://www2.correios.com.br/sistemas/rastreamento/resultado_semcontent.cfm");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, http_build_query($post));
// Acessar a URL e retornar a saída
$output = curl_exec($ch);
// liberar
curl_close($ch);
// Imprimir a saída
echo $output;

Explicando o código:

$post = array('Objetos' => 'CODIGO_RASTREAMENTO');

Neste trecho, vamos criar um array com o índice “Objetos” que é obrigatório. A ele atribuímos o código de rastreamento ‘CODIGO_RASTREAMENTO’ (substitua pelo código que deseja consultar).

$ch = curl_init();

Aqui vamos iniciar a biblioteca CURL, que nos permite consultar acessar outras páginas sem sair do local atual.

curl_setopt($ch, CURLOPT_URL, "https://www2.correios.com.br/sistemas/rastreamento/resultado_semcontent.cfm");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, http_build_query($post));

Setamos então algumas opções na CURL:

  • CURLOPT_URL: o endereço para onde vamos enviar os dados. Neste caso passamos a URL do sistema de rastreamento de objetos dos correios.
  • CURLOPT_RETURNTRANSFER: definimos TRUE para recuperarmos o retorno da página.
  • CURLOPT_POSTFIELDS: é aqui onde informamos os dados que serão enviados. Note que é obrigatório o uso da função http_build_query do PHP para formatação correta dos dados.
$output = curl_exec($ch);

Vamos então executar a ação e gravar o retorno na variável $output.

curl_close($ch);

Não se esqueça de fechar a sessão CURL para liberar todos os recursos. A variável $ch também é deletada.

echo $output;

Por fim exibimos o retorno na tela através de um “echo”.

Considerações

Utilizando este código, você terá em sua tela o retorno exatamente como o site dos Correios exibe. Caso queira formatar a sua maneira, deverá utilizar técnicas para pegar apenas os dados que deseja e salvar em suas respectivas variáveis. Um bom exemplo é com DOMDocument.

Até mais!