Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcus Gemeos

Cálculo de fretes completo vindo dos correios?

Recommended Posts

Olá pessoal,

 

Eu gostaria de saber, como faço para ter um sistema que traga informações vinda do site dos correios para o cálculo de fretes?

É para instalar em uma loja virtual!

 

 

Obrigado a todos!

 

 

 

Marcus Vinicius

Compartilhar este post


Link para o post
Compartilhar em outros sites

alguns servidores, como o da locaweb, oferece componente para realizar este calculo. outra forma é fazendo uma requisição em xmlhttp

Compartilhar este post


Link para o post
Compartilhar em outros sites

O componente XMLHttpRequest faz parte do MSXML, que vem com Internet Explorer 5.0 e superiores. Isto o torna uma ferramenta ainda mais atraente. O núcleo é o objeto dentro XMLHttpRequest objeto XMLHTTP.O objeto XMLHttpRequest permite que as requisições HTTP sejam feitas via browser, permite a comunicação assííncrona com o servidor, através de script (JavaScript), sem que seja iniciada uma nova janela , não tendo a necessidade de atualização da página, sendo possível criar páginas mais interativas.

 

<%
On Error Resume Next

'================================================= ====== 

Rafael Fernandes D Orazio - CLASSE SEDEX

'================================================= ====== 

Class Sedex 



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.ServerXMLHTTP") 
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 VAL

'response.write URL & VAL & "<BR>"

'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 
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

não sei se ainda funciona essa função que criei:

 

<%

function calculoFreteCorreio(servico,cepOrigem,cepDestino,pesoEncomenda, valorDeclarado)
 maoPropria	 = "S"
 avisoRecebimento = "S"
 urlCorreios = "http://www.correios.com.br/encomendas/precos/calculo.cfm"
 select case servico
  case 41017
   '41017 - Encomenda Normal
   url = urlCorreios&"?servico=41017&cepDestino="& cepDestino &"&CepOrigem="& cepOrigem &"&peso="& pesoEncomenda & "&AvisoRecebimento="&avisoRecebimento&"&ValorDeclarado="& Replace(valorDeclarado, ".", "") &"&MaoPropria="& maoPropria	
   Set objXMLHTTP = CreateObject("Microsoft.XMLHTTP")
   objXMLHTTP.open "POST", url,false 
   objXMLHTTP.send
   lixoHtml = objXMLHTTP.responseText
   set objXMLHTTP = nothing   
   valor = limpaLixo(right(lixoHtml,len(lixoHtml)-instr(lixoHtml,"Tarifa")))  
   if valor = "0rr" then
	calculoFreteCorreio = false
   else
	calculoFreteCorreio = valor
   end if
  
  case 40010 
   '40010 = Sedex Convencional  
   url = urlCorreios&"?Servico=40010&CepDestino="& cepDestino &"&CepOrigem="& cepOrigem &"&Peso="& pesoEncomenda &"&ValorDeclarado="& Replace(valorDeclarado, ".", "") &"&MaoPropria="& maoPropria	
   Set objXMLHTTP = CreateObject("Microsoft.XMLHTTP")
   objXMLHTTP.open "POST", url,false   
   objXMLHTTP.send
   lixoHtml = objXMLHTTP.responseText
	 Response.Write(objXMLHTTP.responseText)
   set objXMLHTTP = nothing
   valor = limpaLixo(right(lixoHtml,len(lixoHtml)-instr(lixoHtml,"Tarifa")))
   if valor = "" then
	calculoFreteCorreio = false
   else
	calculoFreteCorreio = valor
   end if
 
  case 40215
   '40215 = Sedex 10
   url = urlCorreios&"?Servico=40215&CepDestino="& cepDestino &"&CepOrigem="& cepOrigem &"&Peso="& pesoEncomenda &"&AvisoRecebimento="&avisoRecebimento&"&ValorDeclarado="& Replace(valorDeclarado, ".", "") &"&MaoPropria="& maoPropria 
   Set objXMLHTTP = CreateObject("Microsoft.XMLHTTP")
   objXMLHTTP.open "GET", url,false  
   objXMLHTTP.send
   lixoHtml = objXMLHTTP.responseText
   set objXMLHTTP = nothing
   valor = limpaLixo(right(lixoHtml,len(lixoHtml)-instr(lixoHtml,"Tarifa"))) 
   if valor = "" then
	calculoFreteCorreio = false
   else
	calculoFreteCorreio = valor
   end if
   
  case 40045
   '40045 = Sedex à cobrar
   url = urlCorreios&"?Servico=40045&CepDestino="& cepDestino &"&CepOrigem="& cepOrigem &"&Peso="& pesoEncomenda &"&AvisoRecebimento="&avisoRecebimento&"&ValorDeclarado="& Replace(valorDeclarado, ".", "") &"&MaoPropria="& maoPropria	
   Set objXMLHTTP = CreateObject("Microsoft.XMLHTTP")
   objXMLHTTP.open "POST", url_correios,false   
   objXMLHTTP.send
   lixoHtml = objXMLHTTP.responseText
   set objXMLHTTP = nothing
   valor = limpaLixo(right(lixoHtml,len(lixoHtml)-instr(lixoHtml,"Tarifa")))
   if valor = "d"",""p" or enc = "0err" then
	calculoFreteCorreio = false
   else
	calculoFreteCorreio = valor
   end if
 end select   
end function
function limpaLixo(str)
 var = right(str,len(str)-instr(str,"Tarifa"))
 var = replace(replace(left(right(var,len(var)-6),5),"&",""),".",",")
 var = replace(var, "e", "")
 var = replace(var, "r", "")
 var = replace(var, "a", "")
 var = replace(var, "u", "")
 var = replace(var, "i", "") 
 limpaLixo = var 
end function 
response.Write(calculoFreteCorreio(41017,90850150,65075760,5, 548.00))
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.