integracao-correios

Biblioteca Java para Integração com o Web Service dos Correios (Prazo e Frete)

Índice

Introdução

Este projeto tem como propósito oferecer uma alternativa simples para a execução do web service SOAP provido pela empresa Correios para os recursos de consulta de prazo e preço do frete. O serviço SOAP do Correios não é muito complexo, mas a idéia é abstrair o uso do SOAP para que você possa focar apenas na integração da sua loja virtual com o serviço que precisa.

Configurações

Se você deseja utilizar este projeto como uma biblioteca do seu projeto deverá seguir os seguintes passos:

  1. Baixe o projeto git clone https://github.com/felipecaparelli/integracao-correios.git
  2. Execute o maven mvn clean install
  3. Se você não utiliza o maven em seu projeto, copie a biblioteca /integracao-correios/correios-client/target/correios-client-0.0.1-SNAPSHOT.jar para seu diretório WEB-INF/lib, junto com uma tonelada de dependências listadas no final deste arquivo.
  4. Voila!

Uso básico

O serviço já vem com os dados básicos da pesquisa preenchidos, sendo o serviço padrão utilizado o 'SEDEX Varejo'

            CorreiosPrecoPrazo result = new ConsultaCorreios().calcularPrecoPrazo("06053040", "80540220")[0];

            System.out.println("Preço do Frete: " + result.getPrecoFrete());
            System.out.println(String.format("Prazo de Entrega: %d dias", result.getPrazoEntrega()));

Deixo claro que o objeto que construo no retorno não possui a mesma interface do objeto retornado pelo serviço do Correios, mas contém todos os dados que eles devolvem. Na realidade, a intenção do objeto que eu retorno é deixar mais claras as informações providas.

Como o foco do projeto é sem um facilitador para programadores Java na integração com o serviço dos Correios, os dados parametrizados e retornados são em geral constituídos de variaveis que sejam coerentes com os tipos necessários (por exemplo, valores monetários que utilizaremos para cálculos são retornados como Double).

Parâmetros Complementares

A API permite parametrizar todos os dados aceitos no web service do Correios, seguindo as mesmas regras da validação do mesmo:

            CorreiosPrecoPrazo result = new ConsultaCorreios()
                                                    .servicos(CorreiosTipoServico.PAC_VAREJO) //tipo de serviço 'PAC'
                                                    .entregarEmMaos(IndicadorSN.SIM) //indicador que define se a entrega deve ser em mãos
                                                    .calcularPrecoPrazo("06053040", "80540220")[0];

            System.out.println("Preço do Frete: " + result.getPrecoFrete());
            System.out.println(String.format("Prazo de Entrega: %d dias", result.getPrazoEntrega()));

Perceba que o retorno é um array de objetos do tipo CorreiosPrecoPrazo, pois o serviço do Correios retorna 1 elemento para cada tipo de serviço consultado. Se você parametrizar mais de um serviço terá múltiplos retornos:

            CorreiosPrecoPrazo[] results = new ConsultaCorreios()
                                                    .servicos(CorreiosTipoServico.PAC_VAREJO, CorreiosTipoServico.SEDEX_10_VAREJO)
                                                    .calcularPrecoPrazo("06053040", "80540220");

            for (CorreiosPrecoPrazo result : results) {
                System.out.println("Preço do Frete: " + result.getPrecoFrete());
                System.out.println(String.format("Prazo de Entrega: %d dias", result.getPrazoEntrega()));
            }

Essa é uma versão inicial e tem muito para melhorar. Se tiver interesse em evoluir e implementar os outros serviços disponibilizados pelo Correios fique a vontade para fazer um fork ou colaborar com este projeto ;)

Dependências

Todas as bibliotecas deste projeto estão diretamente ligadas à biblioteca soap-ws, que é utilizada para realizar a chamada SOAP do web service do Correios.