<?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-vendedor@provedor.com.br', '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.';
// ======================================= //
}
/* ================================================================================================= */
}
?>
|