Pular para o conteúdo principal

Rastreamento de Pedidos : Correios - PHP , API + XML

RESUMO

Esse documento visa ensinar como implantar o rastreamento de mercadorias dos correios em um Website utilizando para isso a linguagem de programação PHP. Caso você queira apenas rastrear um Objeto dos Correios, pode fazer isso através do site Sooho clicando aqui ou através do site dos Correios.


Nota importante: Mediante as alterações de 2017 nos serviços dos correios, eu recomendo fortemente que use o tutorial do seguinte link: http://sooho.com.br/2017/03/24/rastreamento-de-pedidos-correios-php-soap/ 
Ele lhe dará uma solução de rastreamento definitiva e valida a longo prazo.


Devido a variedade dos serviços de API que os correios oferecem a desenvolvedores, e a documentação por vezes difícil de ser encontrada, podemos dizer a grosso modo, que não há um padrão que todos os profissionais utilizem para programar o rastreamento de pedidos nos correios. Isso deve variar conforme os projetos, do mais simples aos mais complexos. Logo, vou citar aqui quatro dos meios mais usuais.


1 - Modo simples : Link

O meio mais simples de fazer o rastreamento é utilizando um link com o código de rastreamento no final, como no exemplo abaixo. Sendo assim nossa única variável é o Código de rastreamento e nada mais.
http://websro.correios.com.br/sro_bin/txect01$.Inexistente?P_LINGUA=001&P_TIPO=002&P_COD_LIS=SS123456789BR



2 - Webservice dos Correios

A uma segunda forma de fazer o rastreamento de Pedidos, também por link, que é através do serviço oferecido pelo Correios em sua página. Porém nesse caso quem insere o código de rastreamento é o Cliente. O link para o serviço é : 
http://www.correios.com.br/servicos/rastreamento/rastreamento.cfm


3 - Obtendo parte da pagina Renderizada pelos correios

Simples e criativo! Esse é um processo que podemos denominar hack, gambiarra, jeitinho brasileiro, POG, ou seja lá como queira chamar.
Funciona da seguinte maneira:
Quando você efetua o rastreamento de um objeto através do Webservice no site dos correios, ele lhe retorna uma página HTML com as informações do objeto e seus eventos. Com a ajuda do PHP é possível ler essa página retornada e retirar dela apenas as informações que interessam, que no caso seria a tabela com os eventos de rastreamento. E é isso que a função abaixo do autor Anderson Makiyama propõe.


