From e48ee4854d9defcfafc1438585c2349ab07915e4 Mon Sep 17 00:00:00 2001 From: Gabriel Pedro Date: Mon, 2 May 2016 13:42:30 -0400 Subject: [PATCH] feat: finishing pagseguro implementation --- pagseguro_ipn.php | 112 ++++++++++++++++++++++++++++++++++++++++++ pagseguro_retorno.php | 107 ++++++++++++++++++++++++++++++++++++++++ shop.php | 4 ++ 3 files changed, 223 insertions(+) create mode 100644 pagseguro_ipn.php create mode 100644 pagseguro_retorno.php diff --git a/pagseguro_ipn.php b/pagseguro_ipn.php new file mode 100644 index 0000000..25eb8c5 --- /dev/null +++ b/pagseguro_ipn.php @@ -0,0 +1,112 @@ +status) . ' WHERE `transaction` = \'' . $payment->code . '\' '); + + // Check that the payment_status is Completed + if ($payment->status == 3) { + + // Check that transaction has not been previously processed + $transaction = mysql_select_single('SELECT `transaction`, `completed` FROM `znote_pagseguro` WHERE `transaction`= \'' . $payment->code .'\''); + $status = true; + $custom = (int) $payment->reference; + + if ($transaction['completed'] == '1') { + $status = false; + } + + if ($payment->grossAmount == 0.0) $status = false; // Wrong ammount of money + $item = $payment->items->item[0]; + if ($item->amount != ($pagseguro['price'] / 100)) $status = false; + + if ($status) { + // transaction log + mysql_update('UPDATE `znote_pagseguro` SET `completed` = 1 WHERE `transaction` = \'' . $payment->code . '\''); + + // Process payment + $data = mysql_select_single("SELECT `points` AS `old_points` FROM `znote_accounts` WHERE `account_id`='$custom';"); + + // Give points to user + $new_points = $data['old_points'] + $item->quantity; + mysql_update("UPDATE `znote_accounts` SET `points`='$new_points' WHERE `account_id`='$custom'"); + } + } else if ($payment->status == 7) { + mysql_update('UPDATE `znote_pagseguro` SET `completed` = 1 WHERE `transaction` = \'' . $payment->code . '\' '); + } +?> \ No newline at end of file diff --git a/pagseguro_retorno.php b/pagseguro_retorno.php new file mode 100644 index 0000000..8b486bb --- /dev/null +++ b/pagseguro_retorno.php @@ -0,0 +1,107 @@ +status != 7) ? 0 : 1; + + $custom = (int) $transaction->reference; + $item = $transaction->items->item[0]; + $points = $item->quantity; + $price = $item->quantity * ($pagseguro['price'] / 100); + mysql_insert('INSERT INTO `znote_pagseguro` VALUES (null, \'' . $transaction->code . '\', ' . $custom . ', \'' . $price . '\', \'' . $points . '\', ' . $transaction->status . ', ' . $completed . ')'); + + header('Location: shop.php?callback=processing'); diff --git a/shop.php b/shop.php index e002428..402f803 100644 --- a/shop.php +++ b/shop.php @@ -2,6 +2,10 @@ protect_page(); include 'layout/overall/header.php'; +if (isset($_GET['callback']) && $_GET['callback'] === 'processing') { + echo ''; +} + // Import from config: $shop = $config['shop']; $shop_list = $config['shop_offers'];