Ola amigos, estou aqui sofrendo para entender a dinamica de uma loja virtual e agora tem 3 duvidas que preciso tirar antes de prosseuir meu trabalho e gostaria de poder contar a ajuda de voces.
1) Peguei um script de calculo de frete (com a URL dos correios) que me retorna valores bem proximos aos do correios.
Segue código:
<?php
/**
* Executa calculo do frete usando webservice dos correios.
* @copyright Phaneronsoft
* @author Marcelo Korjenioski - faleconosco@phaneronsoft.com
* @see http://www.phaneronsoft.com
* @filesource correios.php
* @version 1.1
*/
#####################################
# Código dos Serviços dos Correios #
# FRETE PAC = 41106 #
# FRETE SEDEX = 40010 #
# FRETE SEDEX 10 = 40215 #
# FRETE SEDEX HOJE = 40290 #
# FRETE E-SEDEX = 81019 #
# FRETE MALOTE = 44105 #
# FRETE NORMAL = 41017 #
# SEDEX A COBRAR = 40045 #
#####################################
// Definindo constantes
// Peso total do pacote em Quilos, caso seja menos de 1Kg, ex.: 300g, coloque 0.300
define('PESO',2.00);
define('EMBALAGEM',0.00);
// Valor adicional no envio como custo de embalagem.
define('COMPRIMENTO',20);
define('ALTURA',15);
define('LARGURA',20);
if($_POST) {
// Código do Serviço que deseja calcular, veja tabela acima:
if ($_POST['servico']) {
$cod_servico = $_POST['servico'];
}
// CEP de Origem, em geral o CEP da Loja
$cep_origem = '36855000';
// CEP de Destino, você pode passar esse CEP por GET ou POST vindo de um formulário
$cep_destino = $_POST['cep-destino'];
$cep_destino = eregi_replace("([^0-9])","",$cep_destino);
// URL de Consulta dos Correios
$correios = "http://shopping.correios.com.br/wbm/shopping/script/CalcPrecoPrazo.aspx?StrRetorno=xml&nCdServico={$cod_servico}&nVlPeso=" . PESO . "&sCepOrigem={$cep_origem}&sCepDestino={$cep_destino}&nCdFormato=1&nVlComprimento=" . COMPRIMENTO . "&nVlAltura=" . ALTURA . "&nVlLargura=" . LARGURA;
// Capta as informações da página dos Correios
$correios_info = file($correios);
// Processa as informações vindas do site dos correios em um Array
foreach($correios_info as $info) {
// Busca a informação do Preço da Postagem
if(preg_match("/\<Valor>(.*)\<\/Valor>/",$info,$tarifa)) {
$total = $tarifa[1] + EMBALAGEM;
}
if(preg_match("/\<PrazoEntrega>(.*)\<\/PrazoEntrega>/",$info,$PrazoEntrega)) {
$PrazoEntrega = $PrazoEntrega[1];
}
}
// Neste exemplo estou colocando apenas PAC e SEDEX
switch ($cod_servico) {
case 41106:
$nome_servico = " PAC ";
break;
case 40010:
$nome_servico = " SEDEX ";
break;
}
// Caso venha valor de resposta é numerio e maior que o custo da embalagem senão ocorreu algum erro na solicitação.
if(is_numeric($total) and ($total > $embalagem)) {
// Quando encontra o valor da postagem, exibe na página formatando em padrão de moeda 10,89
// Caso você não queira formatar basta comentar a linha abaixo que será exibido assim 10.89 e basta executar o comando abaixo
$total = number_format($total,2,',','.');
echo $nome_servico . $total . ' prazo entrega de ' . $PrazoEntrega . ' dia(s) ';
} else {
echo 'Erro ao consultar verifique se CEP esta correto';
}
} else {
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<link href="http://demo.phaneronsoft.com/img/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<title>Sistema para Calcular Frete SEDEX e PAC a partir de CEP informado. | Phaneronsoft</title>
<style type="text/css">
* {
font-family:"Trebuchet MS","Lucida Grande",Verdana,Tahoma,Helvetica,Arial,sans-serif;
font-size:12px;
font-style:normal;
font-variant:normal;
font-weight:normal;
line-height:normal;
}
body {
background:#FFFFFF none repeat scroll 0 0;
height:100%;
margin:0;
margin-top:20px;
width:100%;
}
div#wrapper {
margin:auto;
position:relative;
width:450px;
z-index:0;
}
.formMain .select {
text-transform:uppercase;
width:99%;
border:1px solid #B6B6B6;
display:block;
}
.formSearch fieldset {
border:1px solid #CCCCCC;
margin:0;
padding:0 10px;
}
.formMain label {
display:block;
float:left;
margin-right:4px;
padding-bottom:5px !important;
}
.formMain legend {
color:#1E398D;
font-family:"Legacy Sans ITC TT Bold","Trebuchet MS","Lucida Grande",Verdana,Tahoma,Helvetica,Arial,sans-serif;
font-size:1.5em;
padding:10px 5px;
}
.formMain .button {
background:#F5EED3;
border:1px solid #CCCCCC;
color:#666666;
cursor:pointer;
font-size:12px;
font-weight:bold;
letter-spacing:1px;
margin:10px 0 0;
overflow:visible;
text-transform:uppercase;
width:100%;
}
.formMain .inline {
margin:15px 0 0 !important;
}
.formMain .text, .formMain .select, .formMain .textarea, .formMain .password {
border:1px solid #B6B6B6;
display:block;
text-transform:uppercase;
}
.formMain fieldset span.nameField {
color:#666666;
text-transform:uppercase;
}
h3 {
border-bottom:1px solid #F58220;
margin:0;
padding:0;
}
h3 span {
-x-system-font:none;
color:#1E398D;
font-family:"Legacy Sans ITC TT Bold","Trebuchet MS","Lucida Grande",Verdana,Tahoma,Helvetica,Arial,sans-serif;
font-size:1.5em;
font-style:normal;
font-variant:normal;
font-weight:bold;
line-height:normal;
}
#value {
-x-system-font:none;
color:#9B0000;
font-family:"Legacy Sans ITC TT Bold","Trebuchet MS","Lucida Grande",Verdana,Tahoma,Helvetica,Arial,sans-serif;
font-size:1.5em;
font-style:normal;
font-variant:normal;
font-weight:bold;
line-height:normal;
}
</style>
</head>
<body>
<div id="wrapper">
<h3>
<span>Pesquisa valor de frete</span>
</h3>
<form id="form-pesquisa-repasse" action="" method="post" class="formMain formSearch wsizep100" onsubmit="submitForm(this); return false;">
<fieldset>
<legend>Filtrar Referência</legend>
<label for="servico" class="wsize015">
<span class="nameField">Envio</span>
<select id="servico" name="servico" title="Serviços dos Correios" class="select" tabindex="1">
<option value="41106">PAC</option>
<option value="40010">SEDEX</option>
</select>
</label>
<label class="wsize010" for="cep-destino">
<span class="nameField">CEP Destino</span>
<input id="cep-destino" class="text" type="text" value="" maxlength="9" title="CPF destino" name="cep-destino" tabindex="2"/>
</label>
<label for="pesquisar" class="wsize010">
<input type="submit" id="pesquisar" name="pesquisar" tabindex="3" class="button inline" value="Pesquisar" />
</label>
</fieldset>
</form>
<span>* Digitar somente número no CEP</span>
<br />
<span id="value"></span>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js" type="text/javascript"></script>
<script type="text/javascript">
function submitForm(form) {
/*
usa método request() da classe Form da prototype, que serializa os campos
do formulário e submete (por POST como default) para a action especificada no form
*/
form.request({
onComplete: function(transport){
/*
se o retorno for diferente de -1, entende-se que não houve problemas, então apaga-se
os campos do formulário usando o método reset() da classe Form
*/
if(transport.responseText !=-1) {
$('value').innerHTML = transport.responseText;
} else {
form.reset();
$('value').innerHTML = 'Erro ao consultar';
}
}
});
return false;
}
</script>
</body>
</html>
<?php
} // fim else
?>
2)No caso do site dos correios falhar, o que é certo fazer? Verificar o erro com um IF e se houver erro, tentar um outro webservice?
Pergunto isso pois não posso impedir que o internauta deixe de efetuar a compra por causa dos correios não retornarem o valor do frete né?
Nesse casom o que fazer?
3) No calculo do PAC, é necessario enviar as dimensões da embalagem que vai levar a encomenda até a casa do comprador bem como o peso.
Não é pedido o volume do pacote e sim as dimensões.
A) Essas dimensões precisam de ser enviadas mesmo que a embalagem não seja comprada la nos correios?
B) Quanto às medidas,. deixa eu ver se entendi:
No form de cadastro de produtos acrescenta mais 3 campos, (comprimento,altura e largura) para o cliente digitar (ambiente administratio - cadastro de produto da loja virtual) as medidas de cada produto.
Depois, criar um contador de medidas (do jeito que fiz com o peso) para calcular as dimensões provaveis para a embalagem!
É isso?
Se for, será que encontro um codigo desses ai pronto?
Então, me ajuda fazer essa conta:
O site que eu administro, vende produtos pequenos de perfumaria e cuidados com a pele (sabonete, shampoo, antimofo)
No caso de um sabonete (medidas de cada sabonete)
5cm de comprimento
2cm de largura
1cm de altura
No caso de um shampoo (medidas de cada shampoo)
20cm de comprimento
4cm de largura
2cm de altura
Dai um cliente no site faz uma compra assim:
20 sabonetes e 10 shampoos.
A conta para desobrir as dimensões da embalagem de envio seria como?
Como fazer esse calculo?
Voces me explicando isso ai o resto da pra eu me virar!
Pergunta
Carlos Rocha
Ola amigos, estou aqui sofrendo para entender a dinamica de uma loja virtual e agora tem 3 duvidas que preciso tirar antes de prosseuir meu trabalho e gostaria de poder contar a ajuda de voces.
1) Peguei um script de calculo de frete (com a URL dos correios) que me retorna valores bem proximos aos do correios.
Segue código:
2)No caso do site dos correios falhar, o que é certo fazer? Verificar o erro com um IF e se houver erro, tentar um outro webservice?
Pergunto isso pois não posso impedir que o internauta deixe de efetuar a compra por causa dos correios não retornarem o valor do frete né?
Nesse casom o que fazer?
3) No calculo do PAC, é necessario enviar as dimensões da embalagem que vai levar a encomenda até a casa do comprador bem como o peso.
Não é pedido o volume do pacote e sim as dimensões.
A) Essas dimensões precisam de ser enviadas mesmo que a embalagem não seja comprada la nos correios?
B) Quanto às medidas,. deixa eu ver se entendi:
No form de cadastro de produtos acrescenta mais 3 campos, (comprimento,altura e largura) para o cliente digitar (ambiente administratio - cadastro de produto da loja virtual) as medidas de cada produto.
Depois, criar um contador de medidas (do jeito que fiz com o peso) para calcular as dimensões provaveis para a embalagem!
É isso?
Se for, será que encontro um codigo desses ai pronto?
Então, me ajuda fazer essa conta:
O site que eu administro, vende produtos pequenos de perfumaria e cuidados com a pele (sabonete, shampoo, antimofo)
No caso de um sabonete (medidas de cada sabonete)
5cm de comprimento
2cm de largura
1cm de altura
No caso de um shampoo (medidas de cada shampoo)
20cm de comprimento
4cm de largura
2cm de altura
Dai um cliente no site faz uma compra assim:
20 sabonetes e 10 shampoos.
A conta para desobrir as dimensões da embalagem de envio seria como?
Como fazer esse calculo?
Voces me explicando isso ai o resto da pra eu me virar!
Editado por Carlos RochaLink para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.