Ir para conteúdo

Arquivado

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

Fábio BN

Problema que o Correio não resolve

Recommended Posts

Pessoal, eu trabalho com o calculo remoto dos Correios faz muito anos, eles tem um problema grave de segurança e nunca resolveram a questão.

 

Aqui está o manual deles:

http://www.correios.com.br/para-sua-empresa/servicos-para-o-seu-contrato/precos-e-prazos/calculador-remoto-de-precos-e-prazos/pdf/EFI_Manual_Implementacao_Calculo_Remoto_de_Precos_e_prazos.pdf

 

Um dos problemas, é que quando uma empresa tem contrato, para fazer calculo é necessário passar os dados de usuários e senha pela URL, além do perigo de um usuário ver o fonte e anotar os dados, quando o site do correio fica fora do ar, toda a linha de consulta fica exposta na URL do navegador do cliente, dando para a pessoa ver facilmente usuário e senha da consulta.

Além disso, quando o site deles sai fora do ar, a consulta não obtém retorno, então aparece aquela velha tela de servidor não reponde, sem tratamento algum. Ou aparecem erros do tipo:

Erro no processamento de XML: estado não esperado do processador Posição: jar:file:///C:/Program%20Files%20(x86)/Mozilla%20Firefox/omni.ja!/chrome/toolkit/content/global/netError.xhtml Número da linha 304, coluna 68: <div id="ed_connectionFailure">&connectionFailure.longDesc;</div> -------------------------------------------------------------------^

Erro no processamento de XML: estado não esperado do processador Posição: jar:file:///C:/Program%20Files%20(x86)/Mozilla%20Firefox/omni.ja!/chrome/toolkit/content/global/netError.xhtml Número da linha 304, coluna 68: <div id="ed_connectionFailure">&connectionFailure.longDesc;</div> -------------------------------------------------------------------^

Se o site da loja não tiver um suporte Off-Line de frete, perde várias vendas por este motivo. E mesmo com suporte Off-Line, não consigo identificar uma maneira de fazer automático algo que quando o servidor do correio der erro direcione para uma base off-line automaticamente antes de dar o erro na tela do cliente, não sei se isso é possível.

 

Tá tentei alertar o Correio dessa falha da senha algumas vezes, eles responderam que iam passar para analisar no setor responsável e nunca me deram retorno, isso faz anos. É complicado quando não podemos falar diretamente com o programador que fez um sistema para relatar uma falha, esses atendentes de Call Center geralmente não fazem muita coisa para esses ajudar a corrigir esses problemas.

Fica minha indignação.

 

Abraços - Fábio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora vamos tentar uma solução para esses problemas:
1 - Quem possuir contrato com os Correios, ao invés de informar “usuário” e “senha “pela URL, poderia ter o campo substituído pelo número do contrato.
2 – Quando o servidor do correio cair, poderia retornar um erro tratável para a loja virtual, seja via URL ou XML, de forma que o mesmo possa ser tratado, assim dando uma opção ao cliente para continuar a compra, o direcionando para uma base própria da loja.
3 – Fornecer de uma forma simples as faixas de CEPs e tarifas para que toda Loja Virtual possa manter uma base própria, de forma que quando o servidor dos Correios caia, o cliente tenha alguma chance de continuar o calculo Off-Line na base de dados da loja.

- São simples alterações que podem ser feitas sem desestruturar o sistema atual, dando maior segurança e perfeição ao serviço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, tudo bem?

 

Eu fui testar uma busca de tarifas por XML que o correio oferece, e está dando erro numa linha.
Segue o código:

 

frete.asp

