Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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);
?>Carregando comentários...