public function action_210() { //add new order fields try { DB::query(Database::UPDATE, "ALTER TABLE `" . self::$db_prefix . "orders` ADD `amount_net` DECIMAL(14,3) NOT NULL DEFAULT '0' AFTER `amount`;")->execute(); DB::query(Database::UPDATE, "ALTER TABLE `" . self::$db_prefix . "orders` ADD `gateway_fee` DECIMAL(14,3) NOT NULL DEFAULT '0' AFTER `amount_net`;")->execute(); DB::query(Database::UPDATE, "ALTER TABLE `" . self::$db_prefix . "orders` ADD `VAT_amount` DECIMAL(14,3) NOT NULL DEFAULT '0' AFTER `VAT`;")->execute(); } catch (exception $e) { } //make posts bigger description try { DB::query(Database::UPDATE, "ALTER TABLE `" . self::$db_prefix . "posts` CHANGE `description` `description` LONGTEXT;")->execute(); } catch (exception $e) { } try { DB::query(Database::UPDATE, "ALTER TABLE `" . self::$db_prefix . "content` CHANGE `description` `description` LONGTEXT;")->execute(); } catch (exception $e) { } //bigger configs try { DB::query(Database::UPDATE, "ALTER TABLE `" . self::$db_prefix . "config` CHANGE `config_value` `config_value` LONGTEXT;")->execute(); } catch (exception $e) { } //recalculate all the orders $orders = new Model_Order(); $orders = $orders->where('status', '=', Model_Order::STATUS_PAID)->where('amount_net', '=', 0)->find_all(); foreach ($orders as $order) { if ($order->paymethod == 'stripe') { $order->gateway_fee = StripeKO::calculate_fee($order->amount); } elseif ($order->paymethod == '2checkout') { $order->gateway_fee = Twocheckout::calculate_fee($order->amount); } elseif ($order->paymethod == 'paymill') { $order->gateway_fee = Paymill::calculate_fee($order->amount); } elseif ($order->paymethod == 'authorize') { $order->gateway_fee = Controller_Authorize::calculate_fee($order->amount); } elseif ($order->paymethod == 'paypal') { //we dont have the history of the transactions so we clculate an aproximation using 4% $order->gateway_fee = 4 * $order->amount / 100; } else { $order->gateway_fee = 0; } //get VAT paid if ($order->VAT > 0) { $order->VAT_amount = $order->amount - 100 * $order->amount / (100 + $order->VAT); } else { $order->VAT_amount = 0; } //calculate net amount $order->amount_net = $order->amount - $order->gateway_fee - $order->VAT_amount; try { $order->save(); } catch (Exception $e) { throw HTTP_Exception::factory(500, $e->getMessage()); } } //new configs $configs = array(array('config_key' => 'stripe_alipay', 'group_name' => 'payment', 'config_value' => '0'), array('config_key' => 'captcha', 'group_name' => 'general', 'config_value' => ''), array('config_key' => 'recaptcha_active', 'group_name' => 'general', 'config_value' => ''), array('config_key' => 'recaptcha_secretkey', 'group_name' => 'general', 'config_value' => ''), array('config_key' => 'recaptcha_sitekey', 'group_name' => 'general', 'config_value' => '')); Model_Config::config_array($configs); }
/** * [action_form] generates the form to pay at paypal */ public function action_pay() { $this->auto_render = FALSE; $id_order = $this->request->param('id'); //retrieve info for the item in DB $order = new Model_Order(); $order = $order->where('id_order', '=', $id_order)->where('status', '=', Model_Order::STATUS_CREATED)->limit(1)->find(); if ($order->loaded()) { //its a fraud...lets let him know if ($order->is_fraud() === TRUE) { Alert::set(Alert::ERROR, __('We had, issues with your transaction. Please try paying with another paymethod.')); $this->redirect(Route::url('default', array('controller' => 'product', 'action' => 'checkout', 'id' => $order->id_order))); } // include class vendor require Kohana::find_file('vendor/authorize/', 'autoload'); define('AUTHORIZENET_API_LOGIN_ID', Core::config('payment.authorize_login')); define('AUTHORIZENET_TRANSACTION_KEY', Core::config('payment.authorize_key')); define('AUTHORIZENET_SANDBOX', Core::config('payment.authorize_sandbox')); $sale = new AuthorizeNetAIM(); $sale->amount = $order->amount; $sale->card_num = Core::post('card-number'); $sale->exp_date = Core::post('expiry-month') . '/' . Core::post('expiry-year'); $response = $sale->authorizeAndCapture(); if ($response->approved) { $order->confirm_payment('authorize', $response->transaction_id, NULL, NULL, NULL, Controller_Authorize::calculate_fee($order->amount)); //redirect him to his ads Alert::set(Alert::SUCCESS, __('Thanks for your payment!') . ' ' . $response->transaction_id); $this->redirect(Route::url('default', array('controller' => 'product', 'action' => 'goal', 'id' => $order->id_order))); } else { Alert::set(Alert::INFO, $response->error_message); $this->redirect(Route::url('default', array('controller' => 'product', 'action' => 'checkout', 'id' => $order->id_order))); } } else { Alert::set(Alert::INFO, __('Order could not be loaded')); $this->redirect(Route::url('default', array('controller' => 'product', 'action' => 'checkout', 'id' => $order->id_order))); } }
?> "> <i class="glyphicon glyphicon-usd"></i> <?php echo __('Mark as paid'); ?> </a> </li> </ul> <?php } ?> <?php if (Theme::get('premium') == 1) { ?> <?php echo Controller_Authorize::form($order); ?> <div class="text-right"> <ul class="list-inline"> <?php if (($pm = Paymill::button($order)) != '') { ?> <li class="text-right"><?php echo $pm; ?> </li> <?php } ?> </ul> </div>