Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal. Tudo bem?
Nunca tive problemas em si com o retorno automático, mas agora ele retorna sempre FALSO.
E estou usando extamente a nova API do Pagseguro.
Segue o código:
//Toda a rotina abaixo é para a verificação de pagamento
private $timeout = 20; // Timeout em segundos
public function notificationPost() {
$postdata = 'Comando=validar&Token=AQUI-VAI-TOKEN';
foreach ($_POST as $key => $value) {
$valued = $this->clearStr($value);
$postdata .= "&$key=$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_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;
}
Aqui eu chamo a função de autenticação:
//executa pagseguro
$result = $this->notificationPost();
//error
error_log($result);
if ($result == 'VERIFICADO') {
Já tentei gerar novo token e tudo mais, mas sempre retorna FALSO.
Ao invez de utilizar o retorno automático, porque não utiliza a API de notificação, muitos erros no retorno ocorrem pelo problema de caracteres, um problema que não ocorre na API de notificação, uma vez que nem validação dos dados enviados existem.
Como sugerido no post acima, segue os links de tutoriais:
API de notificação - http://sounoob.com.br/2011/09/06/recebendo-notificacoes-do-pagseguro-usando-php-sem-utilizar-a-biblioteca-oficial/
Escrever log - http://sounoob.com.br/2011/09/14/escrevendo-um-arquivo-de-texto-usando-php/
Desculpe, eu ainda não peguei a API em PHP nova... mas essa definitivamente não é. Dá uma olhada em link e você vai ver que os parâmetros e até o endereço de envio são diferentes.
Aconselho dar uma olhada no blog do Sena, o sounoob.com.br, que lá tem um exemplo de retorno automático, e você vai entender o que faz errado. Aliás, eu te recomendaria criar um log do que é enviado em $data (nesse mesmo blog tem exemplo de como salvar log, ou você pode procurar no google como salvar algum log).