Ir para conteúdo

POWERED BY:

Arquivado

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

Alex Dias

[Resolvido] Carrinho de Compra Imaster Fabyo

Recommended Posts

Olá amigos, bom dia a todos.

 

Há um tempo atras nosso amigo Fabyo disponibilizou um Script Php de Carrinho de compras e agora gostaria de integrá-lo ao pagseguro.

 

O detalhe é que todo o conteúdo do Carrinho eu gostaria de enviar ao pagseguro.

 

Tá tudo certo só tem um pequeno detalhe que tá dando errado!

 

Os dados enviados ao Pagseguro tem que ser da seguinte forma:

 

Observe que a sequencia tem que iniciar do número 1 em diante, e nunca iniciar do Zero.

 

<input type="hidden" name="item_id_1" value="">

<input type="hidden" name="item_descr_1" value="">

<input type="hidden" name="item_quant_1" value="1">

<input type="hidden" name="item_valor_1" value="">

<input type="hidden" name="item_frete_1" value="">

<input type="hidden" name="item_peso_1" value="">

 

<input type="hidden" name="item_id_2" value="">

<input type="hidden" name="item_descr_2" value="">

<input type="hidden" name="item_quant_2" value="">

<input type="hidden" name="item_valor_2" value="">

<input type="hidden" name="item_frete_2" value="">

<input type="hidden" name="item_peso_2" value="">

 

O MEU RESULTADO ESTÁ SAÍDO DESSA FORMA ABAIXO:

 

<input type="hidden" name="item_id_0" value="">

<input type="hidden" name="item_descr_0" value="">

<input type="hidden" name="item_quant_0" value="1">

<input type="hidden" name="item_valor_0" value="">

<input type="hidden" name="item_frete_0" value="">

<input type="hidden" name="item_peso_0" value="">

 

<input type="hidden" name="item_id_1" value="">

<input type="hidden" name="item_descr_1" value="">

<input type="hidden" name="item_quant_1" value="">

<input type="hidden" name="item_valor_1" value="">

<input type="hidden" name="item_frete_1" value="">

<input type="hidden" name="item_peso_1" value="">

 

 

Observe que iniciou do número 0 (ZERO) e eu já bati cabeça para que ele iniciasse do número 1 (um) ao infinito, ou seja, até a quantidade de produtos no carrinho.

 

Gostari de solicitar a ajuda dos amigos do Fórum para solucionar esse pequeno detalhe.

 

Segue abaixo como meu carrinho está se comportando:

 

carrinho.php

<?

//INICIALIZA A SESSÃO
session_start(); 

//VERIFICA SE TEM PRODUTO NO CARRINHO PARA PUXAR
if(count($_SESSION[cesta]) > 0) { 
  //PEGA A CHAVE DO ARRAY
  $chave   =   array_keys($_SESSION[cesta]);

  //PEGA OS DADOS DA SESSÃO
  for($i=0; $i<sizeof($chave); $i++) { 
     //ÍNDICE
     $indice   =   $chave[$i]; 

  //ATRIBUI
  $cesta[$indice][iD_FOTOGRAFIA]  		=    $_SESSION[cesta][$indice][iD_FOTOGRAFIA];
     $cesta[$indice][NOME_FOTOGRAFIA]    =    $_SESSION[cesta][$indice][NOME_FOTOGRAFIA];
     $cesta[$indice][PASTA]    	=    $_SESSION[cesta][$indice][PASTA];
  $cesta[$indice][PRECO]   		=    $_SESSION[cesta][$indice][PRECO];
     $cesta[$indice][QTDE]    		=    $_SESSION[cesta][$indice][QTDE];






// INICIO DA PREPARAÇÃO DOS PRODUTOS A SEREM ENVIADOS AO PAGSEGURO


	  echo'
         <input type="hidden" name="item_id_'.$i.'" value=""/>
         <input type="hidden" name="item_descr_'.$i.'" value="" />
         <input type="hidden" name="item_quant_'.$i.'" value=""/>
         <input type="hidden" name="item_valor_'.$i.'" value=""/>
         <input type="hidden" name="item_frete_'.$i.'" value="">
         <input type="hidden" name="item_peso_'.$i.'" value="">
         ';

// INICIO DA PREPARAÇÃO DOS PRODUTOS A SEREM ENVIADOS AO PAGSEGURO







  }//FECHA FOR
}//FECHA IF



