Ir para conteúdo

POWERED BY:

Arquivado

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

The Jhunior

webservice - Frete

Recommended Posts

Utilizo o webservice da king host, mas nos últimos dias ele tem rejeitado alguns cep's.

 

Alguém tem algum script mais atual?

 

Vi alguns em php utilizando o http://www.correios.com.br/webservices/

 

Mas em asp não encontrei

 

Código atual

 

webservice_url   = " http://webservice.uni5.net/web_frete.php"
webservice_query = "3e35e013731d9ce97131aba81d71a810" 'Chave de autenticação do WebService - Consultar seu painel de controle

set xml = Server.CreateObject ("Microsoft.XMLHTTP")
xml.open "GET", webservice_url&"?"&_
"auth="&webservice_query&"&"&_
"tipo=" & tipofrete & "&"&_
"formato=query_string&"&_
"cep_origem="& cep_origem &"&"&_
"cep_destino="& cep_destino &"&"&_
"peso="&PesoFinal, false

xml.send()

Resultado = Xml.responseText
Resultado = split( Resultado, "&")

' Montando parametros
for e = 1 To ubound( Resultado)
temporario = split( Resultado(e), "=")

Parsed(e,0) = temporario(0)
Parsed(e,1) = replace( temporario(1), "+", " ")

next

getValorSedex = Parsed(3,1)

end function

cep_origem  = "02084-040"
cep_destino  = CEP

'response.write cep

resultado =(getValorSedex( cep_origem, cep_destino, PesoFinal ))

	If resultado > 5 then
	resultado = replace(resultado,".",",")
	ValorFrete = replace(resultado,".",",")

	'response.write "R$ "&FormatarEmNumber&""
	else

	Response.write "CEP inválido - <a href=Finaliza.asp class=TextArial18VermelhoBold>Voltar</a>"

	Travarsite = "sim"

	end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá uma pesquisada no fórum que tem alguns tópicos sobre o assunto. Olha este post:http://forum.imasters.com.br/topic/505154-calculo-frete-site-correios/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, fiz um teste mas não deu

 

Veja http://atelieagulhamagica.com.br/frete.asp

 

Ele para no site dos correios

http://www.correios.com.br/webservices/default.cfm?CFID=3647718&CFTOKEN=27121285&jsessionid=e03043579135498d8e8f7f5b605a62e4172f

 

O script em php que tenho utiliza essa url para consulta http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx

 

Será que mudou o endereço de consulta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

provavelmente. entre em contato com os correios ele fornece.

 

e olha este link

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifiquei esse e também está com o mesmo problema

 

O que tenho ele envia via GET e trás via XML

 

É possível fazer em ASP? to procurando nos fóruns se achar posto aqui

 

<?php
$data['nCdEmpresa'] = '';
$data['sDsSenha'] = '';
$data['sCepOrigem'] = '43820080';
$data['sCepDestino'] = '18110545';
$data['nVlPeso'] = '1';
$data['nCdFormato'] = '1';
$data['nVlComprimento'] = '16';
$data['nVlAltura'] = '5';
$data['nVlLargura'] = '15';
$data['nVlDiametro'] = '0';
$data['sCdMaoPropria'] = 's';
$data['nVlValorDeclarado'] = '200';
$data['sCdAvisoRecebimento'] = 'n';
$data['StrRetorno'] = 'xml';
//$data['nCdServico'] = '40010';
$data['nCdServico'] = '40010,40045,40215,40290,41106';
$data = http_build_query($data);
 
