Com esta classe é possível calcular em tempo real (online) o valor do SEDEX entre 2 CEPs através do site dos Correios.
Esta classe suporta os seguintes serviços:
– SEDEX
– SEDEX Hoje
– SEDEX 10
– SEDEX a Cobrar
Este código é muito útil para sites de comércio eletrônico.
<% '======================================================= 'CLASSE SEDEX '======================================================= Class Sedex '----------------------------------------------------- 'Funcao: doCalculoSedex(ByVal ServicoCodigo, ByVal CepOrigem, ByVal CepDestino, ByVal Peso, ByVal MaoPropria, ByVal ValorDeclarado, ByVal AvisoRecebimento) 'Sinopse: Retorna Lista de Indicadores Financeiros 'Parâmetros: ' ServicoCodigo: Código do tipo de entrega que será calculada ' O valores possíveis são: ' - 40010 (SEDEX) ' - 40290 (SEDEX Hoje) ' - 40215 (SEDEX 10) ' - 40045 (SEDEX a Cobrar) ' Valor padrão é: 40010 ' CepOrigem: Cep de Origem no formato XXXXX-XXX ' CepDestino: Cep de Destino no formato XXXXX-XXX ' Peso: Peso da remessa limite de 30 ' MaoPropria: Serviço de Mão Própria(S/N) ' Valor padrão é: N ' ValorDeclarado: Serviço de seguro com valor declarado ' AvisoRecebimento: Serviço de Aviso de Recebimento(S/N) ' Valor padrão é: N 'Retorno: Objeto SedexInfo 'Autor: Gabriel Fróes - www.codigofonte.com.br '----------------------------------------------------- Function doCalculoSedex(ByVal ServicoCodigo, ByVal CepOrigem, ByVal CepDestino, ByVal Peso, ByVal MaoPropria, ByVal ValorDeclarado, ByVal AvisoRecebimento) 'Declaração das variáveis/objetos Dim Retorno Dim URL Dim objXmlHttp Dim objXmlDoc 'Inicialização dos objetos/variáveis Set objXmlHttp = Server.CreateObject("MSXML2.XMLHTTP") Set objXmlDoc = Server.CreateObject("MSXML2.DOMDocument") Set doCalculoSedex = New SedexInfo 'Validando as variáveis If ServicoCodigo = "" Then ServicoCodigo = 40010 End If Peso = Replace(Peso, ",", ".") If MaoPropria = "" Then MaoPropria = "N" End If ValorDeclarado = Replace(ValorDeclarado, ",", ".") If AvisoRecebimento = "" Then AvisoRecebimento = "N" End If 'Montando a URL para busca no site URL = "https://www.correios.com.br/encomendas/precos/calculo.cfm?resposta=Xml" URL = URL & "&servico=" & ServicoCodigo URL = URL & "&cepOrigem=" & CepOrigem URL = URL & "&cepDestino=" & CepDestino URL = URL & "&peso=" & Peso URL = URL & "&MaoPropria=" & MaoPropria URL = URL & "&valorDeclarado=" & ValorDeclarado URL = URL & "&avisoRecebimento=" & AvisoRecebimento objXMLHttp.Open "GET", URL, False objXMLHttp.Send 'Verificando se a busca foi bem sucedida If objXmlHttp.statusText = "OK" Then objXmlDoc.loadXML(objXmlHttp.responseText) 'Verificando se o retorno foi bem sucediido If TypeName(objXmlDoc) = "DOMDocument" Then doCalculoSedex.Versao = objXmlDoc.selectSingleNode("//calculo_precos//versao_arquivo").text doCalculoSedex.ServicoCodigo = objXmlDoc.selectSingleNode("//calculo_precos//dados_postais//servico").text doCalculoSedex.ServicoNome = objXmlDoc.selectSingleNode("//calculo_precos//dados_postais//servico_nome").text doCalculoSedex.UFOrigem = objXmlDoc.selectSingleNode("//calculo_precos//dados_postais//uf_origem").text doCalculoSedex.LocalOrigem = objXmlDoc.selectSingleNode("//calculo_precos//dados_postais//local_origem").text doCalculoSedex.CEPOrigem = objXmlDoc.selectSingleNode("//calculo_precos//dados_postais//cep_origem").text doCalculoSedex.UFDestino = objXmlDoc.selectSingleNode("//calculo_precos//dados_postais//uf_destino").text doCalculoSedex.LocalDestino = objXmlDoc.selectSingleNode("//calculo_precos//dados_postais//local_destino").text doCalculoSedex.CEPDestino = objXmlDoc.selectSingleNode("//calculo_precos//dados_postais//cep_destino").text doCalculoSedex.Peso = objXmlDoc.selectSingleNode("//calculo_precos//dados_postais//peso").text doCalculoSedex.MaoPropria = objXmlDoc.selectSingleNode("//calculo_precos//dados_postais//mao_propria").text doCalculoSedex.AvisoRecebimento = objXmlDoc.selectSingleNode("//calculo_precos//dados_postais//aviso_recebimento").text doCalculoSedex.ValorDeclarado = objXmlDoc.selectSingleNode("//calculo_precos//dados_postais//valor_declarado").text doCalculoSedex.TarifaValorDeclarado = objXmlDoc.selectSingleNode("//calculo_precos//dados_postais//tarifa_valor_declarado").text doCalculoSedex.PrecoPostal = objXmlDoc.selectSingleNode("//calculo_precos//dados_postais//preco_postal").text doCalculoSedex.ErroCodigo = objXmlDoc.selectSingleNode("//calculo_precos//erro//codigo").text doCalculoSedex.ErroDescricao = objXmlDoc.selectSingleNode("//calculo_precos//erro//descricao").text Else doCalculoSedex.ErroCodigo = "1001" doCalculoSedex.ErroDescricao = "Não foi possível consultar à base dos correios neste momento." End If Else doCalculoSedex.ErroCodigo = objXmlHttp.status doCalculoSedex.ErroDescricao = objXmlHttp.statusText End If 'Destruindo os objetos Set objXmlDoc = Nothing Set objXmlHttp = Nothing End Function End Class '----------------------------------------------------- 'Classe com os Atributos do Sedex '----------------------------------------------------- Class SedexInfo Public Versao Public ServicoCodigo Public ServicoNome Public UFOrigem Public LocalOrigem Public CEPOrigem Public UFDestino Public LocalDestino Public CEPDestino Public Peso Public MaoPropria Public AvisoRecebimento Public ValorDeclarado Public TarifaValorDeclarado Public PrecoPostal Public ErroCodigo Public ErroDescricao End Class '----------------------------------------------------- 'EXEMPLO DE CHAMADA '----------------------------------------------------- Dim objSedex Dim objInfo Set objSedex = New Sedex Set objInfo = New SedexInfo Set objInfo = objSedex.doCalculoSedex("", "02401-200", "90110-170", 30, "N", "", "N") If objInfo.ErroCodigo = "0" Then Response.Write "Serviço: " & objInfo.ServicoNome & "
" Response.Write "UF Origem: " & objInfo.UFOrigem & "
" Response.Write "Local Origem: " & objInfo.LocalOrigem & "
" Response.Write "CEP Origem: " & objInfo.CEPOrigem & "
" Response.Write "UF Destino: " & objInfo.UFDestino & "
" Response.Write "Local Destino: " & objInfo.LocalDestino & "
" Response.Write "CEP Destino: " & objInfo.CEPDestino & "
" Response.Write "Peso: " & objInfo.Peso & "
" Response.Write "Mao Propria: " & objInfo.MaoPropria & "
" Response.Write "Valor Declarado: " & objInfo.ValorDeclarado & "
" Response.Write "Tarifa Valor Declarado: " & objInfo.TarifaValorDeclarado & "
" Response.Write "Preço Postal: " & objInfo.PrecoPostal & "
" Else Response.Write objInfo.ErroDescricao End If Set objInfo = Nothing Set objSedex = Nothing %>