//VERIFICA SE A OPÇÃO ATUALIZAR FOI SELECIONADA
if($_POST[opc_atualizar]) {

  //RECEBE OS PRODUTOS CHECADOS PARA ATUALIZAÇÃO
  $v_atualiza  =  $_POST[a_prod];

  //PEGA A CHAVE DO ARRAY
  $chave  =  array_keys($v_atualiza);

  //EXIBE
  for($i=0; $i<sizeof($chave); $i++) {
  //PEGA O INDICE DO PRODUTO
  $indice   =   $chave[$i];

  //ALTERA A QUANTIDADE DO PRODUTO SELECIONADO
  $_SESSION[cesta][$indice][QTDE]   =  $v_atualiza[$indice][QTDE];





  }//FECHA FOR
}//FECHA IF


//VERIFICA SE A OPÇÃO EXCLUIR FOI SELECIONADA
elseif($_POST[opc_excluir]) {

  //RECEBE OS PRODUTOS CHECADOS PARA EXCLUSÃO
  $excluir  =  $_POST[check];

  //EXIBE
  for($i=0; $i<sizeof($excluir); $i++) {
  //PEGA O INDICE DO PRODUTO
  $indice   =   $excluir[$i];
  //DESTRÓI A VARIÁVEL ESPECIFICADA
  unset($_SESSION[cesta][$indice]);





  }//FECHA FOR
}//FECHA IF



//RECEBE O PEDIDO DO USUÁRIO
elseif($_POST[opc_efetivar]) {
  //RECEBE AS VARIÁVEIS
  $v_prod   =  $_POST[txtprod];

  //PEGA A CHAVE DO ARRAY
  $chave  =  array_keys($v_prod);


  //EXIBE
  for($i=0; $i<sizeof($chave); $i++) {
     $indice  =  $chave[$i];

     //VERIFICA
     if(!empty($v_prod[$indice][QTDE]) ) {

     //GRAVA NO ARRAY CESTA
     $cesta[$indice][iD_FOTOGRAFIA] 		=    $v_prod[$indice][iD_FOTOGRAFIA];
     $cesta[$indice][NOME_FOTOGRAFIA]   	=    $v_prod[$indice][NOME_FOTOGRAFIA];
     $cesta[$indice][PASTA]    	=    $v_prod[$indice][PASTA];
     $cesta[$indice][PRECO]    		=    $v_prod[$indice][PRECO];
	 $cesta[$indice][QTDE]     		=    $v_prod[$indice][QTDE];



     }//FECHA IF
  }//FECHA FOR

  //GRAVA NA SESSÃO
  $_SESSION[cesta]        =   $cesta;
}//FECHA ELSE
?>
<html>
<head>
<title>MINHAS COMPRAS</title>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script language="JavaScript">
<!--
  function enviar(opcao) {
     //OPÇÃO EXCLUIR SELECIONADA
  if(opcao == 'E') {
     document.forms[0].opc_excluir.value = 1;
	 document.forms[0].submit();
     }//FECHA IF

  //OPÇÃO ATUALIZAR SELECIONADA
  if(opcao == 'A') {
     document.forms[0].opc_atualizar.value = 1;
	 document.forms[0].submit();
     }//FECHA IF

  //OPÇÃO FINALIZAR SELECIONADA
  if(opcao == 'F') {
     document.forms[0].opc_finalizar.value = 1;
	 document.forms[0].action = "https://pagseguro.uol.com.br/checkout/checkout.jhtml";
	 document.forms[0].submit();
     }//FECHA IF

  }//FECHA FUNCTION
//-->
</script>

</head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="100%"  border="0" cellspacing="0" cellpadding="0">
 <tr>
   <td><?