$url = 'http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx';
$curl = curl_init($url . '?' . $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
$result = simplexml_load_string($result);
 
foreach($result -> cServico as $row) {
    //Os dados de cada serviço estará aqui
 
    if($row -> Erro == 0) {
        echo $row -> Codigo . '<br>';
        echo $row -> Valor . '<br>';
        echo $row -> PrazoEntrega . '<br>';
        echo $row -> ValorMaoPropria . '<br>';
        echo $row -> ValorAvisoRecebimento . '<br>';
        echo $row -> ValorValorDeclarado . '<br>';
        echo $row -> EntregaDomiciliar . '<br>';
        echo $row -> EntregaSabado;
    } else {
        echo $row -> MsgErro;
    }
    echo '<hr>';
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha esse em ASP.Net, testei agora e esta beleza.

Nesse link tem o manual com maiores detalhes acerca do uso. Vamos a implementação!


Crie/Abra um Web Site e clique com o direito sobre o projeto para abrir o menu. Escolha a opção Add Web Reference... .

Informe a URL http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx e clique em Go. Aguarde a realização da busca pelo Web-Service, renomeie o serviço (caso deseje) e escolha Add Reference.


Veja que em seu projeto irá surgir uma pasta nova denominada App_WebReferences e seu web.config terá uma nova entrada. Agora, preparemos o seguinte método

 

private string ConsultaWebService()
    {
        // Dados da empresa, se tiver contrato com os Correios
        string nCdEmpresa = string.Empty;
        string sDsSenha = string.Empty;
        // Código do tipo de frete - por padrão deixei o SEDEX
        string nCdServico = "40010";
        // Cep de origem e destino - apenas números
        string sCepOrigem = "40280000";
        string sCepDestino = "40280000";
        // Peso total da encomenda - por padrão deixei 1kg
        string nVlPeso = "1";
        // Formato da encomenda - por padrão deixei caixa
        int nCdFormato = 1;
        // Para encomenda do tipo PAC, deve-se preencher a dimensão da embalagem
        decimal nVlComprimento = 0;
        decimal nVlAltura = 0;
        decimal nVlLargura = 0;
        decimal nVlDiametro = 0;
        // Informa se é por mão própria - por padrão deixei Não
        string sCdMaoPropria = "N";
        // Valor declarado - por padrão não informo
        decimal nVlValorDeclarado = 0;
        // Se desejo recebr aviso de recebimento - por padrão não quero
        string sCdAvisoRecebimento = "N";


        // Instancio o web-service
        Correios.CalcPrecoPrazoWS webServiceCorreios = new Correios.CalcPrecoPrazoWS();


        // Efetuo a requisição
        Correios.cResultado retornoCorreios = webServiceCorreios.CalcPrecoPrazo(nCdEmpresa, sDsSenha, nCdServico, sCepOrigem, sCepDestino, nVlPeso, nCdFormato, nVlComprimento, nVlAltura, nVlLargura, nVlDiametro, sCdMaoPropria, nVlValorDeclarado, sCdAvisoRecebimento);


        // Verifico se há retorno
        if (retornoCorreios.Servicos.Length > 0)
        {
            // Se deu tudo certo, então retorna o valor
            if (retornoCorreios.Servicos[0].Erro == "0")
                return "R$ " + retornoCorreios.Servicos[0].Valor;
            else
                return retornoCorreios.Servicos[0].MsgErro;
        }
        else
            return "NÃO FOI POSSÍVEL CONSULTAR O SERVIÇO DESEJADO!";


    }

 




No caso, o array de serviços veio apenas um pois informando na variável nCdServico que era para consultar apenas SEDEX. Pode ser mais de um numa consulta separados por vírgula, exemplo "40010,81019".

A tabela de serviços disponíveis são:

Código Serviço
41106 PAC sem contrato
40010 SEDEX sem contrato
40045 SEDEX a Cobrar, sem contrato
40215 SEDEX 10, sem contrato
40290 SEDEX Hoje, sem contrato
40096 SEDEX com contrato
40436 SEDEX com contrato
40444 SEDEX com contrato
81019 e-SEDEX, com contrato
41068 PAC com contrato


Essas e outras informações você encontra no manual dos Correios. Isso possibilita e facilita bastante ao programador na consulta e obtenção dessa informação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perdi meu sábado mas deu tudo certo

 

Cansei de pesquisar script pronto e tentei fazer eu mesmo, finalmente consegui fazer em ASP Clássico.

 

Segue código

 

<%  
'Script by TheJhunior Mastersdaweb - http://www.webdesign.emp.br

CepOrigem = "08070080"
CepDestino = "03894110" 
TipoFrete =  "40010" 'Código de cada tipo de frete 41106  PAC sem contrato, 40010  SEDEX sem contrato
Peso = "1" 'Peso em Kg
Comprimento = "16"
Altura = "5"
Largura = "15"
Diamentro = "0"
MaoPropria = "s" 's para sim n para não
ValorDeclarado = "200"
AvisoRecebimento = "n" 's para sim n para não


Dim url

url = "http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx/CalcPrecoPrazo?nCdEmpresa=&sDsSenha=&nCdServico="&TipoFrete&"&sCepOrigem="&CepOrigem&"&sCepDestino="&CepDestino&"&nVlPeso="&Peso&"&nCdFormato=1&nVlComprimento="&Comprimento&"&nVlAltura="&Altura&"&nVlLargura="&Largura&"&nVlDiametro="&Diamentro&"&sCdMaoPropria="&MaoPropria&"&nVlValorDeclarado="&ValorDeclarado&"&sCdAvisoRecebimento="&AvisoRecebimento&""


'Abrindo XML
Dim XML
Set XML = Server.CreateObject("MSXML2.XMLHTTP")
    XML.open "GET", url, false
    XML.setRequestHeader "Content-Type", "text/XML"
    XML.Send 
	
'Tratando XML
set xmlRss = Server.CreateObject("Microsoft.XMLDOM")
	xmlRss.async = false 
	xmlRss.loadXml(XML.ResponseText)
set xmlValor = xmlRss.getElementsByTagName("Valor")
set xmlPrazo = xmlRss.getElementsByTagName("PrazoEntrega")

Dim Valor, Prazo

for i = 0 to xmlValor.length-1
	Valor =  xmlValor.item(i).childNodes.item(0).text
next
for i = 0 to xmlPrazo.length-1
	Prazo = xmlPrazo.item(i).childNodes.item(0).text
next
set xmlRss = nothing

Response.write "Valor: "&Valor&" <br><br> Prazo: "&Prazo&" dia(s)"
%>

URL de teste http://webdesign.emp.br/frete.asp

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parabéns... ficou bem funcional...

Compartilhar este post


Link para o post
Compartilhar em outros sites
<%@LANGUAGE=VBScript%>

<%

option explicit

'On Error Resume Next

dim oXmlHttp, oXmlDom

dim sReturn, sPacoteSoap

dim nCodigoRet, sDescricaoRet

set oXmlHttp = server.CreateObject("Microsoft.XMLHTTP")



'Tratamento de campos obrigatórios

dim codigo, senha, peso, comprimento, altura, largura, diametro, valordeclarado, servicos, cepori, cepdes, formato, maopropria, avisorecebimento


peso = 1 * request.QueryString("prs")

comprimento = "20"

altura = "12"

largura = "19"

diametro = "0"

valordeclarado = request.QueryString("vdl")

codigo = ""

senha = ""

cepori = "17200000"

cepdes = request.QueryString("cpd")

servicos = "40010,41106" ''Sedex, PAC ''request.form("servicos")

formato = "1"

maopropria = "N"

avisorecebimento = "M"


sPacoteSoap = GerarPacoteSoap(codigo,senha,servicos,cepori,cepdes,peso,formato,comprimento, altura, largura, diametro, maopropria, valordeclarado, 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><br>"

' Response.Write "<span style=width:150px;>Valor Aviso de Recebimento: </span><span>" & oNode.selectSingleNode("ValorAvisoRecebimento").Text & "</span></div><br>"

' Response.Write "<span style=width:150px;>Valor Declarado: </span><span>" & oNode.selectSingleNode("ValorValorDeclarado").Text & "</span></div><br>"

' Response.Write "<span style=width:150px;>Entrega Domiciliar: </span><span>" & oNode.selectSingleNode("EntregaDomiciliar").Text & "</span></div><br>"

' Response.Write "<span style=width:150px;>Entrega Sábado: </span><span>" & oNode.selectSingleNode("EntregaSabado").Text & "</span></div><br><br>"


if oNode.selectSingleNode("Codigo").Text = "40010" then '' SEDEX

session("correios_sedex_codigo") = oNode.selectSingleNode("Codigo").Text

session("correios_sedex_valor") = oNode.selectSingleNode("Valor").Text

session("correios_sedex_prazo") = oNode.selectSingleNode("PrazoEntrega").Text

end if


if oNode.selectSingleNode("Codigo").Text = "41106" then '' PAC

session("correios_pac_codigo") = oNode.selectSingleNode("Codigo").Text

session("correios_pac_valor") = oNode.selectSingleNode("Valor").Text

session("correios_pac_prazo") = oNode.selectSingleNode("PrazoEntrega").Text

end if




next



response.Redirect("ass_assinar2.asp?idass=" & request.QueryString("idass"))



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/XMLSchemainstance"" 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



%>


<%@LANGUAGE=VBScript%>

<%

option explicit

'On Error Resume Next

dim oXmlHttp, oXmlDom

dim sReturn, sPacoteSoap

dim nCodigoRet, sDescricaoRet

set oXmlHttp = server.CreateObject("Microsoft.XMLHTTP")



'Tratamento de campos obrigatórios

dim codigo, senha, peso, comprimento, altura, largura, diametro, valordeclarado, servicos, cepori, cepdes, formato, maopropria, avisorecebimento


peso = 1 * request.QueryString("prs")

comprimento = "20"

altura = "12"

largura = "19"

diametro = "0"

valordeclarado = request.QueryString("vdl")

codigo = ""

senha = ""

cepori = "17209500"

cepdes = request.QueryString("cpd")

servicos = "40010,41106" ''Sedex, PAC ''request.form("servicos")

formato = "1"

maopropria = "N"

avisorecebimento = "M"


sPacoteSoap = GerarPacoteSoap(codigo,senha,servicos,cepori,cepdes,peso,formato,comprimento, altura, largura, diametro, maopropria, valordeclarado, 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><br>"

' Response.Write "<span style=width:150px;>Valor Aviso de Recebimento: </span><span>" & oNode.selectSingleNode("ValorAvisoRecebimento").Text & "</span></div><br>"

' Response.Write "<span style=width:150px;>Valor Declarado: </span><span>" & oNode.selectSingleNode("ValorValorDeclarado").Text & "</span></div><br>"

' Response.Write "<span style=width:150px;>Entrega Domiciliar: </span><span>" & oNode.selectSingleNode("EntregaDomiciliar").Text & "</span></div><br>"

' Response.Write "<span style=width:150px;>Entrega Sábado: </span><span>" & oNode.selectSingleNode("EntregaSabado").Text & "</span></div><br><br>"


if oNode.selectSingleNode("Codigo").Text = "40010" then '' SEDEX

session("correios_sedex_codigo") = oNode.selectSingleNode("Codigo").Text

session("correios_sedex_valor") = oNode.selectSingleNode("Valor").Text

session("correios_sedex_prazo") = oNode.selectSingleNode("PrazoEntrega").Text

end if


if oNode.selectSingleNode("Codigo").Text = "41106" then '' PAC

session("correios_pac_codigo") = oNode.selectSingleNode("Codigo").Text

session("correios_pac_valor") = oNode.selectSingleNode("Valor").Text

session("correios_pac_prazo") = oNode.selectSingleNode("PrazoEntrega").Text

end if




next



response.Redirect("ass_assinar2.asp?idass=" & request.QueryString("idass"))



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/XMLSchemainstance"" 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



%>


Compartilhar este post


Link para o post
Compartilhar em outros sites

este é o code final

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.