Esempio n. 1
0
 public function checkPaymentStatus()
 {
     $payments = (array) json_decode(Payments::i()->getPayments());
     $pending = (array) $payments['pending'];
     foreach ($pending as $payment) {
         $response = (array) $this->block_io->get_address_balance(array('addresses' => base64_decode($payment->token)));
         if ($response['status'] == "success") {
             $data = (array) $response['data'];
             foreach ((array) $data['balances'] as $balance) {
                 if ($balance->address == base64_decode($payment->token) && $balance->label == $payment->payerid) {
                     if (round($balance->available_balance, 8) >= round($payment->amount, 8)) {
                         $update = DBManager::i()->update("sf_purchases", array("pending" => 0), array("token" => $payment->token));
                         if ($update) {
                             $_SESSION['shopping-cart'] = base64_encode("{}");
                             DbManager::i()->update("sf_carts", array("cart" => $_SESSION['shopping-cart']), array("userid" => $_SESSION['userid']));
                             return array("result" => "success", "resultMessage" => "Payment received! Refreshing your payments...");
                         } else {
                             throw new Exception("Could not update Purchase. Please try again later");
                         }
                     } else {
                         throw new Exception("Paid amount is not enough. Need " . round($payment->amount - $balance->available_balance, 8) . " more Bitcoins", 1212);
                     }
                     break;
                 } else {
                     throw new Exception("Balance Address: " . $balance->address . " NOT EQUAL TO payment address: " . $payment->address . " and balance label: " . $balance->label . " NOT EQUAL to payment label" . $payment->payerid);
                 }
             }
         } else {
             throw new Exception("Could not get address balance for address");
         }
     }
 }
Esempio n. 2
0
require_once ROOT_DIR . '/class.sessionmanager.php';
if (!SessionManager::i()->isLoggedIn()) {
    Logger::i()->writeLog("User is not logged in", 'dev');
    SessionManager::i()->destroySession(true, "index.php");
    die;
}
if (!SessionManager::i()->validateToken("DownloadToken", "token", "GET")) {
    Logger::i()->writeLog("Token to download is missing", 'dev');
    SessionManager::i()->destroySession(true, "index.php");
    die;
}
if (!isset($_GET['productid']) || !isset($_GET['transaction_id'])) {
    header("Location: index.php");
    die;
}
$payments = (array) json_decode(Payments::i()->getPayments());
$payments = (array) $payments['payments'];
$payments = array_filter($payments, function ($payment) {
    return $payment->token == $_GET['transaction_id'];
});
if (count($payments) == 1) {
    $payment = $payments[0];
    $has_purchased = false;
    foreach ($payment->cart as $key => $value) {
        if ($key == $_GET['productid']) {
            $has_purchased = true;
            break;
        }
    }
    if ($has_purchased) {
        //purchased