requireUser(WEB_ROOT . '/login.' . SITE_CONFIG_PAGE_EXTENSION); } // page title $title = UCWords(t('extend', 'extend')); if ($Auth->level_id <= 1) { $title = UCWords(t('upgrade', 'upgrade')); } // setup page define("PAGE_NAME", $title . ' ' . UCWords(t("account_confirmation", "account confirmation"))); define("PAGE_DESCRIPTION", $title . ' ' . t("upgrade_meta_description", "Your Account")); define("PAGE_KEYWORDS", strtolower($title) . t("upgrade_meta_keywords", ", account, paid, membership, upload, download, site")); define("TITLE_DESCRIPTION_LEFT", t("upgrade_title_page_description_left", "See below for the various account and payment options.")); define("TITLE_DESCRIPTION_RIGHT", t("upgrade_title_page_description_right", "")); define("CURRENT_PAGE_KEY", "upgrade"); // prep dates $monthDropdown = range(1, 12); $yearDropdown = range(date('Y'), date('Y') + 20); // load user $user = UserPeer::loadUserById($Auth->id); $user_level_pricing_id = (int) $_REQUEST['user_level_pricing_id']; $fileId = null; if (isset($_REQUEST['f'])) { $file = file::loadByShortUrl($_REQUEST['f']); if ($file) { $fileId = $file->id; } } // load the payment gateway data $gatewayParams = $db->getRow('SELECT plugin_payment_gateways_configured.params, plugin_payment_gateways.class_name FROM plugin_payment_gateways_configured ' . 'LEFT JOIN plugin_payment_gateways ON plugin_payment_gateways_configured.gateway_id = plugin_payment_gateways.id ' . 'WHERE plugin_payment_gateways_configured.id = ' . (int) $_REQUEST['cid'] . ' LIMIT 1'); if (!$gatewayParams) { coreFunctions::redirect(WEB_ROOT . '/upgrade.html'); } $card_number = ''; $card_holder_name = ''; $expiry_month = ''; $expiry_year = ''; $cvv = ''; // handle submissions if (isset($_REQUEST['submitted'])) { // get form variables $card_number = trim($_REQUEST['card_number']); $card_holder_name = trim($_REQUEST['card_holder_name']); $expiry_month = trim($_REQUEST['expiry_month']); $expiry_year = trim($_REQUEST['expiry_year']); $cvv = trim($_REQUEST['cvv']); // create order entry $order = OrderPeer::createByPackageId($user->id, $user_level_pricing_id, $fileId); if ($order) { // prep params $gatewayParamsArr = json_decode($gatewayParams['params'], true); // setup the payment gateway object $gateway = Omnipay::create($gatewayParams['class_name']); foreach ($gatewayParamsArr AS $k => $gatewayParam) { $funcName = 'set' . ucfirst($k); if (method_exists($gateway, $funcName)) { $gateway->{$funcName}($gatewayParam); } } // pickup form data $formData = [ 'number' => $card_number, 'firstName' => $card_holder_name, 'expiryMonth' => $expiry_month, 'expiryYear' => $expiry_year, 'cvv' => $cvv, ]; /* $formData = [ 'number' => '4242424242424242', 'firstName' => 'MR. WALTER WHITE', 'expiryMonth' => '6', 'expiryYear' => '2019', 'cvv' => '123' ]; */ // send purchase request try { $response = $gateway->purchase( [ 'amount' => $order->amount, 'currency' => SITE_CONFIG_COST_CURRENCY_CODE, 'card' => $formData ] )->send(); } catch (\Exception $e) { // internal error, log exception and display a generic message to the customer notification::setError('Error! ' . $e->getMessage()); } // if no errors if (notification::isErrors() === false) { // process response if ($response->isSuccessful()) { // payment was successful, upgrade account $extendedDays = $order->days; $upgradeUserId = $order->upgrade_user_id; // log in payment_log $dbInsert = new DBObject("payment_log", array("user_id", "date_created", "amount", "currency_code", "from_email", "to_email", "description", "request_log", "payment_method") ); $dbInsert->user_id = $order->user_id; $dbInsert->date_created = date("Y-m-d H:i:s", time()); $dbInsert->amount = $order->amount; $dbInsert->currency_code = SITE_CONFIG_COST_CURRENCY_CODE; $dbInsert->from_email = $user->email; $dbInsert->to_email = $response->getTransactionReference(); $dbInsert->description = $order->description; $dbInsert->request_log = print_r($response, true); $dbInsert->payment_method = $gatewayParams['class_name']; $dbInsert->insert(); // update order status to paid $dbUpdate = new DBObject("premium_order", array("order_status"), 'id'); $dbUpdate->order_status = 'completed'; $dbUpdate->id = $order->id; $effectedRows = $dbUpdate->update(); if ($effectedRows === false) { // failed to update order die('Failed - failed to update order'); } // extend/upgrade user $rs = UserPeer::upgradeUserByPackageId($order->user_id, $order); if ($rs === false) { // failed to update user notification::setError('Failed - failed to update your account, please contact support.'); } else { // append any plugin includes pluginHelper::includeAppends('payment_ipn_paypal.php', array('order' => $order)); // add confirmation message within their account $user = UserPeer::loadUserById($Auth->id); internalNotification::add($order->user_id, 'Thanks for your payment of ' . SITE_CONFIG_COST_CURRENCY_SYMBOL . $order->amount . '. Your premium account will expire on ' . coreFunctions::formatDate(strtotime($user->paidExpiryDate))); // redirect to account home coreFunctions::redirect('account_home.' . SITE_CONFIG_PAGE_EXTENSION); } } elseif ($response->isRedirect()) { // redirect to offsite payment gateway $response->redirect(); } else { // payment failed notification::setError('Error! ' . $response->getMessage()); } } } } // include header require_once(SITE_TEMPLATES_PATH . '/partial/_header.inc.php'); ?>
| : | level), UCWords($Auth->level)); ?> |
| : | paidExpiryDate); ?> |