Example #1
0
 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);
 }
 /**
  * expired featured ads
  * @return void
  */
 public static function renew()
 {
     if (Core::config('general.subscriptions') == TRUE) {
         //get expired subscription that are active
         $subscriptions = new Model_Subscription();
         $subscriptions = $subscriptions->where('status', '=', 1)->where('expire_date', '<=', Date::unix2mysql())->order_by('created', 'desc')->find_all();
         foreach ($subscriptions as $s) {
             //disable the plan
             $s->status = 0;
             try {
                 $s->save();
             } catch (Exception $e) {
                 throw HTTP_Exception::factory(500, $e->getMessage());
             }
             $plan = $s->plan;
             if ($plan->loaded() and $plan->status == 1) {
                 //generate a new order
                 $order = Model_Order::new_order(NULL, $s->user, $plan->id_plan, $plan->price, core::config('payment.paypal_currency'), __('Subscription to ') . $plan->name);
                 //free plan no checkout
                 if ($plan->price == 0) {
                     $order->confirm_payment('cash');
                 } else {
                     $paid = FALSE;
                     //customers who paid with sripe we can charge the recurrency
                     if ($order->user->stripe_agreement != NULL) {
                         StripeKO::init();
                         // Create the charge on Stripe's servers - this will charge the user's card
                         try {
                             $charge = \Stripe\Charge::create(array("amount" => StripeKO::money_format($order->amount), "currency" => $order->currency, 'customer' => $order->user->stripe_agreement, "description" => $order->description, "metadata" => array("id_order" => $order->id_order)));
                             $paid = TRUE;
                         } catch (Exception $e) {
                             // The card has been declined
                             Kohana::$log->add(Log::ERROR, 'Stripe The card has been declined');
                             $paid = FALSE;
                         }
                     }
                     if ($paid === TRUE) {
                         //mark as paid
                         $order->confirm_payment('stripe', $charge->id);
                     } else {
                         $checkout_url = $s->user->ql('default', array('controller' => 'plan', 'action' => 'checkout', 'id' => $order->id_order));
                         $s->user->email('plan-expired', array('[PLAN.NAME]' => $plan->name, '[URL.CHECKOUT]' => $checkout_url));
                     }
                 }
             }
             //if plan loaded
         }
         //end foreach
     }
     //if subscription active
 }
