Skip to content

Instantly share code, notes, and snippets.

@TRFN
Last active November 29, 2020 23:46
Show Gist options
  • Save TRFN/751d52341b1eb3f9398339621a7067c1 to your computer and use it in GitHub Desktop.
Save TRFN/751d52341b1eb3f9398339621a7067c1 to your computer and use it in GitHub Desktop.
Calculo de Frete em Javascript
/* Esta função requer a biblioteca jQuery */
/* Exemplo de uso: calcularFrete("sedex", "31.130-600", "13.165-000", 8, 350, function(data){console.log(data);}); */
/* Exemplo de uso: calcularFrete(41106, "31.130-600", "13.165-000", 8, 350, function(data){console.log(data);}); */
function calcularFrete(env, orig, dest, qtd, vl, cb){
var URL = "//cors-anywhere.herokuapp.com/ws.correios.com.br/calculador/CalcPrecoPrazo.asmx/";
function codenv(cod){
let cods = [
[40010, "SEDEX"],
/*[40215, "SEDEX10"],
[40290, "SEDEXH"],*/ /* Estas linhas acima estão comentadas porque a api do correios */
[41106, "PAC"] /* não estão disponibilizando estas opções em todos os casos */
];
for( let i = 0; i < cods.length; i++ ){
if(cods[i].indexOf(typeof cod == "string" ? cod.toUpperCase():cod) !== -1){
return cods[i][0];
}
}
return cod;
}
/* Esta parte deve ser formatada conforme a necessidade de uso */
var REQ = {
nCdEmpresa: '',
sDsSenha: '',
nCdServico: codenv(env),
sCepOrigem: orig.split(/[^0-9]/).join(""),
sCepDestino: dest.split(/[^0-9]/).join(""),
nVlPeso: String(Math.ceil(qtd * 0.65)),
nCdFormato: '1',
nVlComprimento: '40',
nVlAltura: String(Math.max(10,qtd*4.5)),
nVlLargura: '30',
nVlDiametro: '0',
sCdMaoPropria: 'n',
nVlValorDeclarado: String(vl),
sCdAvisoRecebimento: 'n',
};
/* Fim da area de personalização */
return $.post(URL + "CalcPreco", REQ, function(data){
result = ({
Valor: $(data.querySelector("cServico Valor")).text()
});
XML = [data];
$.post(URL + "CalcPrazo", REQ, function(data){
XML.push(data);
result.Prazo = $(data.querySelector("cServico PrazoEntrega")).text();
cb({data: result, "xmls": XML});
});
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment