Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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//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//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;?>
<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><?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>
<?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>>
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!
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="">
';>
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!
[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/
:)
Obrigado amigo Senartes, vou pesquisar, utilzar o API deve ser mais completo com certeza!
Abraçossss
ja pensou em comecar o seu for em 1?
tipo
for($i=1;$i<=sizeof($array )....