Ir para conteúdo

POWERED BY:

Arquivado

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

mestre fyoda

Script calculo de frete

Recommended Posts

ASP
<%

 

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

 

'4KRASNOCEGO - 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

 

 

 

'-----------------------------------------------------

 

'CHAMADA

 

'-----------------------------------------------------

 

Dim objSedex

 

Dim objInfo

 

Set objSedex = New Sedex

 

Set objInfo = New SedexInfo

 

Set objInfo = objSedex.doCalculoSedex("", "88140-000", "23013-550", 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

 

%>

 

 

 

Tipo de erro:

Erro de tempo de execução do Microsoft VBScript (0x800A01A8)

Objeto necessário: 'objXmlDoc.selectSingleNode(...)'

O erro está nesta linha :

 

doCalculoSedex.Versao = objXmlDoc.selectSingleNode("//calculo_precos//versao_arquivo").text

Compartilhar este post


Link para o post
Compartilhar em outros sites

vi seu código e realmente ele precisa de um cep válido então fiz isso aki simples

o início do código coloque isso aki!

 

On Error Resume Next

 

ASP
<%

 

On Error Resume Next

 

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

 

 

 

'4KRASNOCEGO - 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

 

 

 

e antes de destruir os records coloque isso aki tbm:

 

If Err.Number <> 0 Then

Response.Write("Ocorreu um erro")

End If

 

ASP
End If

 

 

 

If Err.Number <> 0 Then

 

Response.Write("Ocorreu um erro")

 

End If

 

 

 

'Destruindo os objetos

 

Set objXmlDoc = Nothing

 

 

 

Set objXmlHttp = Nothing

 

End Function

 

End Class

 

faça novos testes!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

On Error Resume Next é só para não "ficar" mostrando a linha do erro para o usuário que fica feio (hehehe) é uma forma de suas páginas ñ ficarem "bugadas"...

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.