BrasilAPI / cep-promise

Busca por CEP integrado diretamente aos serviços dos Correios, ViaCEP e outros (Node.js e Browser)
MIT License
2.89k stars 315 forks source link

Alteração no método de obtenção dos correios #227

Open TheKoakuma opened 3 years ago

TheKoakuma commented 3 years ago

Olá pessoal, tudo beleza?

Primeiro peço desculpas se é uma issue duplicada (nas abertas não encontrei nada sobre, e o código da versão atual ainda usa a consulta por soap)

Então, ultimamente notei algumas alterações de layout dos correios, dentre as quais aparentemente passaram a chamar uma API tanto para a busca de rastreamento quanto para a busca de cep, de forma que seria mais interessante do que ficar destrinchando o retorno soap:

O endpoint para a busca nova de CEP é https://buscacepinter.correios.com.br/app/endereco/carrega-cep-endereco.php Até onde analisei a requisição POST para chamá-lo recebe os seguintes parâmetros

endereco: //recebe o cep, parte dele ou um termo (endereço, unidade dos correios, etc.) para pesquisa
tipoCEP  //recebe os valores ALL (Todos), LOG (Lograduros), PRO (CEP Promocional), CPC (Cx Postal Comunitaria), GRU (Grande Usuário) e UOP (Unidade Operacional) 

No caso de sucesso retorna a seguinte estrutura:

{
    "erro": false,
    "mensagem": "DADOS ENCONTRADOS COM SUCESSO.",
    "total": 1,
    "dados": [    //A depender da quantidade de resultados com uma busca por nome ou cep parcial é retornado os 50 primeiros
        {
            "uf": "SP",
            "localidade": "Itarar\u00e9",
            "locNoSem": "",
            "locNu": "",
            "localidadeSubordinada": "",
            "logradouroDNEC": "Rua S\u00e3o Pedro - at\u00e9 2600\/2601",
            "logradouroTextoAdicional": "",
            "logradouroTexto": "",
            "bairro": "Centro",
            "baiNu": "",
            "nomeUnidade": "",
           "cep": "18460009",
            "tipoCep": "2",
            "numeroLocalidade": "",
            "situacao": "",
            "faixasCaixaPostal": [],
            "faixasCep": []
        }
    ]
}

No caso de falhas as seguintes situações foram encontradas:

Valor inválido em endereco, Valor inválido ou nulo em tipoCEP,

{
    "erro": false,
    "mensagem": "DADOS NAO ENCONTRADOS",
    "total": 0,
    "dados": []
}

Request vazia, Valor nulo em endereco: retorna a seguinte estrutura:

{
    "erro": false,
    "mensagem": "DADOS NAO INFORMADO",
    "total": 0,
    "dados": []
}

TipoCEP ou endereco não passado na request: 302 para a index dos correios

Enfim, é isso que consegui obter por essa api que os correios estão usando para a consulta pública

lucianopf commented 3 years ago

Opaa, sou a favor de brincar com essa nova API hein!

Pelo que entendi essa é em JSON mesmo né? Topo em criar um novo provedor pra validar e se tudo der certo a gnt fazer a migração do antigo pro novo hein :eyes: :heart:

kivervinicius commented 3 years ago

Exemplo de consulta por cep

curl --request POST \
  --url https://buscacepinter.correios.com.br/app/cep/carrega-cep.php \
  --data cep=78302-050
TheKoakuma commented 3 years ago

199