ASP / Diversos
Calcular SEDEX em tempo real pelos Correios
enviado por Gabriel Fróes
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 = "http://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: <b>" & objInfo.ServicoNome & "</b><br />"
Response.Write "UF Origem: <b>" & objInfo.UFOrigem & "</b><br />"
Response.Write "Local Origem: <b>" & objInfo.LocalOrigem & "</b><br />"
Response.Write "CEP Origem: <b>" & objInfo.CEPOrigem & "</b><hr />"
Response.Write "UF Destino: <b>" & objInfo.UFDestino & "</b><br />"
Response.Write "Local Destino: <b>" & objInfo.LocalDestino & "</b><br />"
Response.Write "CEP Destino: <b>" & objInfo.CEPDestino & "</b><hr />"
Response.Write "Peso: <b>" & objInfo.Peso & "</b><br />"
Response.Write "Mao Propria: <b>" & objInfo.MaoPropria & "</b><br />"
Response.Write "Valor Declarado: <b>" & objInfo.ValorDeclarado & "</b><br />"
Response.Write "Tarifa Valor Declarado: <b>" & objInfo.TarifaValorDeclarado & "</b><br />"
Response.Write "Preço Postal: <b>" & objInfo.PrecoPostal & "</b><br />"
Else
Response.Write objInfo.ErroDescricao
End If
Set objInfo = Nothing
Set objSedex = Nothing
%>
Versão impressa gerada em:
quarta-feira, 25 de novembro de 2009
© Copyright 2006 - R&W Consulting.