Ok
Deu certo paulo.
Agora como usaria a tua classe do frete para a hipotese do cliente poder escoher via form, se vai esolher sedex ou pac ou sedex10..?
Como fa nesse sentido?
segue tua classe:
<?php
/*
* @author Paulo Freitas <paulofreitas dot web at gmail dot com>
* @copyright Copyright (C) 2009-2010 Paulo Freitas
* @license http://creativecommons.org/licenses/by-sa/3.0
*/
class EncomendasCorreios
{
/*
* Serviços
*/
const SERVICO_ESEDEX = 81019;
const SERVICO_MALOTE = 44105;
const SERVICO_PAC = 41106;
const SERVICO_SEDEX = 40010;
const SERVICO_SEDEX10 = 40215;
const SERVICO_SEDEXACOBRAR = 40045;
const SERVICO_SEDEXHOJE = 40290;
protected static $api_url =
'http://shopping.correios.com.br/wbm/shopping/script/CalcPrecoPrazo.aspx';
protected $entrada = array(
'nCdEmpresa' => '',
'sDsSenha' => '',
'nCdServico' => self::SERVICO_SEDEX,
'sCepOrigem' => '',
'sCepDestino' => '',
'nVlPeso' => 0,
'nCdFormato' => 1,
'nVlComprimento' => 0,
'nVlAltura' => 0,
'nVlLargura' => 0,
'nVlDiametro' => 0,
'sCdMaoPropria' => 'N',
'nVlValorDeclarado' => 0,
'sCdAvisoRecebimento' => 'N'
);
protected $saida;
public function __construct($nCdEmpresa = '', $sDsSenha = '')
{
$this->nCdEmpresa = $nCdEmpresa;
$this->sDsSenha = $sDsSenha;
}
public function obterResposta()
{
$this->entrada['StrRetorno'] = 'xml';
$this->saida = @simplexml_load_string(html_entity_decode(
file_get_contents(self::$api_url . '?' . http_build_query(
$this->entrada))));
}
public function __get($nome)
{
if (isset($this->saida[0]->cServico->$nome)) {
return $this->saida[0]->cServico->$nome;
} else {
throw new Exception('propriedade inexistente');
}
}
public function __set($nome, $valor)
{
if (array_key_exists($nome, $this->entrada)) {
$this->entrada[$nome] = $valor;
} else {
throw new Exception('propriedade inexistente');
}
}
}
try {
$EncomendasCorreios = new EncomendasCorreios;
$EncomendasCorreios->nCdServico = EncomendasCorreios::SERVICO_PAC;
$EncomendasCorreios->sCepOrigem = '13100000';
$EncomendasCorreios->sCepDestino = '20000000';
$EncomendasCorreios->nVlPeso = 1;
$EncomendasCorreios->nVlComprimento = 20;
$EncomendasCorreios->nVlAltura = 10;
$EncomendasCorreios->nVlLargura = 20;
$EncomendasCorreios->nCdFormato = 1;
$EncomendasCorreios->obterResposta();
if ($EncomendasCorreios->Erro != '0') {
print "Erro: {$EncomendasCorreios->MsgErro}";
} else {
printf("Valor: R$%s\nPrazo de entrega: %s dias úteis",
$EncomendasCorreios->Valor, $EncomendasCorreios->PrazoEntrega);
}
} catch (Exception $e) {
print "Erro: {$e->getMessage()}";
}
?>
E veja o arquivo de onde eu chamo a classe de frete;
CarrinhoFinal_conteudo.php
<script>
function abre(cartao)
{
document.getElementById(cartao).style.display = 'block';
}
function fecha(cartao)
{
document.getElementById(cartao).style.display = 'none';
}
</script>
<?
if (!session_is_registered("MeuCarrinho")){
header("Location:Carrinho.php");
}else{
if ($MeuCarrinho->QuantosItens() == 0) {
header("Location:Carrinho.php");
}
}
if (!empty($HTTP_POST_VARS["FORM"])){
//Abrindo conexao com o banco de dados
$MySQL = new TMySQL();
$MySQL->connect($host, $db, $user, $pass);
/*
//Requisitanto o codigo do pedido
$Resultado = $MySQL->query("select max(ID_PEDIDO_CLIENTE) from pedidos_cliente");
if (mysql_result($Resultado,0,"max(ID_PEDIDO_CLIENTE)") != ""){
$CODIGO_PEDIDO = mysql_result($Resultado,0,"max(ID_PEDIDO_CLIENTE)") + 1;
}else{
$CODIGO_PEDIDO = 1;
}
*/
//Gravando os Dados do Cliente
$MySQL->query("INSERT INTO pedidos_cliente (Nome, Email, Endereco, Bairro, Cidade, Estado, CEP, FONE, CPF,PESO_TOTAL,PRECO_TOTAL) VALUES ('". $HTTP_POST_VARS["TNOME"] ."', '". $HTTP_POST_VARS["TEMAIL"] ."','". $HTTP_POST_VARS["TENDERECO"] ."','". $HTTP_POST_VARS["TBAIRRO"] ."', '". $HTTP_POST_VARS["TCIDADE"] ."', '". $HTTP_POST_VARS["TESTADO"] ."', '". $HTTP_POST_VARS["TCEP"] ."', '". $HTTP_POST_VARS["TFONE"] ."', '". $HTTP_POST_VARS["TCPF"] ."','$peso_medio','$preco_total')");
$MeuCarrinho->ultimo_id = mysql_insert_id();
//Gravando no banco de dados os item contidos no carrinho
for($i=0;$i<$MeuCarrinho->QuantosItens();$i++) {
$data = date('Y-m-d');
$MySQL->query("INSERT INTO pedidos (ID_PEDIDO, ID_PRODUTO, QUANTIDADE,Envio, data, atende) VALUES (". $MeuCarrinho->ultimo_id .",". $MeuCarrinho->item_codigo[$i] .",". $MeuCarrinho->item_quantidade[$i] .",'". $HTTP_POST_VARS["TENVIO"] ."','$data','n')");
}
//Removendo o Carrinho
session_unregister("MeuCarrinho");
}
?>
<?
if (session_is_registered("MeuCarrinho")){
global $SESSAOlogin;
if (!isset($SESSAOlogin)) {
echo "<script>document.location='loga.php'</script>";
}
else {
$busca = mysql_query("SELECT * FROM clientes where id='$SESSAOlogin';") or die("A consulta falhou: " . mysql_error());
list($id, $nome, $email, $cidade, $estado, $usuario, $senha, $cpfcnpj, $tel, $cel, $endereco, $numero, $bairro,$cep) = mysql_fetch_row($busca)
?>
<p></p>
<? if ($acao=="qual_cep") {
?>
<FORM METHOD="POST" ACTION="CarrinhoFinal.php?acao=envia_dados" name="FORM_ENVIA_CEP">
<TABLE width="400" align="center">
<TR>
<!-- Fazer uma funçao em ajax ou JavaScript para verificar se o peso for superior a 30kg só aceitar encomenda pela trasnportadora-->
<TD>Informe o CEP para entrega do pedido:<br /> O Pedido será enviado por Sedex</TD>
<TD><INPUT TYPE="text" NAME="TCEP"></TD>
</TR>
<TR>
<TD>FORMA DE ENVIO:</TD>
<TD>
<select name="TENVIO">
<option value="FRETE_SEDEX" selected>SEDEX</option>
<option value="FRETE_PAC">PAC</option>
</select>
</TD>
</TR>
<TR align="center">
<TD colspan="2"><input type="submit" value="Enviar Dados" name="envio_cep_frete" WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)" onClick="CriticaFormulario2()"></TD>
</TR>
</TABLE>
<?
}
?>
<? if ($acao=="envia_dados") {
include ("frete3.php");
//if ($peso_medio<=30) { $result = calcula_frete(FRETE_SEDEX, '36855000', $TCEP, $peso_medio); }
//if ($peso_medio>30) { criar função para calculo via transportadora }
//$result = calcula_frete(constant($TENVIO), '36855000', $TCEP, $peso_medio);
//if ($TENVIO=="FRETE_SEDEX") { $result = calcula_frete(FRETE_SEDEX, '36855000', $TCEP, $peso_medio); }
//if ($TENVIO=="FRETE_PAC") { $result = calcula_frete(FRETE_PAC, '36855000', $TCEP, $peso_medio); }
EncomendasCorreios;
?>
<FORM METHOD="POST" ACTION="CarrinhoFinal.php" name="FORM_COMPRA">
<INPUT TYPE="hidden" NAME="FORM" VALUE="FORM">
<INPUT TYPE="hidden" NAME="peso_medio" VALUE="<?=$peso_medio;?>">
<TABLE width="400" align="center">
<tr><td colspan="2" align="center"><h2><b>Finalizando Compra</b></h2></td></tr>
<input type="hidden" name="preco_total" value="<?=number_format($preco_total, 2, '.', ''); ?>">
<TR>
<TD>PAGAMENTO </TD>
<TD>
<!--
<div id="cartao" style="display:block;">oi</div>
onclick="javascript: fecha('cartao');"
-->
<INPUT type="radio" NAME="TPGTO" value="MASTERCARD" checked="checked"> MASTERCARD
<br>
<INPUT type="radio" NAME="TPGTO" value="BOLETO"> BOLETO (À Vista)<br>
<INPUT type="radio" NAME="TPGTO" value="DEPOSITO">
DEPÓSITO (À Vista)
</TD>
</TR>
<TR>
<TD>NOME:/RAZÃO SOCIAL </TD>
<TD><INPUT TYPE="text" NAME="TNOME" value="<?=$nome;?>" disabled="disabled"></TD>
</TR>
<TR>
<TD>CPF/CNPJ:</TD>
<TD><INPUT TYPE="text" NAME="TCPF" value="<?=$cpfcnpj;?>" disabled="disabled"></TD>
</TR>
<TR>
<TD>EMAIL:</TD>
<TD><INPUT TYPE="text" NAME="TEMAIL" value="<?=$email;?>" disabled="disabled"></TD>
</TR>
<TR>
<TD>ENDEREÇO: <font color="red">(de entrega)</font></TD>
<TD><INPUT TYPE="text" NAME="TENDERECO" value="<?=$endereco;?>"></TD>
</TR>
<TR>
<TD>BAIRRO:</TD>
<TD><INPUT TYPE="text" NAME="TBAIRRO" value="<?=$bairro;?>"></TD>
</TR>
<TR>
<TD>CIDADE:</TD>
<TD><INPUT TYPE="text" NAME="TCIDADE" value="<?=$cidade;?>"></TD>
</TR>
<TR>
<TD>ESTADO:</TD>
<TD><INPUT TYPE="text" NAME="TESTADO" disabled="disabled" value="<? print $result[UFdestino]; ?>"></TD>
</TR>
<TR>
<TD>FONE:</TD>
<TD><INPUT TYPE="text" NAME="TFONE" value="<?=$tel;?>" disabled="disabled"></TD>
</TR>
<TR>
<TD>VALORES:</TD>
<TD>
<?
print "Valor do frete R$ ";
print number_format($result[Tarifa], 2, ',', '.');
print "<br>";
print "Valor da compra sem o frete R$ ";
print number_format($preco_total, 2, ',', '.');
print "<br>";
print "Valor da compra xom o frete R$ ";
print number_format($result[Tarifa]+$preco_total, 2, ',', '.');
?>
</TD>
</TR>
<TR align="center">
<TD colspan="2"><input type="submit" value="Finalizar" name="Finalizar" WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)" onClick="CriticaFormulario()"></TD>
</TR>
</TABLE>
</FORM>
<? } ?>
<? }
}else{
?>
<?
if ($TPGTO=="MASTERCARD")
{
?>
<form name="form_card" method="POST" target="vpos" action="https://ecommerce.redecard.com.br/pos_virtual/form_card.asp">
<table width="800" border="0" cellspacing="1" cellpadding="1">
<tr bgcolor="#666666">
<td colspan="7"><div align="left"><font color="#FFFFFF">Forma de Pagamento </font></div></td>
</tr>
<tr>
<td width="111"><div align="center"><img src="img/Mastercard.jpg" height="70" border="0" align="middle"></div></td>
<td width="113"><div align="left"><input type="radio" name="BANDEIRA" value="MASTERCARD" checked> Mastercard</div></td>
<td width="62"><div align="left">Total:</div></td>
<td width="165">
<div align="left">
<label>R$ <?=$preco_total;?></label><input type="hidden" name="TOTAL" value="<?=$preco_total;?>" />
</div></td>
<!--td width="165"><div align="left"><input type="text" name="TOTAL"></div></td-->
<td width="116"><div align="left"><input type="radio" name="TRANSACAO" value="04" checked>À Vista</div></td>
<td width="102"><div align="center"></div></td>
<td width="109"><div align="center"><input type="button" name = "enviar" value = "Pagar" onClick="CriticaFormulario_Cartao()">
</div></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><div align="left"><label>Pedido:</label></div></td>
<td>
<div align="left">
<label><?=$MeuCarrinho->ultimo_id;?></label><input type="hidden" name="NUMPEDIDO" value="<?=$MeuCarrinho->ultimo_id;?>" />
</div></td>
<td><div align="left"><input type="radio" name="TRANSACAO" value="08"> Parcelado</div></td>
<td><div align="center">
<select name="PARCELAS" size="1" style="widtd:100px">
<option value="00" selected>Qtde</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
</select>
</div></td>
<input type="hidden" name="FILIACAO" value="27419606">
<input type="hidden" name="DISTRIBUIDOR" value="27419606">
<input type="hidden" name="PAX1" value="XXXXXXX">
<input type="hidden" name="CODVER" value="XXXXXXXXXXXXXXXX-XXX">
<input type="hidden" name="URLBACK" value="http://www.naturelavie.com.br/img/topo.png">
<input type="hidden" name="URLCIMA" value=" http://www.naturelavie.com.br/img/topo.png">
<input type="hidden" name="TARGET" value="_SELF">
<td><div align="center"><a href="JavaScript:Janela();" onClick="CriticaFormulario_Cartao()"><font color="#000000">Comprar</font></a></div></td>
</tr>
<tr bgcolor="#666666">
<td colspan="7"> </td>
</tr>
</table>
</form>
}
?>
<?
}
else if ($TPGTO=="BOLETO"){ }
else if ($TPGTO=="DEPOSITO")
{
?>
<table width="700" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td align="center"><b><h3><br>
Parabéns sua compra foi realizada com sucesso!</h3>
<h3> </h3>
</b></td>
</tr>
<tr>
<td>
<p>Muito obrigado por adquirir os produtos Nature La Vie. <br>
<br>
O VALOR TOTAL DA TUA COMPRA SEM O FRETE: R$
<?=number_format($preco_total, 2, '.', '');?>
<br>
<br>
Nós cotaremos o valor de frete e após isso entraremos em contato com voce via e-mail e informaremos o valor total para o depósito ja incluido o valor do frete.</p>
<p>Por favor aguarde o nosso e-mail. <br>
</p></td>
</tr>
<tr>
<td>
<p><br>
</p>
</td>
</tr>
</table>
<?
}
}
?>
Edição feita por: carcleo, 23/02/2010, 19:20.