<?php
 
 
include_once $_SERVER['DOCUMENT_ROOT'] . '/PagSeguro/PagSeguro.Class.php';
 
 
$id_pedido = 813542;
 
$pedido_valor = 129.70;
 
 
$error_code = 1;
 
$error_message = 'Registro de pagamento não encontrado.';
 
 
/*    Verifica se o PagSeguro enviou o código da transação, para inserir nos dados do pedido e verificar se já foi pago    */
 
$pagou_com_pagseguro = false;
 
 
//  O nome deste parâmetro GET você pode criar no painel (padrão "transaction_id")  //
 
$pagseguro_transaction_id = trim(isset($p['pagseguro_transac_id']) ? $p['pagseguro_transac_id'] : (isset($g['pagseguro_transac_id']) ? $g['pagseguro_transac_id'] : (isset($p['transaction_id']) ? $p['transaction_id'] : (isset($g['transaction_id']) ? $g['transaction_id'] : ''))));
 
 
$pagseguro_dados_OK = strlen($pagseguro_transaction_id) &&
 
                      ($pagseguro_transacao_dados = $PagSeguro->capturaTransacao('[email protected]', 'TOKEN_DE_SEGURANCA_CRIADO_NO_PAINEL_DO_PAGSEGURO', $pagseguro_transaction_id)) &&
 
                      $pagseguro_transacao_dados['code'] == $pagseguro_transaction_id &&
 
                      $pagseguro_transacao_dados['grossAmount'] == $pedido_valor;
 
 
if ($pagseguro_dados_OK) {
 
    switch ($pagseguro_transacao_dados['status']) {
 
        case PAGSEGURO_TRANSACTION_STATUS_PAGA:
 
        case PAGSEGURO_TRANSACTION_STATUS_DISPONIVEL:
 
            $pagou_com_pagseguro = 
 
            $transacao_OK = true;
 
 
            break;
 
 
        case PAGSEGURO_TRANSACTION_STATUS_AGUARDANDO_PAGAMENTO:
 
            $error_code = 3;
 
            $error_message = 'Aguardando pagamento: o comprador iniciou a transação, mas até o momento o PagSeguro não recebeu nenhuma informação sobre o pagamento.';
 
 
            break;
 
 
        case PAGSEGURO_TRANSACTION_STATUS_EM_ANALISE:
 
            $error_code = 4;
 
            $error_message = 'Em análise: o comprador optou por pagar com um cartão de crédito e o PagSeguro está analisando o risco da transação.';
 
 
            break;
 
 
        case PAGSEGURO_TRANSACTION_STATUS_EM_DISPUTA:
 
            $error_code = 5;
 
            $error_message = 'Em disputa: o comprador, dentro do prazo de liberação da transação, abriu uma disputa.';
 
 
            break;
 
 
        case PAGSEGURO_TRANSACTION_STATUS_DEVOLVIDA:
 
            $error_code = 6;
 
            $error_message = 'Devolvida: o valor da transação foi devolvido para o comprador.';
 
 
            break;
 
 
        case PAGSEGURO_TRANSACTION_STATUS_CANCELADA:
 
            $error_code = 7;
 
            $error_message = 'Cancelada: a transação foi cancelada sem ter sido finalizada.';
 
 
            break;
 
    }
 
}
 
/*    =================================================================================================================    */
 
 
if ($transacao_OK) {
 
    /*
 
        Exemplo de alteração de pedido para notificar o site e o cliente de que a transação foi aprovada.
 
 
        Substitua o código pelo seu script.
 
    */
 
    //  Seta a transação como PAGA  //
 
    $sql = "UPDATE pedidos
 
            SET status = " . $DBConn->quote('PRODUCAO') . ",
 
                pagamento_gateway = " . $DBConn->quote('PAGSEGURO') . ",
 
                pagseguro_transaction_id = " . $DBConn->quote($pagseguro_transaction_id) . ",
 
                data_atualizacao = " . $DBConn->quote(date('Y-m-d H:i:s')) . "
 
            WHERE id_pedidos = " . $DBConn->quote($id_pedido);
 
 
    $transacao_OK = $DBConn->query($sql);
 
    //  ==========================  //
 
 
    if ($transacao_OK) {
 
        //  Transação OK  //
 
        $error_code = 0;
 
        $error_message = NULL;
 
        //  ============  //
 
    } else {
 
        //  Erro na atualização dos dados do pedido  //
 
        $error_code = 2;
 
        $error_message = 'Erro na atualização dos dados do pedido. Entre em contato conosco.';
 
        //  =======================================  //
 
    }
 
    /*  =================================================================================================  */
 
}
 
 
?>
 
 |