Example #3
0
 /**
  * [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()) {
         if (isset($_POST['stripeToken'])) {
             //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' => 'ad', 'action' => 'checkout', 'id' => $order->id_order)));
             }
             // include class vendor
             require Kohana::find_file('vendor/stripe/lib', 'Stripe');
             // Set your secret key: remember to change this to your live secret key in production
             // See your keys here https://manage.stripe.com/account
             Stripe::setApiKey(Core::config('payment.stripe_private'));
             // Get the credit card details submitted by the form
             $token = Core::post('stripeToken');
             // email
             $email = Core::post('stripeEmail');
             // Create the charge on Stripe's servers - this will charge the user's card
             try {
                 $charge = Stripe_Charge::create(array("amount" => StripeKO::money_format($order->amount), "currency" => $order->currency, "card" => $token, "description" => $order->description));
             } catch (Stripe_CardError $e) {
                 // The card has been declined
                 Kohana::$log->add(Log::ERROR, 'Stripe The card has been declined');
                 Alert::set(Alert::ERROR, 'Stripe The card has been declined');
                 $this->redirect(Route::url('default', array('controller' => 'ad', 'action' => 'checkout', 'id' => $order->id_order)));
             }
             //mark as paid
             $order->confirm_payment('stripe', Core::post('stripeToken'));
             //redirect him to his ads
             Alert::set(Alert::SUCCESS, __('Thanks for your payment!'));
             $this->redirect(Route::url('oc-panel', array('controller' => 'profile', 'action' => 'orders')));
         } else {
             Alert::set(Alert::INFO, __('Please fill your card details.'));
             $this->redirect(Route::url('default', array('controller' => 'ad', 'action' => 'checkout', 'id' => $order->id_order)));
         }
     } else {
         Alert::set(Alert::INFO, __('Order could not be loaded'));
         $this->redirect(Route::url('default', array('controller' => 'ad', 'action' => 'checkout', 'id' => $order->id_order)));
     }
 }
Example #4
0
 /**
  * [action_form] generates the form to pay at paypal
  */
 public function action_3d()
 {
     $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()) {
         //dr($_GET);
         if (Core::get('status') == 'succeeded' and Core::get('id') != NULL and ($customer_id = Session::instance()->get('customer_id')) != NULL) {
             try {
                 StripeKO::init();
                 // Create the charge on Stripe's servers - this will charge the user's card
                 $charge = \Stripe\Charge::create(array("amount" => StripeKO::money_format($order->amount), "currency" => $order->currency, 'customer' => $customer_id, "description" => $order->description, "metadata" => array("id_order" => $order->id_order)));
             } catch (Exception $e) {
                 // The card has been declined
                 Kohana::$log->add(Log::ERROR, 'Stripe The card has been declined');
                 Alert::set(Alert::ERROR, 'The card has been declined');
                 $this->redirect(Route::url('default', array('controller' => 'ad', 'action' => 'checkout', 'id' => $order->id_order)));
             }
             //its a plan product
             if ($order->id_product >= 100) {
                 //save the stripe user id to be able to charge them later on renewal
                 $order->user->stripe_agreement = $customer_id;
                 $order->user->save();
             }
             //mark as paid
             $order->confirm_payment('stripe', $charge->id);
             //redirect him to his ads
             Alert::set(Alert::SUCCESS, __('Thanks for your payment!'));
             $this->redirect(Route::url('oc-panel', array('controller' => 'profile', 'action' => 'orders')));
         } else {
             Alert::set(Alert::INFO, __('Please fill your card details.'));
             $this->redirect(Route::url('default', array('controller' => 'ad', 'action' => 'checkout', 'id' => $order->id_order)));
         }
     } else {
         Alert::set(Alert::INFO, __('Order could not be loaded'));
         $this->redirect(Route::url('default', array('controller' => 'ad', 'action' => 'checkout', 'id' => $order->id_order)));
     }
 }
                        <?php 
            if (($pm = Paymill::button($order)) != '') {
                ?>
                            <li class="text-right"><?php 
                echo $pm;
                ?>
</li>
                        <?php 
            }
            ?>
                    </ul>
                </div>
                <div class="text-right">
                    <ul class="list-inline">
                        <?php 
            if (($sk = StripeKO::button($order)) != '') {
                ?>
                            <li class="text-right"><?php 
                echo $sk;
                ?>
</li>
                        <?php 
            }
            ?>
                        <?php 
            if (($bp = Bitpay::button($order)) != '') {
                ?>
                            <li class="text-right"><?php 
                echo $bp;
                ?>
</li>
echo __('Pay with Card');
?>
"
    data-name="<?php 
echo Model_Order::product_desc($order->id_product);
?>
"
    data-description="<?php 
echo Text::limit_chars(Text::removebbcode($order->description), 30, NULL, TRUE);
?>
"
    <?if (Auth::instance()->logged_in()):?>
        data-email="<?php 
echo Auth::instance()->get_user()->email;
?>
"
    <?endif?>
    data-amount="<?php 
echo StripeKO::money_format($order->amount);
?>
"
    data-currency="<?php 
echo $order->currency;
?>
"
    <?php 
echo Core::config('payment.stripe_address') == TRUE ? 'data-address = "TRUE"' : '';
?>
    >
  </script>
</form>
Example #7
0
 /**
  * gets the payment token from stripe and marks order as paid. Methos for application fee
  */
 public function action_payconnect()
 {
     //TODO only if stripe connect enabled
     $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)->where('id_product', '=', Model_Order::PRODUCT_AD_SELL)->limit(1)->find();
     if ($order->loaded()) {
         if (isset($_POST['stripeToken'])) {
             //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' => 'ad', 'action' => 'checkout', 'id' => $order->id_order)));
             }
             // include class vendor
             require Kohana::find_file('vendor/stripe', 'init');
             // Set your secret key: remember to change this to your live secret key in production
             // See your keys here https://manage.stripe.com/account
             \Stripe\Stripe::setApiKey(Core::config('payment.stripe_private'));
             // Get the credit card details submitted by the form
             $token = Core::post('stripeToken');
             // email
             $email = Core::post('stripeEmail');
             // Create the charge on Stripe's servers - this will charge the user's card
             try {
                 //in case memberships the fee may be set on the plan ;)
                 $fee = NULL;
                 if ($order->ad->user->subscription()->loaded()) {
                     $fee = $order->ad->user->subscription()->plan->marketplace_fee;
                 }
                 $application_fee = StripeKO::application_fee($order->amount, $fee);
                 //we charge the fee only if its not admin
                 if (!$order->ad->user->is_admin()) {
                     $charge = \Stripe\Charge::create(array("amount" => StripeKO::money_format($order->amount), "currency" => $order->currency, "card" => $token, "description" => $order->description, "application_fee" => StripeKO::money_format($application_fee)), array('stripe_account' => $order->ad->user->stripe_user_id));
                 } else {
                     $charge = \Stripe\Charge::create(array("amount" => StripeKO::money_format($order->amount), "currency" => $order->currency, "card" => $token, "description" => $order->description));
                 }
             } catch (Exception $e) {
                 // The card has been declined
                 Kohana::$log->add(Log::ERROR, 'Stripe The card has been declined');
                 Alert::set(Alert::ERROR, 'Stripe The card has been declined');
                 $this->redirect(Route::url('default', array('controller' => 'ad', 'action' => 'checkout', 'id' => $order->id_order)));
             }
             //mark as paid
             $order->confirm_payment('stripe', Core::post('stripeToken'));
             //only if is not admin
             if (!$order->ad->user->is_admin()) {
                 //crete new order for the application fee so we know how much the site owner is earning ;)
                 $order_app = Model_Order::new_order($order->ad, $order->ad->user, Model_Order::PRODUCT_APP_FEE, $application_fee, core::config('payment.paypal_currency'), 'id_order->' . $order->id_order . ' id_ad->' . $order->ad->id_ad);
                 $order_app->confirm_payment('stripe', Core::post('stripeToken'));
             }
             //redirect him to his ads
             Alert::set(Alert::SUCCESS, __('Thanks for your payment!'));
             $this->redirect(Route::url('oc-panel', array('controller' => 'profile', 'action' => 'orders')));
         } else {
             Alert::set(Alert::INFO, __('Please fill your card details.'));
             $this->redirect(Route::url('default', array('controller' => 'ad', 'action' => 'checkout', 'id' => $order->id_order)));
         }
     } else {
         Alert::set(Alert::INFO, __('Order could not be loaded'));
         $this->redirect(Route::url('default', array('controller' => 'ad', 'action' => 'checkout', 'id' => $order->id_order)));
     }
 }
