Estou utilizando a integração do Pagseguro em PHP. O retorno sempre vem FALSO. Já mudei a codificação para inúmeras possibilidades mas sempre entra no FALSO.
Alguém tem ideia do pró?
Segue o código:
<?php
session_start();
ob_start();
ini_set('date.timezone','America/RECIFE');
$db = mysql_connect("localhost","sige","psige");
mysql_select_db("psige");
//header('Content-Type: text/html; charset=ISO-8859-1');
define('TOKEN', '---------------------');
class PagSeguroNpi {
private $timeout = 20; // Timeout em segundos
public function notificationPost() {
$postdata = 'Comando=validar&Token='.TOKEN;
foreach ($_POST as $key => $value) {
//$valued = $this->clearStr($value);
$valued = $this->$value;
//$postdata .= "&$key=$valued";
$postdata .= "&$key=".urlencode($valued);
}
return $this->verify($postdata);
}
private function clearStr($str) {
if (!get_magic_quotes_gpc()) {
$str = addslashes($str);
}
return $str;
}
private function verify($data) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml");
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, Array("Content-Type: text/html", "charset=ISO-8859-1"));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_TIMEOUT, $this->timeout);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$result = trim(curl_exec($curl));
curl_close($curl);
return $result;
}
}
if (count($_POST) > 0) {
// POST recebido, indica que é a requisição do NPI.
$npi = new PagSeguroNpi();
$result = $npi->notificationPost();
$transacaoID = isset($_POST['TransacaoID']) ? $_POST['TransacaoID'] : '';
if ($result == "VERIFICADO") {
mysql_query("UPDATE tbPedidos set sistema = '1".$_POST['StatusTransacao']."', msg = '".$_POST['Referencia']."' where id = 72");
} else if ($result == "FALSO") {
//O post não foi validado pelo PagSeguro.
mysql_query("UPDATE tbPedidos set sistema = '2".$_POST['StatusTransacao']."', msg = '".$_POST['Referencia']."' where id = 72");
} else {
//Erro na integração com o PagSeguro.
mysql_query("UPDATE tbPedidos set sistema = '3".$_POST['StatusTransacao']."', msg = '".$_POST['Referencia']."' where id = 72");
}
} else {
// POST não recebido, indica que a requisição é o retorno do Checkout PagSeguro.
// No término do checkout o usuário é redirecionado para este bloco.
?>
<h3>Obrigado por efetuar a compra.</h3>
<?php
}
?>
Pergunta
Cézar Ayran
Estou utilizando a integração do Pagseguro em PHP. O retorno sempre vem FALSO. Já mudei a codificação para inúmeras possibilidades mas sempre entra no FALSO.
Alguém tem ideia do pró?
Segue o código:
<?php session_start(); ob_start(); ini_set('date.timezone','America/RECIFE'); $db = mysql_connect("localhost","sige","psige"); mysql_select_db("psige"); //header('Content-Type: text/html; charset=ISO-8859-1'); define('TOKEN', '---------------------'); class PagSeguroNpi { private $timeout = 20; // Timeout em segundos public function notificationPost() { $postdata = 'Comando=validar&Token='.TOKEN; foreach ($_POST as $key => $value) { //$valued = $this->clearStr($value); $valued = $this->$value; //$postdata .= "&$key=$valued"; $postdata .= "&$key=".urlencode($valued); } return $this->verify($postdata); } private function clearStr($str) { if (!get_magic_quotes_gpc()) { $str = addslashes($str); } return $str; } private function verify($data) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml"); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); curl_setopt($curl, CURLOPT_HTTPHEADER, Array("Content-Type: text/html", "charset=ISO-8859-1")); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_TIMEOUT, $this->timeout); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $result = trim(curl_exec($curl)); curl_close($curl); return $result; } } if (count($_POST) > 0) { // POST recebido, indica que é a requisição do NPI. $npi = new PagSeguroNpi(); $result = $npi->notificationPost(); $transacaoID = isset($_POST['TransacaoID']) ? $_POST['TransacaoID'] : ''; if ($result == "VERIFICADO") { mysql_query("UPDATE tbPedidos set sistema = '1".$_POST['StatusTransacao']."', msg = '".$_POST['Referencia']."' where id = 72"); } else if ($result == "FALSO") { //O post não foi validado pelo PagSeguro. mysql_query("UPDATE tbPedidos set sistema = '2".$_POST['StatusTransacao']."', msg = '".$_POST['Referencia']."' where id = 72"); } else { //Erro na integração com o PagSeguro. mysql_query("UPDATE tbPedidos set sistema = '3".$_POST['StatusTransacao']."', msg = '".$_POST['Referencia']."' where id = 72"); } } else { // POST não recebido, indica que a requisição é o retorno do Checkout PagSeguro. // No término do checkout o usuário é redirecionado para este bloco. ?> <h3>Obrigado por efetuar a compra.</h3> <?php } ?>Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.