Uma alternativa simples e fácil para calcular preços e prazos de encomendas dos Correios.
Imagine um mundo onde a comunidade define o melhor caminho, projeta e implementa a aplicação dos Correios, melhorando os fluxos de trabalho e tornando as coisas mais fáceis de se trabalhar no front-end. Dos devs para os devs!
(Não é bem implementar a aplicação dos Correios, mas é um "meio de campo". Leia abaixo).
A API recebe o JSON, parseia os dados, faz a requisição no webservice dos Correios e retorna um JSON. Você só precisa fazer um fetch e tratar a resposta.
A ideia é simplificar a vida do desenvolvedor, deixando a responsabilidade de tratar a resposta para a aplicação.
git clone [email protected]:tchaguitos/correios-rest.git
cd correios-services
npm install
nodemon
Antes de tudo, tome conhecimento do styleguide do Airbnb. Ele vai nos ajudar na padronização do código.
Depois disso, leia o manual de contribuição.
A lista de serviços disponíveis no webservice dos Correios é a abaixo. Os itens marcados já estão implementados.
- CalcPrazo
- CalcPrazoData
- CalcPrazoRestricao
- CalcPreco
- CalcPrecoData
- CalcPrecoFAC
- CalcPrecoPrazo
- CalcPrecoPrazoData
- CalcPrecoPrazoRestricao
- ListaServicos
Você pode acompanhar o progresso através das issues e do projeto "correios-services" na aba "projects".
Mais informações referentes aos Serviços você encontra aqui.
Para calcular o valor do frete de uma encomenda, basta enviar, através do verbo POST, um JSON contendo as informações abaixo para o endpoint '/v1/price'.
(Sim, essa URL precisa de um nome melhor).
{
"nCdEmpresa": "",
"sDsSenha": "",
"nCdServico": "40010",
"sCepOrigem": "37410220",
"sCepDestino": "05311900",
"nVlPeso": "1",
"nCdFormato": "1",
"nVlComprimento": "20",
"nVlAltura": "5",
"nVlLargura": "15",
"nVlDiametro": "0",
"sCdMaoPropria": "n",
"nVlValorDeclarado": "100",
"sCdAvisoRecebimento": "n"
}
Você receberá um JSON contendo a resposta do serviço dos Correios.
{
"Codigo": "40010",
"Valor": "49,15",
"ValorMaoPropria": "0,00",
"ValorAvisoRecebimento": "0,00",
"ValorValorDeclarado": "0,75",
"Erro": "",
"MsgErro": "",
"ValorSemAdicionais": "48,40"
}