Example #8
0
 /**
  * [action_form] generates the form to pay at paypal
  */
 public function action_3d()
 {
     $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()) {
         //dr($_GET);
         if (Core::get('status') == 'succeeded' and Core::get('id') != NULL) {
             try {
                 // include class vendor
                 require Kohana::find_file('vendor/stripe', 'init');
                 // Set your secret key: remember to change this to your live secret key in production
                 // See your keys here https://manage.stripe.com/account
                 \Stripe\Stripe::setAppInfo('Open eShop', Core::VERSION, 'https://open-eshop.com');
                 \Stripe\Stripe::setApiKey(Core::config('payment.stripe_private'));
                 // Create the charge on Stripe's servers - this will charge the user's card
                 $charge = \Stripe\Charge::create(array("amount" => StripeKO::money_format($order->amount), "currency" => $order->currency, "card" => Core::get('id'), "description" => $order->product->title, "metadata" => array("id_order" => $order->id_order)));
                 //mark as paid
                 $order->confirm_payment('stripe', $charge->id, NULL, NULL, NULL, StripeKO::calculate_fee($order->amount));
             } catch (Exception $e) {
                 // The card has been declined
                 Kohana::$log->add(Log::ERROR, 'Stripe The card has been declined');
                 Alert::set(Alert::ERROR, 'The card has been declined');
                 $this->redirect(Route::url('default', array('controller' => 'product', 'action' => 'checkout', 'id' => $order->id_order)));
             }
             //redirect him to the goal
             Alert::set(Alert::SUCCESS, __('Thanks for your payment!'));
             $this->redirect(Route::url('default', array('controller' => 'product', 'action' => 'goal', 'id' => $order->id_order)));
         } else {
             Alert::set(Alert::INFO, __('Please fill your card details.'));
             $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)));
     }
 }
Example #9
0
?>
</strong></h4></td>
                    <?else:?>
                        <td class="text-center text-danger"><h4><strong><?php 
echo $order->id_product == Model_Order::PRODUCT_AD_SELL ? i18n::money_format($order->amount, $order->currency) : i18n::format_currency($order->amount, $order->currency);
?>
</strong></h4></td>
                    <?endif?>
                </tr>
            </tbody>
        </table>

        <?if ($order->amount>0):?>

        <?php 
echo StripeKO::button_connect($order);
?>
        
        <?if (Core::config('payment.paypal_account')!=''):?>
            <p class="text-right">
                <a class="btn btn-success btn-lg" href="<?php 
echo Route::url('default', array('controller' => 'paypal', 'action' => 'pay', 'id' => $order->id_order));
?>
">
                    <?php 
echo _e('Pay with Paypal');
?>
 <span class="glyphicon glyphicon-chevron-right"></span>
                </a>
            </p>
        <?endif?>
Example #10
0
defined('SYSPATH') or die('No direct script access.');
?>

$('#stripe_button').click(function(){
  var token = function(res){
    var $input = $('<input type=hidden name=stripeToken />').val(res.id);
    $('#stripe_form').append($input).submit();
  };

  StripeCheckout.open({
    key:         '<?php 
echo Core::config('payment.stripe_public');
?>
',
    amount:      <?php 
echo StripeKO::money_format($product->final_price());
?>
,
    currency:    '<?php 
echo $product->currency;
?>
',
    name:        '<?php 
echo $product->title;
?>
',
    description: '<?php 
echo Text::limit_chars(Text::removebbcode($product->description), 30, NULL, TRUE);
?>
',
    <?php