<html>
<body>
<form name="frm" action="frete2.asp" method="post" ID="Form1">
<fieldset style="background: EEEEEE;">
<legend>Calculo de Frete</legend>
<div>
<span style="width:130px;">Codigo:</span>
<span><input type="text" name="codigo" value=""></span>
</div>
<div>
<span style="width:130px;">Senha:</span>
<span><input type="password" name="senha" value=""></span>
</div>
<div>
<span style="width:130px;">Serviços:</span>
<span><input type="text" name="servicos" value=""></span>
</div>
<div>
<span style="width:130px;">Cep Origem:</span>
<span><input type="text" name="cepori" value=""></span>
</div>
<div>
<span style="width:130px;">Cep Destino:</span>
<span><input type="text" name="cepdes" value=""></span>
</div>
<div>
<span style="width:130px;">Peso:</span>
<span><input type="text" name="peso" value=""></span>
</div>
<div>
<span style="width:130px;">Formato:</span>
<span><select name="formato" size="1">
<option value="1">Caixa/pacote</option>
<option value="2">Rolo/prisma</option>
</select>
</span>
</div>
<div>
<span style="width:130px;">Comprimento:</span>
<span><input type="text" name="comprimento" value=""></span>
</div>
<div>
<span style="width:130px;">Altura:</span>
<span><input type="text" name="altura" value=""></span>
</div>
<div>
<span style="width:130px;">Largura:</span>
<span><input type="text" name="largura" value=""></span>
</div>
<div>
<span style="width:130px;">Diâmetro:</span>
<span><input type="text" name="diametro" value=""></span>
</div>
<div>
<span style="width:130px;">Mão própria:</span>
<span><select name="maopropria" size="1">
<option value="S">Sim</option>
<option value="N">Não</option>
17/18
Manual de Implementacao do Calculo Remoto de Precos e Prazos_versao_1.9.doc
</select>
</span>
</div>
<div>
<span style="width:130px;">Valor declarado:</span>
<span><input type="text" name="valordeclarado" value=""></span>
</div>
<div>
<span style="width:130px;">Aviso de Recebimento:</span>
<span><select name="avisorecebimento" size="1">
<option value="S">Sim</option>
<option value="N">Não</option>
</select>
</span>
</div>
<div>
<span><input type="SUBMIT" name="BTN" value="Consultar" ID="Submit1"></span>
</div>
</fieldset>
</form>
</body>
</html>

frete2.asp

<%@LANGUAGE=VBScript%>
<%
option explicit
'On Error Resume Next
dim oXmlHttp, oXmlDom
dim sReturn, sPacoteSoap
dim nCodigoRet, sDescricaoRet
set oXmlHttp = server.CreateObject("Microsoft.XMLHTTP")
const sSoapServer = "http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx"
'Tratamento de campos obrigatórios
dim peso, comprimento, altura, largura, diametro, valordeclarado
if request.form("peso") = "" then
peso = "0"
else
peso = request.form("peso")
end if
if request.form("comprimento") = "" then
comprimento = "0"
else
comprimento = request.form("comprimento")
end if
if request.form("altura") = "" then
altura = "0"
else
altura = request.form("altura")
end if
if request.form("largura") = "" then
largura = "0"
else
largura = request.form("largura")
end if
if request.form("diametro") = "" then
diametro = "0"
else
diametro = request.form("diametro")
end if
if request.form("valordeclarado") = "" then
valordeclarado = "0"
else
valordeclarado = request.form("valordeclarado")
end if

