- 19 Out 2010, 12:35
#838
Ola Para todos.
Pagseguro 1.4.8 2
Os problemas:
Erro 1. Se o item vendido nao tem frete. O erro aparece na pagina.
Notice: Undefined index: shipping_method in /home/bras32/public_html/test/catalog/view/theme/default/template/payment/pagseguro.tpl on line 83Notice: Undefined index: shipping_method in /home/bras32/public_html/test/catalog/view/theme/default/template/payment/pagseguro.tpl on line 85
Erro 2. Compra onde se voce vende 2 items: Item 1 = $10.00 , Item 2 = $0.00. Pagseguro da esse erro no site dele; Erro 160 - O VALOR do item 2 deve ser maior que 0 e não deve exceder o máximo permitido.
* O problema aqui e que o pagseguro nao aceita items com valor 0.
Erro 3. Compra com frete. Vamos dizer, sua venda e:
Sua Loja;
Sub-total: R$3.675,00
Frete de taxa única: R$30,00
Total: R$3.705,00
Pagseguro;
Apple Cinema 30 1 R$ 3.575,00 R$ 3.575,00
iPod Classic -Memory 1GB 1 R$ 100,00 R$ 100,00
Total: R$ 3.675,00
Voce pode ver que esta faltando o frete.
Solucao:
Nao fiz ainda a migracao para 1.4.9 ( Porem, o 1.4.8 e 1.4.9 devem ser bem parecidos. )
Aqui vai o codigo que concertou todos esses problemas.
O arquivo em questao e:
Catalog/view/theme/default/template/payment/pagseguro.tpl
Modifique todo o codigo para:
Pagseguro 1.4.8 2
Os problemas:
Erro 1. Se o item vendido nao tem frete. O erro aparece na pagina.
Notice: Undefined index: shipping_method in /home/bras32/public_html/test/catalog/view/theme/default/template/payment/pagseguro.tpl on line 83Notice: Undefined index: shipping_method in /home/bras32/public_html/test/catalog/view/theme/default/template/payment/pagseguro.tpl on line 85
Erro 2. Compra onde se voce vende 2 items: Item 1 = $10.00 , Item 2 = $0.00. Pagseguro da esse erro no site dele; Erro 160 - O VALOR do item 2 deve ser maior que 0 e não deve exceder o máximo permitido.
* O problema aqui e que o pagseguro nao aceita items com valor 0.
Erro 3. Compra com frete. Vamos dizer, sua venda e:
Sua Loja;
Sub-total: R$3.675,00
Frete de taxa única: R$30,00
Total: R$3.705,00
Pagseguro;
Apple Cinema 30 1 R$ 3.575,00 R$ 3.575,00
iPod Classic -Memory 1GB 1 R$ 100,00 R$ 100,00
Total: R$ 3.675,00
Voce pode ver que esta faltando o frete.
Solucao:
Nao fiz ainda a migracao para 1.4.9 ( Porem, o 1.4.8 e 1.4.9 devem ser bem parecidos. )
Aqui vai o codigo que concertou todos esses problemas.
O arquivo em questao e:
Catalog/view/theme/default/template/payment/pagseguro.tpl
Modifique todo o codigo para:
Código: Selecionar todos
Ps. Esse foi um problema serissimo, tenho que agradecer MUITO meu amigo Bira da plugescola ter resolvido isso em questao de minutos. Um genio da programacao. <form action="<?php echo $action; ?>" method="post" id="formpagseguro">
<input type="hidden" name="email_cobranca" value="<?php echo $email_pgseguro; ?>" />
<input type="hidden" name="ref_transacao" value="<?PHP echo $ref; ?>" />
<input type="hidden" name="tipo" value="CP" />
<input type="hidden" name="moeda" value="BRL" />
<?PHP
//Proteção e valor do frete
if(!isset($fretegratis)){ //verifica sem não tem cumpom de frete gratis
if(isset($this->session->data['shipping_method'])){ //verifica se foi selecionado um modo de envio
if($this->session->data['shipping_method']['id']=='free.free'){ //verifica se o metodo de envio e fretegratis
$valorfe=0;
}else {
$valorfe =preg_replace("/[^0-9]/", "", $this->session->data['shipping_method']['text']); //pega o valor do frete ja calculado
if ($valorfe<1) {
$errofrete=true; //se o valor do frete for 0 então deu erro no calculo
}
}
} else {
$errofrete=true;
}
}else if($fretegratis==true){ //se existe o valor e 0
$valorfe=0;
}
//dados dos produtos
$pesototal_produtos=0;
$i=1;
$iddoproduto=array();
foreach ($products as $product) {
$produtoid=$product['id']; //id do produto
$preco = $product['valor'];
$preco = preg_replace("/[^0-9]/", "", $preco); //valor do produto
$pesoprod = preg_replace("/[^0-9]/", "", $product['peso']); //peso do produto
$dopcoes=''; //opções do produto
$descricaoproduto = $product['descricao']; //descrição
foreach ($product['option'] as $option) {
$dopcoes.=' -'.$option['name'].' '.$option['value']; //monta os opcionais do produto
}
$descricaoproduto.= $dopcoes; //descrição do produto
$produtoid = str_replace($iddoproduto, $produtoid."#".$i, $produtoid); //id do produto
//Lista de Produtos
if (($preco != "0")&& ($preco != "")) {
?>
<input type="hidden" name="item_descr_<?PHP echo $i;?>" value="<?PHP echo $descricaoproduto;?>" />
<input type="hidden" name="item_valor_<?PHP echo $i;?>" value="<?PHP echo $preco;?>" />
<input type="hidden" name="item_quant_<?PHP echo $i;?>" value="<?PHP echo $product['quantidade'];?>" />
<input type="hidden" name="item_id_<?PHP echo $i;?>" value="<?PHP echo $produtoid;?>" />
<?PHP
if(isset($errofrete)){ //se deu erro no frete
$pesototal_produtos=+$pesoprod; //somando o peso dos produtos
?>
<input type="hidden" name="item_frete_<?PHP echo $i;?>" value="0" />
<?PHP
}
$i++;
}
$iddoproduto[]=$produtoid;
}
//fim dados dos produtos
$pg_contact_zip= preg_replace("/[^0-9]/", "",$pg_contact_zip); //remove os caracteres não numericos
//verifica se existe alguns dados necessarios
if(!isset($numero)){
$numero="0";
}
if(!isset($bairro)){
$bairro="NA";
}
if(!isset($ddd)){
$ddd="00";
}
//da o valor do frete ou o peso total dos produtos
if(!isset($errofrete)){ //se não deu erro no frete envia o valor do frete
?>
<input type="hidden" name="item_descr_<?PHP echo $i;?>" value="<?PHP echo "Frete" ;?>" />
<input type="hidden" name="item_valor_<?PHP echo $i;?>" value="<?PHP echo $valorfe;?>" />
<input type="hidden" name="item_quant_<?PHP echo $i;?>" value="<?PHP echo "1";?>" />
<input type="hidden" name="item_id_<?PHP echo $i;?>" value="<?PHP echo "999999999999";?>" />
<input type="hidden" name="item_frete_<?PHP echo $i;?>" value="0" />
<?PHP }else { //se deu erro no frete envia o peso dos produtos para o pagseguro calcula o frete ?>
<input type="hidden" name="item_peso_1" value="<?PHP echo $pesototal_produtos; ?>" />
<?PHP
if(isset($this->session->data['shipping_method'])){
if(isset($this->session->data['shipping_method']['id'])){
if($this->session->data['shipping_method']['id']=='pac.pac'){ //se o frete tiver dado 0 e for PAC
echo "\n".'<input name="tipo_frete" value="EN" type="hidden">';
}else if($this->session->data['shipping_method']['id']=='sedex.sedex'){ //se o frete tiver dado 0 e for SEDEX
echo "\n".'<input name="tipo_frete" value="SD" type="hidden">';
}
}
}
}
//Dados do Cliente
?>
<input type="hidden" name="cliente_nome" value="<?PHP echo $pg_contact_firstname.' '.$pg_contact_last_name; ?>" />
<input type="hidden" name="cliente_cep" value="<?PHP echo $pg_contact_zip; ?>" />
<input type="hidden" name="cliente_end" value="<?PHP echo $pg_contact_address1; ?>" />
<input type="hidden" name="cliente_num" value="<?PHP echo $numero; ?>" />
<input type="hidden" name="cliente_compl" value="<?PHP echo $pg_contact_address2; ?>" />
<input type="hidden" name="cliente_bairro" value="<?PHP echo $bairro; ?>" />
<input type="hidden" name="cliente_cidade" value="<?PHP echo $pg_contact_city; ?>" />
<input type="hidden" name="cliente_uf" value="<?PHP echo $estado; ?>" />
<input type="hidden" name="cliente_pais" value="<?PHP echo $pg_contact_country; ?>" />
<input type="hidden" name="cliente_ddd" value="<?PHP echo $ddd; ?>" />
<input type="hidden" name="cliente_tel" value="<?PHP echo $telephone; ?>" />
<input type="hidden" name="cliente_email" value="<?PHP echo $pg_contact_email; ?>" />
</form>
<div style="background: #F7F7F7; border: 1px solid #DDDDDD; padding: 10px; margin-bottom: 10px;">
<br />
<center><img src="https://pagseguro.uol.com.br/security/Imagens/468x60_10X_pagseguro.gif" border="0" alt="PagSeguro" /></center><br />
Após clicar no botão <b>Finalizar Compra com PagSeguro</b> que está abaixo, você será redirecionado para o PagSeguro para efetuar o pagamento.
<br />
<br />
</div>
<div class="buttons">
<table>
<tr>
<td align="left"><a onclick="location = '<?php echo str_replace('&', '&', $back); ?>'" class="button"><span><?php echo $button_back; ?></span></a></td>
<td align="right"><a id="checkout" ><span><img src="https://p.simg.uol.com.br/out/pagseguro/i/botoes/carrinhoproprio/btnFinalizaBR.jpg" border="0" /></span></a></td>
</tr>
</table>
</div>
<script type="text/javascript"><!--
$('#checkout').click(function() {
$('body').css("cursor", "wait");
$('#checkout').hide('fast');
$.ajax({
type: 'GET',
url: 'index.php?route=payment/pagseguro/confirm',
success: function() {
$('#formpagseguro').submit();
}
});
});
//--></script>