//EXIBE O CARRINHO SE TIVER PRODUTOS
if(count($_SESSION[cesta]) > 0) { ?>
       <form method="post">
         <input type="hidden" name="opc_excluir">
         <input type="hidden" name="opc_atualizar">
         <input type="hidden" name="opc_finalizar">
         <table width="100%"  border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#CCCCCC">
           <tr bordercolor="#CCCCCC" bgcolor="#000000">
             <td width="1%" height="19" bgcolor="#FFFFFF"></td>
             <td width="6%" bgcolor="#FFFFFF">Qntde</td>
             <td width="34%" bordercolor="#CCCCCC" bgcolor="#FFFFFF">Fotografia</td>
             <td width="11%" bgcolor="#FFFFFF">Preço</td>
             <td width="16%" bgcolor="#FFFFFF">Sub-Total</td>
           </tr>
           <?



  //PEGA A CHAVE
     $chave_cesta  =  @array_keys($_SESSION[cesta]);

  //EXIBE OS PRODUTOS DA CESTA
  for($i=0; $i<sizeof($chave_cesta); $i++) { 
     $indice   =   $chave_cesta[$i]; 

	 //SUBTOTAIS DE CADA PRODUTO
	 $subtotal =   $_SESSION[cesta][$indice][QTDE] * ereg_replace(",",".",$_SESSION[cesta][$indice][PRECO]);

	 //TOTAL GERAL
	 $total   +=   $subtotal;



  ?>



           <tr>
             <td height="25">
                 <input name="check[]" type="checkbox" value="<? echo $indice; ?>">
             </td>
             <td height="25">
                 <input type="text" name="a_prod[<? echo $indice; ?>][QTDE]" value="<? echo $_SESSION[cesta][$indice][QTDE]; ?>" size="1">
             </td>
             <td height="25"><? echo $_SESSION[cesta][$indice][NOME_FOTOGRAFIA]; ?> </td>
             <td height="25">R$ <? echo $_SESSION[cesta][$indice][PRECO]; ?> </td>
             <td width="25%" height="25"> R$ <? echo number_format($subtotal,2,',','.'); ?></td>
           </tr>



		<?
  }//FECHA FOR ?>



         </table>
         <table width="100%" border="0" cellspacing="3" cellpadding="2">
           <tr bordercolor="#CCCCCC">
             <td height="25%" colspan="3"> </td>
             <td width="20%" height="25">
             à pagar: </td>
             <td width="27%" height="25"><? echo number_format($total,2,',','.'); ?></td>
           </tr>
           <tr>
             <td width="3%"> </td>
             <td width="2%"> </td>
             <td width="48%">
                 <input name="btnExcluir" type="image" onClick="enviar('E');" src="images/excluir.gif" border="0" width="79" height="20">
                 
               <input name="btnAtualiza" type="image" onClick="enviar('A');" src="images/atualizar.gif" border="0" ="79" height="20">
             </td>
             <td><input name="submit" type="image" onClick="enviar('F');" src="images/finaliza.gif" border="0" width="79" height="20"></td>
             <td> </td>
           </tr>
         </table>
       </form>

     <? 
}//FECHA IF(count) 
else { ?>
       <table width="90%"  border="0" align="center" cellpadding="0" cellspacing="0">
         <tr>
           <td align='center'><b>Desculpe, mas no momento você não possui nenhumm 
             produto.</b></td>
         </tr>
       </table>


       <?
}//FECHA ELSE (count)?>




   </td>
 </tr>
</table>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

ja pensou em comecar o seu for em 1?

 

tipo

 

for($i=1;$i<=sizeof($array )....

 

Olá Igor, obrigado amigo pela força, porém quando eu começo meu for em 1, não me retorna nenhum resultado!

Compartilhar este post


Link para o post
Compartilhar em outros sites
  	echo'
         <input type="hidden" name="item_id_'.($i+1).'" value=""/>
         <input type="hidden" name="item_descr_'.($i+1).'" value="" />
         <input type="hidden" name="item_quant_'.($i+1).'" value=""/>
         <input type="hidden" name="item_valor_'.($i+1).'" value=""/>
         <input type="hidden" name="item_frete_'.($i+1).'" value="">
         <input type="hidden" name="item_peso_'.($i+1).'" value="">
         ';

Compartilhar este post


Link para o post
Compartilhar em outros sites

  	echo'
         <input type="hidden" name="item_id_'.($i+1).'" value=""/>
         <input type="hidden" name="item_descr_'.($i+1).'" value="" />
         <input type="hidden" name="item_quant_'.($i+1).'" value=""/>
         <input type="hidden" name="item_valor_'.($i+1).'" value=""/>
         <input type="hidden" name="item_frete_'.($i+1).'" value="">
         <input type="hidden" name="item_peso_'.($i+1).'" value="">
         ';

 

 

Olá João Batista, amigo MUITO OBRIGADO, resolveu meu problema.

 

Olá vou te contar, fiquei cerca de 3 horas direto de frente pro PC pesquisando sobre como resolver isso e uma simples dica matou tudo!

 

Agora eu fico pensando será que foi muita burrice minha ou foi CANSAÇO MENTAL!

 

Obrigado amigos, agradeço a contribuição de todos e do Fórum!

 

Um ótimo final de semana!

Compartilhar este post


Link para o post
Compartilhar em outros sites

[Dica] Utilize a API de Pagamento, é mais seguro, e mais simples de usar. Acredito que seu código porem creio que com a API irá ficar melhor.

https://pagseguro.uol.com.br/v2/guia-de-integracao/api-de-pagamentos.html

 

Duvida sobre a API primeiro pesquise na area do PagSeguro, caso não tenha nada relacionado a sua duvida, crie um novo tópíco.

http://forum.imasters.com.br/forum/244-gateways-e-meios-de-pagamento-online-pagseguro/

 

:)

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.