sPacoteSoap = GerarPacoteSoap(request.form("codigo"),request.form("senha"),request.form("servicos"),request.form("cepori"),request.form("cepdes"),peso,request.form("formato"),comprimento, altura, largura, diametro, request.form("maopropria"), valordeclarado, request.form("avisorecebimento"))
oXmlHttp.open "POST", sSoapServer, false
oXmlHttp.setRequestHeader "SOAPAction", "http://tempuri.org/CalcPrecoPrazo"
oXmlHttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
oXmlHttp.send(sPacoteSoap)
sReturn = oXmlHttp.responseText
'parse xml
Set oXmlDom = Server.CreateObject("Microsoft.XMLDOM")
oXmlDom.loadXML sReturn
set oXmlDom = oXmlDom.selectSingleNode("soap:Envelope/soap:Body/CalcPrecoPrazoResponse/CalcPrecoPrazoResult")
'Se o retorno foi OK então listar os fretes disponíveis
dim oNodes, oNode
'Seleciona os fretes no XML
Set oNodes = oXmlDom.selectNodes("Servicos/cServico")
'Mostra todos os fretes disponíveis
for each oNode in oNodes
Response.Write "<div><span style=width:150px;>Código:</span><span>" & oNode.selectSingleNode("Codigo").Text & "</span><br>"
Response.Write "<span style=width:150px;>Valor:</span><span>" & oNode.selectSingleNode("Valor").Text & "</span><br>"
Response.Write "<span style=width:150px;>Prazo: </span><span>" & oNode.selectSingleNode("PrazoEntrega").Text & "</span></div>"
Response.Write "<span style=width:150px;>Valor Mão Própria: </span><span>" & oNode.selectSingleNode("ValorMaoPropria").Text & "</span></div>"
Response.Write "<span style=width:150px;>Valor Aviso de Recebimento: </span><span>" & oNode.selectSingleNode("ValorAvisoRecebimento").Text & "</span></div>"
Response.Write "<span style=width:150px;>Valor Valor Declarado: </span><span>" & oNode.selectSingleNode("ValorValorDeclarado").Text & "</span></div>"
Response.Write "<span style=width:150px;>Entrega Domiciliar: </span><span>" & oNode.selectSingleNode("EntregaDomiciliar").Text & "</span></div>"
Response.Write "<span style=width:150px;>Entrega Sábado: </span><span>" & oNode.selectSingleNode("EntregaSabado").Text & "</span></div>"
next
Set oXmlDom = Nothing
function GerarPacoteSoap(nCdEmpresa, sDsSenha, nCdServico, sCepOrigem, sCepDestino, nVlPeso, nCdFormato, nVlComprimento, nVlAltura, nVlLargura, nVlDiametro, sCdMaoPropria, nVlValorDeclarado, sCdAvisoRecebimento)
dim sSoap
sSoap = "<?xml version=""1.0"" encoding=""utf-8""?>"
sSoap = sSoap & "<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">"
sSoap = sSoap & "<soap:Body>"
sSoap = sSoap & "<CalcPrecoPrazo xmlns=""http://tempuri.org/"">"
sSoap = sSoap & "<nCdEmpresa>" & nCdEmpresa & "</nCdEmpresa>"
sSoap = sSoap & "<sDsSenha>" & sDsSenha & "</sDsSenha>"
sSoap = sSoap & "<nCdServico>" & nCdServico & "</nCdServico>"
sSoap = sSoap & "<sCepOrigem>" & sCepOrigem & "</sCepOrigem>"
sSoap = sSoap & "<sCepDestino>" & sCepDestino & "</sCepDestino>"
sSoap = sSoap & "<nVlPeso>" & nVlPeso & "</nVlPeso>"
sSoap = sSoap & "<nCdFormato>" & nCdFormato & "</nCdFormato>"
sSoap = sSoap & "<nVlComprimento>" & nVlComprimento & "</nVlComprimento>"
sSoap = sSoap & "<nVlAltura>" & nVlAltura & "</nVlAltura>"
sSoap = sSoap & "<nVlLargura>" & nVlLargura & "</nVlLargura>"
sSoap = sSoap & "<nVlDiametro>" & nVlDiametro & "</nVlDiametro>"
sSoap = sSoap & "<sCdMaoPropria>" & sCdMaoPropria & "</sCdMaoPropria>"
sSoap = sSoap & "<nVlValorDeclarado>" & nVlValorDeclarado & "</nVlValorDeclarado>"
sSoap = sSoap & "<sCdAvisoRecebimento>" & sCdAvisoRecebimento & "</sCdAvisoRecebimento>"
sSoap = sSoap & "</CalcPrecoPrazo>"
sSoap = sSoap & "</soap:Body>"
sSoap = sSoap & "</soap:Envelope>"
GerarPacoteSoap = sSoap
end function
%>
<input type="button" name="btn" value="Voltar" onclick="history.go(-1);" ID="Button1">

O erro dá assim:

Erro de tempo de execução do Microsoft VBScript erro '800a01a8'

Objeto necessário

/correio/frete2.asp, line 56

 

A linha 56 é essa:
Set oNodes = oXmlDom.selectNodes("Servicos/cServico")

 

Alguém saberia me informar, por que está dando erro na linha 56?

 

Obrigado - Fábio!

Compartilhar este post


Link para o post
Compartilhar em outros sites

o endereço do SOAP esta correto, e também isso pode ser uma instabilidade do webservice

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando eu faço os testes, retorna assim:

Código:81019
Valor:0,00
Prazo: 0

Valor Mão Própria: 0,00Valor Aviso de Recebimento: 0,00Valor Valor Declarado: 0,00Entrega Domiciliar: Entrega Sábado:

Código:40096
Valor:0,00
Prazo: 0

Valor Mão Própria: 0,00Valor Aviso de Recebimento: 0,00Valor Valor Declarado: 0,00Entrega Domiciliar: Entrega Sábado:

Código:40215
Valor:0,00
Prazo: 0

Valor Mão Própria: 0,00Valor Aviso de Recebimento: 0,00Valor Valor Declarado: 0,00Entrega Domiciliar: Entrega Sábado:

Código:41068
Valor:0,00
Prazo: 0

Valor Mão Própria: 0,00Valor Aviso de Recebimento: 0,00Valor Valor Declarado: 0,00Entrega Domiciliar: Entrega Sábado:

Não trás nenhum valor, não sei onde que tá errado.

Abrçaos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

para qualquer produto ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim.

 

Usando o método que envia os dados VIA URL ( Consulta com retorno na página do requisitante ) funciona bem.

 

Mas usando o método ia XML dá não trás nenhum valor.

 

Abraços!

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.