示例#1
0
require_once __DIR__ . "/../classes/operacoes_de_credito.php";
if (isset($_POST['notificationType']) && $_POST['notificationType'] == 'transaction') {
    $ambiente = operacoes_de_credito::pegaAmbiente() == 'sandbox' ? 'sandbox.' : '';
    $email = operacoes_de_credito::pegaEmail();
    $token = operacoes_de_credito::pegaToken();
    $url = 'https://ws.' . $ambiente . 'pagseguro.uol.com.br/v2/transactions/notifications/' . $_POST['notificationCode'] . '?email=' . $email . '&token=' . $token;
    // inicia a configuraçao do curl
    $curl = curl_init($url);
    // configura o curl para não verificar os certificados SSL do PagSeguro.
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    // traz uma resposta do servidor
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    // retorna resposta do servidor do PagSeguro (XML)
    $transacao = curl_exec($curl);
    curl_close($curl);
    // Se o token estiver errado dentro de $transacao irá ter o texto: Unauthorized
    if ($transacao == 'Unauthorized') {
        // Nesse caso podemos verificar se tem isso e chamar uma função para enviar um e-mail
        // informando a alguém responsável para inserir novo token ou e-mail , ou o que se adaptar melhor ao seu sistema.
        // Aconselho inserir um exit para não correr o risco de o código continuar e sair dando erro em tudo que é coisa pela frente
        // Insira seu código avisando que o sistema está com problemas, sugiro enviar um e-mail avisando para alguém fazer a manutenção
        $msg = 'Esta é uma mensagem automática ao detectar falha na tentativa de obter dados da transação PagSeguro sob o código <strong>' . $_POST['notificationCode'] . '</strong>.<br><br>Para se certificar que a operação seja executada corretamente verifique os dados de <strong>token</strong> e <strong>e-mail</strong> cadastrados no sistema, e tente novamente.';
        operacoes_de_credito::enviaEmailAlerta('Operações de Crédito PagSeguro', 'Falha ao obter dados de notificação', $msg);
        exit;
        // Manter essa linha
    } else {
        // passa os dados da transação para a função de atualização
        operacoes_de_credito::atualizaStatusCompra(simplexml_load_string($transacao));
    }
}