Alex Dias 0 Denunciar post Postado Outubro 21, 2011 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
visitante_php 0 Denunciar post Postado Outubro 21, 2011 ja pensou em comecar o seu for em 1? tipo for($i=1;$i<=sizeof($array ).... Compartilhar este post Link para o post Compartilhar em outros sites
Alex Dias 0 Denunciar post Postado Outubro 21, 2011 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
João Batista Neto 448 Denunciar post Postado Outubro 21, 2011 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
Alex Dias 0 Denunciar post Postado Outubro 21, 2011 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
alcaidedigital 57 Denunciar post Postado Outubro 24, 2011 [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
Alex Dias 0 Denunciar post Postado Outubro 24, 2011 Obrigado amigo Senartes, vou pesquisar, utilzar o API deve ser mais completo com certeza! Abraçossss Compartilhar este post Link para o post Compartilhar em outros sites