AdolfoPS 0 Denunciar post Postado Novembro 8, 2011 Como o usuário do sistema pode fazer várias compras numa vez só, eu to utilizando um contador de quantos items ele está comprando, assim da um loop nas variáveis dos produtos para passar pela API. O código funciona perfeito quando compro somente um item, mas se compro mais que um tenho como retorno este erro: Erro 11024 - Items invalid quantity. <?php $email = "XXXXXX@XXXXXXXX.com"; $token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; $url = "https://ws.pagseguro.uol.com.br/v2/checkout/?email=" . $email . "&token=" . $token; $email = $_POST["cliente_email"]; $redurl = $_POST["red_url"]; $nome = $_POST["cliente_nome"]; $ref = $_POST["ref_transacao"]; $tel = $_POST["cliente_tel"]; $contador = $_POST["contador"]; for ($i = 1; $i <= $contador; $i++) { $idproduto = array($i => $_POST["item_id_" . $i]); $produto = array($i => $_POST["item_descr_" . $i]); $valor = array($i => $_POST["item_valor_" . $i]); $quantidade = array($i => $_POST["item_quant_" . $i]); } $postReq.= "currency=BRL"; for ($j = 1; $j <= $contador; $j++) { $postReq.= "&itemId" . $j . "=" . $idproduto[$j]; $postReq.= "&itemDescription" . $j . "=" . $produto[$j]; $postReq.= "&itemAmount" . $j . "=" . $valor[$j]; $postReq.= "&itemQuantity" . $j . "=" . $quantidade[$j]; } $postReq.= "&reference=" . $ref; $postReq.= "&senderName=" . $nome; $postReq.= "&senderEmail=" . $email; $postReq.= "&redirectURL=" . $redurl; $curl = curl_init($url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, Array("Content-Type: application/x-www-form-urlencoded; charset=ISO-8859-1")); curl_setopt($curl, CURLOPT_POSTFIELDS, $postReq); $xml= curl_exec($curl); if($xml == 'Unauthorized'){ //Insira seu código avisando que o sistema está com problemas, sugiro enviar um e-mail avisando para alguém fazer a manutenção echo "Unauthorized!"; exit;//Mantenha essa linha } curl_close($curl); $xml= simplexml_load_string($xml); if(count($xml -> error) > 0){ //Insira seu código avisando que o sistema está com problemas, sugiro enviar um e-mail avisando para alguém fazer a manutenção, talvez seja útil enviar os códigos de erros. $erro = $xml->error->message; $errocod = $xml->error->code; echo "Erro " . $errocod . " - " . $erro; exit; } header('Location: https://pagseguro.uol.com.br/v2/checkout/payment.html?code=' . $xml->code); ?> Compartilhar este post Link para o post Compartilhar em outros sites
AdolfoPS 0 Denunciar post Postado Novembro 9, 2011 Já corrigi o erro ;) Compartilhar este post Link para o post Compartilhar em outros sites
alcaidedigital 57 Denunciar post Postado Novembro 9, 2011 O que era que estava errado? Posta ai, para quem estiver pesquisando saber qual o problema. Compartilhar este post Link para o post Compartilhar em outros sites
Ceowz 0 Denunciar post Postado Novembro 18, 2011 Muito bom esse código me ajudou muito. Compartilhar este post Link para o post Compartilhar em outros sites
alcaidedigital 57 Denunciar post Postado Novembro 24, 2011 Tutorial: http://links.soudev.com.br/desenvolvimento/criando-uma-requisicao-de-pagamento-do-pagseguro-via-parametros-http-%E2%80%93-|-sounoob/ Compartilhar este post Link para o post Compartilhar em outros sites
JotaWeb 0 Denunciar post Postado Agosto 10, 2012 Estou com o mesmo problema e não consigo resolver! :mellow: Compartilhar este post Link para o post Compartilhar em outros sites
JotaWeb 0 Denunciar post Postado Agosto 10, 2012 Consegui resolver também meu problema segue o código para futuras pesquisas e melhoras! if(!isset($user)){ header('location: acesso.php'); } if(empty($user)){ header('location: acesso.php'); }else{ $sql = "SELECT * FROM teste_pedido ORDER BY nomeprod ASC"; $res = mysql_query($sql); while ($row = mysql_fetch_array($res)) { echo "<tr>"; echo "<td>".$row['nomeprod']."</td>"; echo "<td align='center'>".$row['quantprod']."</td>"; echo "<td align='center'> R$ ".formata($row['valorprod'])."</td>"; echo "</tr>"; $idProd = $row['idprod']; $nomeProd = $row['nomeprod']; $qntProd = $row['quantprod']; $valorprod = $row['valorprod']; $subtotal = $qntProd * $valorprod; $total += $qntProd * $valorprod; echo 'Código do produto: '.$idProd.'<br >'; echo 'Nome do produto: '.$nomeProd.'<br >'; echo 'Quantidade de cada produto: '.$qntProd.'<br >'; echo 'valor unitário: '.$valorprod.'<br >'; echo 'Subtotal: '.$subtotal.'<br >'; $i++; $form .= ' <input type="hidden" name="item_id_' . $i . '" value="'.$idProd.'"> <input type="hidden" name="item_descr_' . $i . '" value="'.$nomeProd.'"> <input type="hidden" name="item_quant_' . $i . '" value="'.$qntProd.'"> <input type="hidden" name="item_valor_' . $i . '" value="'.$valorprod.'">'; $cont = $cont + 1; } echo ' <form target="pagseguro" method="post" action="https://pagseguro.uol.com.br/checkout/checkout.jhtml"> <input type="hidden" name="email_cobranca" value="marketing@wbcell.com.br"> <input type="hidden" name="tipo" value="CP"> <input type="hidden" name="moeda" value="BRL">' . $form . '<input type="hidden" name="tipo_frete" value=""> <input type="image" src="https://p.simg.uol.com.br/out/pagseguro/i/botoes/pagamentos/99x61-pagar-assina.gif" name="submit" alt="Pague com PagSeguro - é rápido, grátis e seguro!"> </form>'; } Compartilhar este post Link para o post Compartilhar em outros sites
alcaidedigital 57 Denunciar post Postado Agosto 10, 2012 Esse código não utiliza a API de pagamentos para fazer a requisição, em vez disso ele utiliza o método antigo, que por sinal é passivel de falhas. Qualquer pessoa com o minimo de experiencia em desenvolvimento consegue manipular os dados e fazer uma compra da sua loja com um preço inferior. Quer segurança? Utilize a API de Pagamentos, use o tutorial do link abaixo: http://sounoob.com.br/2011/11/09/criando-uma-requisicao-de-pagamento-do-pagseguro-via-parametros-http-usando-php-sem-utilizar-a-biblioteca-oficial/ Compartilhar este post Link para o post Compartilhar em outros sites