/**
*Fonte:http://fazer-site.net/fazer-script-php-de-rastreamento-correios-com-file_get_contents/
* autor: Anderson Makiyama 
* (Levemente auterada da original) Retorna todos os eventos do objeto dado o código de rastreamento
* @param string $codigo - Código de rastreamento dos correios
* @return [html table] - retorna tabela formatada com os dados
**/
function rastrear( $codigo = null )
{
  $url='http://websro.correios.com.br/sro_bin/txect01$.Inexistente?P_LINGUA=001&P_TIPO=002&P_COD_LIS=' . $codigo;
  $retorno = file_get_contents( $url );
  preg_match( '/
.*<\/TABLE>/s', $retorno, $tabela );

  return ( count( $tabela ) == 1 ) ? $tabela[0] : "objeto não encontrado" ;
}

Para utilizar a função acima basta fazer uma chamada tal como:
rastrear( 'SS123456789BR' ); 


4 - Utilizando API e retorno via XML

Nota importante: nos últimos tempos a API dos correios com XML tem apresentado severos problemas de instabilidade, impedindo o rastreamento ou demorando muito tempo para responder. Eu recomendo fortemente que você leia o artigo: Como rastrear Produtos via API + SOAP no site Sooho.


A última forma de rastrear um produto é utilizando a API que os correios oferecem e que retorna todos os eventos do objeto em um arquivo XML. A API é normalmente usada para Empresas que tem remessas em grande escala, e se registram junto a área comercial dos correios, recebendo assim credenciais (login e senha) que permitem a utilização da API.

A documentação se encontra no seguinte link: 
Fonte: http://blog.correios.com.br/comercioeletronico/wp-content/uploads/2011/10/Guia-Tecnico-Rastreamento-XML-Cliente-Vers%C3%A3o-e-commerce-v-1-5.pdf

 - Infelizmente esse é um documento já obsoleto e que oferece muito pouco aos desenvolvedores. 
 - A grande vantagem é termos mais flexibilidade e detalhes sobre as informações adquiridas e a forma como desejamos formata-las via CSS DIV, etc. 
 - Podemos também trabalhar com um intervalo de Códigos de objetos a ser rastreado ou mesmo com uma lista deles;
 - Utilizando a API estamos livres de um problema tal como os correios mudarem a forma como a pagina é renderizada.

Bom, eu colocaria todo o processo aqui, porém o código ficou um pouco extenso e decidi colocar em meu site, (pois permite melhor apresentação de código do que o blogger), juntamente a um DEMO.

O link é o que se segue: http://sooho.com.br/utilidades/rastreamento-de-pedidos-correios/

Lá é possível obter o código Fonte básico com algumas explicações e também ver o sistema funcionando na prática.


Veja também: Como calcular as dimensões para envio de um Pacote via SEDEX. 
http://osians.blogspot.co.id/2016/02/php-dimensoes-pacote-frete-sedexpac.html 






Comentários

  1. O modo simples através do link os correios 'desativaram' =/

    ResponderExcluir
  2. Respostas
    1. Agradeço imensamente sua apreciação Marcos. Infelizmente alguns dos métodos não funcionam mais e acabei criando um método mais novo e estável para rastrear objetos via SOAP para suprir esse problema. E caso você tenha interesse ele se encontra no GITHUB: https://github.com/osians/rastreamento-de-pedidos/ . Novamente meu muito obrigado pela apreciação do trabalho do blog.
      abs.

      Excluir
    2. Obrigado por compartilhar. Será de grande apreço, pois a string anterior parou de funcionar este mês. Já compartilhei no G+.
      Vlw. Abraços

      Excluir

Postar um comentário

Postagens mais visitadas deste blog

Dicas para Iniciantes - Clash of Clans

Este post visa apenas expor algumas dicas e experiências vividas até o momento no jogo Crash of Clans, desenvolvido para aparelhos da Apple, é indicado para quem não conhece o game ainda ou para quem apenas quer ler algumas dicas e experiências (ao fim) . 
Sou o membro Osians integrante do Clan Unrated.

How to play Clash of Clans on PC

A few days ago I was looking for a way to play Clash of Clans on my Desktop PC, but I just found fakes and links to surveys.
After some frustrations I discovered that Clash of Clans now is available for Google Android, so I think that an easy way to play this game is to install an Android emulator on PC.
There's a lot of Android emulator over the internet and after testing a bunch of these last month I conclude that the best choise is BlueStacks.  (You can download it at http://www.bluestacks.com/ )

Note that I'll not teach you how to install it because there's a lot of tutorials and how-to's over the internet.
- After install the emulator just execute it; 
- You need to set up this, the system will ask you about a google account( if you haven't, go ahead and do one );
- Finally, into the Android emulator go to the Google Shop, search for Clash of Clans and install it.

If the tip above is not clear or if you have any doubt, please let me know.

Bolo gelado de Maracujá com cobertura de Marshmallow frio e geleia de Brilho

Hoje um amigo na acadêmia pediu-me uma receita de bolo de maracujá, então, para "não deixar esse blog muito monótono" vamos aprender uma receita de bolo gelado de maracujá. =]


(Foto ilustrativa retirada do site Anamaria  http://mdemulher.abril.com.br/revistas/anamaria/ )
O Bolo ou Torta de Maracujá (chame-o como quiser) é o que pode ser visto na foto acima.


MASSA
06 ovos separados 02 xícaras (chá) de açúcar 03 xícaras (chá) de farinha de trigo ½ xícara (chá) de água 01 xícara (chá) de suco de maracujá 01 colher (sopa) de fermento em pó

RECHEIO
01 lata de creme de leite s/ soro gelado ½ lata de leite condensado gelado 1/3 lata de suco de maracujá 01 colher (sopa) de emulsificante ** polpa de Maracujá

MARSHMALLOW FRIO
03 Claras 09 colheres (sopa) cheia de açúcar 01 colher (sopa) cheia de emulsificante ** essência de baunilha á gosto

GELEIA DE BRILHO
½ xícara (chá) de água ½ xícara (chá) de suco de maracujá ½ colher (sopa) de amido ** polpa de maracujá

MODO DE FAZER Bolo:
Separar as gemas da…

AppCake no lugar do Installous ( Outdated Version )

Uma vez que o Installous foi descontinuado e vive a emitir a todo momento a mensagem "Installous - Outdated Version" , a solução mais simples e pratica é troca-lo por uma app com as mesmas características, no caso o AppCake.
Podemos instalar o AppCake através do Cydia.

Vou ser rápido quanto a instalação do mesmo neste post visto que a instalação é simples.
vamos aos passos:

1 - abra o Cydia e acesse Manage;
2 - acesse Source toque em Edit e em seguida toque em Add (no canto superior esquerdo da tela);
3 - escreva http://cydia.iphonecake.com e clique em Add Source;
4 - Apos a instalação da fonte, volte ao cydia acesse Search e digite AppCake , toque na Aplicação que aparece no resultado e em seguida toque em Install no canto superior direito da tela.


Desbloqueando Nintendo Wii 4.3

Bem, este não é um tutorial de como destravar seu aparelho Wii, visto que existem uma gama imensa de tutoriais na web descrevendo isso em passos simples, este artigo apenas visa mostrar as minhas experiências no destravamento de um novo Nintendo Wii Preto 4.3e. Ao final deste post deixarei as fontes que utilizei para desbloqueio do mesmo.


Em agosto de 2011 minha irmã foi à Europa e por lá encontrou um nintendo Wii novo Preto com Motion Plus  super barato que vem por padrão na versão 4.3e. O Grande problema é que ele é bloqueado para região Europeia.
A principio eu não queria ficar a cargo de desbloquear o aparelho. E fui até uma loja especializada consultar o valor de desbloqueio, que ficava em R$200,00 ... um preço salgado visto que o aparelho não custa tudo isso. O jeito é tentar desbloquear por conta própria, então fui pesquisar como fazer isso através da internet.


Infelizmente - e diferente de Sony e Microsoft - a Nintendo divide seus consoles por Regiões, sendo estas America(U), Eur…

Delphi - Inserir valor Moeda no TEdit

Estive pesquisando meios de usar um TEdit no Delphi com formatação como a dos Bancos em Moeda, para um Projeto antigo meu. Porém, achei apenas uma postagem falando sobre o assunto. (Link segue nas fontes)
Mas, apesar de fazer o que eu queria, o código era um tanto complicado, pois da forma que estava seria necessário refazer o mesmo para todos os TEdits que eu fosse usar para inserir valores monetários além de ter que usar 2 eventos de cada TEdit (OnkeyPress e OnChange). Então, baseado nesse código criei uma pequena Procedure para fazer essa formatação de maneira simples. Para isso, basta passar como parâmetro o TEdit que deve ser formatado e o Key do teclado que será passado ao mesmo. Segue código comentado abaixo.

Rastreamento de Pedidos : Correios - PHP + SOAP

Nota Importante: Olá, esse mesmo artigo encontra-se atualizado em um novo site de minha autoria, o Soohohttp://sooho.com.br/2017/03/24/rastreamento-de-pedidos-correios-php-soap/ , dêem preferência ao conteúdo ali contido, visto futuramente este blog ficara obsoleto. Obrigado. 
O Código que se segue, é uma alternativa para rastrear objetos do Correio através do PHP com a tecnologia SOAP. Uma vez que a API mais antiga dos correios - PHP + XML -, não tem funcionado corretamente, resolvi por publicar esse método simples que espero ser de alguma ajuda a quem necessite.
Codígo melhorado no Github:https://github.com/osians/rastreamento-de-pedidos/

Bom, eu não vou me ater a uma extensa explicação sobre os detalhes do código, apenas gostaria de frisar algumas notas importantes. 

- Primeiro:  se você pretende utilizar a API dos correios, tire um tempo e vá até uma Agência e solicite sua senha e username para uso da mesma.   - Segundo: A documentação para compreender a terminologia dos correios, enco…