Example #1
0
 protected static function getIns()
 {
     if (!self::$ins instanceof CartHelper) {
         self::$ins = new CartHelper();
     }
     return self::$ins;
 }
Example #2
0
 function display($tpl = null)
 {
     $cart = unserialize(JFactory::getSession()->get('cart'));
     CartHelper::checkCart($cart);
     $setting = JModel::getInstance('setting', 'enmasseModel')->getSetting();
     $arData = array();
     $this->payGtyList = JModel::getInstance('payGty', 'enmasseModel')->listAll();
     $this->assignRef('termArticleId', $setting->article_id);
     $this->assignRef('theme', $setting->theme);
     $this->user = JModel::getInstance('user', 'enmasseModel')->getUser();
     $this->assignRef('cart', $cart);
     //get user data was save in the session
     $arData = JFactory::getApplication()->getUserState('com_enmasse.checkout.data');
     if (empty($arData)) {
         //contruct default value for the inputs
         $arData['name'] = $this->user->name;
         $arData['email'] = $this->user->email;
         $arData['receiver_name'] = "";
         $arData['receiver_email'] = "";
         $arData['receiver_msg'] = "";
         $arData['receiver_address'] = "";
         $arData['receiver_phone'] = "";
     }
     $this->arData = $arData;
     $this->_setPath('template', JPATH_SITE . DS . "components" . DS . "com_enmasse" . DS . "theme" . DS . EnmasseHelper::getThemeFromSetting() . DS . "tmpl" . DS);
     $this->_layout = "shop_checkout";
     parent::display($tpl);
 }
Example #3
0
function _displayCart()
{
    $comm_cart = array(0, 0);
    if (isset($_SESSION['cart'])) {
        $cartObj = CartHelper::getCart();
        $comm_cart[0] = $cartObj->getItemCount();
        $comm_cart[1] = $cartObj->getPrice();
    }
    return $comm_cart;
}
Example #4
0
 function onAfterRoute()
 {
     if (JFactory::getApplication()->isAdmin()) {
         return;
     }
     if (JRequest::getCmd('type') == 'onepage') {
         define('JPATH_COMPONENT', JPATH_SITE . DS . 'components' . DS . 'com_virtuemart');
         require_once JPATH_SITE . DS . 'templates' . DS . JFactory::getApplication()->getTemplate() . DS . 'html' . DS . 'com_virtuemart' . DS . 'cart' . DS . 'helper.php';
         $helper = new CartHelper();
         switch (JRequest::getCmd('opc_task')) {
             case 'set_coupon':
                 $ret = $helper->setCoupon();
                 echo json_encode($ret);
                 break;
             case 'update_form':
                 if (JRequest::getInt('update_address', 1) == 1) {
                     $helper->setAddress();
                 }
                 $ret = $helper->setPayment();
                 if (is_array($ret)) {
                     echo json_encode(array('error' => 1, 'message' => implode($ret)));
                     break;
                 }
                 $ret = $helper->setShipment();
                 if (is_array($ret)) {
                     echo json_encode(array('error' => 1, 'message' => implode($ret)));
                     break;
                 }
                 $helper->lSelectShipment();
                 $helper->lSelectPayment();
                 $data = array();
                 $data["shipments"] = $helper->shipments_shipment_rates;
                 $data["payments"] = $helper->paymentplugins_payments;
                 $data["price"] = $helper->getPrices();
                 echo json_encode($data);
                 break;
             case 'update_product':
                 $helper->setAddress();
                 $helper->updateProduct();
                 $helper->lSelectShipment();
                 $helper->lSelectPayment();
                 $data = array();
                 $data["shipments"] = $helper->shipments_shipment_rates;
                 $data["payments"] = $helper->paymentplugins_payments;
                 $data["price"] = $helper->getPrices();
                 echo json_encode($data);
                 break;
             case 'remove_product':
                 $helper->setAddress();
                 $helper->removeProduct();
                 $helper->lSelectShipment();
                 $helper->lSelectPayment();
                 $data = array();
                 $data["shipments"] = $helper->shipments_shipment_rates;
                 $data["payments"] = $helper->paymentplugins_payments;
                 $data["price"] = $helper->getPrices();
                 echo json_encode($data);
                 break;
             case 'register':
                 $ret = $helper->register();
                 echo json_encode($ret);
                 break;
             case 'set_checkout':
                 $helper->setAddress();
                 $helper->updateProduct();
                 $ret = $helper->setPayment();
                 $ret = $helper->setShipment();
                 echo json_encode(array());
                 break;
         }
         JFactory::getApplication()->close();
     }
 }
Example #5
0
<?php

/*
购物车控制器
*/
define('ACC', true);
require '../system/init.php';
//实例化购物车类和商品类
$cartObj = CartHelper::getCart();
$goods = new GoodsModel();
$act = isset($_GET['act']) ? $_GET['act'] : 'buy';
//购买商品,去结算
if ($act == 'buy') {
    if (isset($_GET['goods_id'])) {
        $goods_id = $_GET['goods_id'];
        $goods_info = $goods->find($goods_id);
        $num = isset($_GET['num']) ? $_GET['num'] + 0 : 1;
        //商品是否存在
        if (!isset($goods_info)) {
            $msg = "The ware is not exist<br>";
            include __ROOT__ . 'view/front/msg.html';
            exit;
        }
        //商品是否上架或者删除
        if ($goods_info['is_delete'] || !$goods_info['is_on_sale']) {
            $msg = "The ware is not available<br>";
            include __ROOT__ . 'view/front/msg.html';
            exit;
        }
        //商品是否有库存
        if ($cartObj->getNoByID($goods_id) + $num > $goods_info['goods_number']) {
Example #6
0
 function submitCheckOut()
 {
     $activeGuestBuying = EnmasseHelper::isGuestBuyingEnable();
     $bBuy4friend = JRequest::getVar('buy4friend', 0);
     $sEmailPt = "/^([0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\.)+[a-zA-Z]{2,9})\$/";
     //save user input data into the session
     if (JRequest::getMethod() == "POST") {
         $arData = JRequest::get('post');
         JFactory::getApplication()->setUserState("com_enmasse.checkout.data", $arData);
     }
     //check the permission for checkout action
     if (JFactory::getUser()->get('guest') && !$activeGuestBuying) {
         $msg = JText::_("MERCHANT_PLEASE_LOGIN_BEFORE");
         $redirectUrl = base64_encode("index.php?option=com_enmasse&controller=shopping&task=checkout&buy4friend={$bBuy4friend}");
         $link = JRoute::_("index.php?option=com_users&view=login&return=" . $redirectUrl, false);
         JFactory::getApplication()->redirect($link, $msg, 'error');
     }
     //validate the cart
     $cart = unserialize(JFactory::getSession()->get('cart'));
     CartHelper::checkCart($cart);
     foreach ($cart->getAll() as $cartItem) {
         $item = $cartItem->getItem();
     }
     //get enmasse setting
     $setting = JModel::getInstance('setting', 'enmasseModel')->getSetting();
     // check max cart Item
     $this->checkMaxCartItem($cart);
     //validate Buyer information
     $buyerName = JRequest::getVar('name');
     $buyerEmail = JRequest::getVar('email');
     if (empty($buyerName) || empty($buyerEmail)) {
         $msg = JText::_("SHOP_CARD_CHECKOUT_BUYER_INFORMATION_REQUIRED_MSG");
         $link = JRoute::_("index.php?option=com_enmasse&controller=shopping&task=checkout&buy4friend={$bBuy4friend}", false);
         JFactory::getApplication()->redirect($link, $msg, 'error');
     } elseif (!preg_match($sEmailPt, $buyerEmail)) {
         $msg = JText::_("SHOP_CARD_CHECKOUT_BUYER_EMAIL_INVALID_MSG");
         $link = JRoute::_("index.php?option=com_enmasse&controller=shopping&task=checkout&buy4friend={$bBuy4friend}", false);
         JFactory::getApplication()->redirect($link, $msg, 'error');
     }
     //----- If the deal permit partial payment, it mean the coupon was delivery by directly, so we need to validate address and phone number of receiver
     if ($item->prepay_percent < 100) {
         $receiverAddress = JRequest::getVar('receiver_address');
         $receiverPhone = JRequest::getVar('receiver_phone');
         if (empty($receiverPhone) || empty($receiverAddress)) {
             $msg = JText::_("SHOP_CARD_CHECKOUT_RECEIVER_INFORMATION_REQUIRED_MSG");
             $link = JRoute::_("index.php?option=com_enmasse&controller=shopping&task=checkout&buy4friend={$bBuy4friend}", false);
             JFactory::getApplication()->redirect($link, $msg, 'error');
         } else {
             if (!preg_match('/^[0-9 \\.,\\-\\(\\)\\+]*$/', $receiverPhone)) {
                 $msg = JText::_("SHOP_CARD_CHECKOUT_RECEIVER_PHONE_INVALID");
                 $link = JRoute::_("index.php?option=com_enmasse&controller=shopping&task=checkout&buy4friend={$bBuy4friend}", false);
                 JFactory::getApplication()->redirect($link, $msg, 'error');
             }
         }
     }
     if ($bBuy4friend) {
         $receiverName = JRequest::getVar('receiver_name');
         $receiverEmail = JRequest::getVar('receiver_email');
         $receiverMsg = JRequest::getVar('receiver_msg');
         if (empty($receiverName) || empty($receiverEmail)) {
             $msg = JText::_("SHOP_CARD_CHECKOUT_RECEIVER_INFORMATION_REQUIRED_MSG");
             $link = JRoute::_("index.php?option=com_enmasse&controller=shopping&task=checkout&buy4friend={$bBuy4friend}", false);
             JFactory::getApplication()->redirect($link, $msg, 'error');
         } elseif (!preg_match($sEmailPt, $receiverEmail)) {
             $msg = JText::_("SHOP_CARD_CHECKOUT_RECEIVER_EMAIL_INVALID_MSG");
             $link = JRoute::_("index.php?option=com_enmasse&controller=shopping&task=checkout&buy4friend={$bBuy4friend}", false);
             JFactory::getApplication()->redirect($link, $msg, 'error');
         }
     }
     //------------------------------------------------------
     // to check it this deal is free for customer
     if ($cart->getTotalPrice() > 0) {
         //deal is not free
         $payGtyId = JRequest::getVar('payGtyId');
         if ($payGtyId == null) {
             $msg = JText::_("SELECT_PAYMENT_MSG");
             $link = JRoute::_("index.php?option=com_enmasse&controller=shopping&task=checkout&buy4friend={$bBuy4friend}", false);
             JFactory::getApplication()->redirect($link, $msg, 'error');
         }
         if ($setting->article_id != 0 && JRequest::getVar('terms') == false) {
             $msg = JText::_("AGREE_TERM_CONDITION_MSG");
             $link = JRoute::_("index.php?option=com_enmasse&controller=shopping&task=checkout&buy4friend={$bBuy4friend}", false);
             JFactory::getApplication()->redirect($link, $msg, 'error');
         }
         $payGty = JModel::getInstance('payGty', 'enmasseModel')->getById($payGtyId);
         // checking gateway configuration
         if (CartHelper::checkGty($payGty) == false) {
             $msg = JText::_("PAYMENT_INCOMPLETE_MSG");
             $link = JRoute::_("index.php?option=com_enmasse&controller=shopping&task=checkout&buy4friend={$bBuy4friend}", false);
             JFactory::getApplication()->redirect($link, $msg);
         }
         // save gty info into session
         JFactory::getSession()->set('payGty', serialize($payGty));
         JFactory::getSession()->set('attribute_config', json_encode($payGty->attribute_config));
         //--------If admin set the prepay_percent of the deal to 0.00, set the order status to 'Paid' (with paid_amount is 0.00)
         if ($item->prepay_percent == 0.0) {
             $status = EnmasseHelper::$ORDER_STATUS_LIST['Paid'];
             $couponStatus = EnmasseHelper::$INVTY_STATUS_LIST['Hold'];
         } else {
             //------------------------------------
             // generate name of payment gateway file and class
             $payGtyFile = 'PayGty' . ucfirst($payGty->class_name) . '.class.php';
             $className = 'PayGty' . ucfirst($payGty->class_name);
             //---------------------------------------------------
             // get payment gateway object
             require_once JPATH_SITE . DS . "components" . DS . "com_enmasse" . DS . "helpers" . DS . "payGty" . DS . $payGty->class_name . DS . $payGtyFile;
             $paymentClassObj = new $className();
             $paymentReturnStatusObj = $paymentClassObj->returnStatus();
             $status = $paymentReturnStatusObj->order;
             $couponStatus = $paymentReturnStatusObj->coupon;
         }
     } else {
         //deal is free
         $payGty = "Free";
         $status = 'Unpaid';
         $couponStatus = 'Pending';
         //save the payGty as free
         JFactory::getSession()->set('payGty', 'Free');
     }
     //----------------------------------------
     //determine information of coupon receiver
     if ($bBuy4friend) {
         $deliveryDetail = array('name' => $receiverName, 'email' => $receiverEmail, 'msg' => $receiverMsg, 'address' => $receiverAddress, 'phone' => $receiverPhone);
     } else {
         $deliveryDetail = array('name' => $buyerName, 'email' => $buyerEmail, 'msg' => '', 'address' => $receiverAddress, 'phone' => $receiverPhone);
     }
     //--------------------------
     //generate order
     $dvrGty = $item->prepay_percent < 100 ? 2 : 1;
     $deliveryGty = JModel::getInstance('deliveryGty', 'enmasseModel')->getById($dvrGty);
     $user = array();
     $user['id'] = JFactory::getUser()->get('id', 0);
     $user['name'] = $buyerName;
     $user['email'] = $buyerEmail;
     $order = CartHelper::saveOrder($cart, $user, $payGty, null, $deliveryGty, $deliveryDetail, $status);
     $session =& JFactory::getSession();
     $session->set('newOrderId', $order->id);
     $orderItemList = CartHelper::saveOrderItem($cart, $order, $status);
     //-----------------------------
     // if this deal is set limited the coupon to sold out, go to invty and allocate coupons for this order
     // if not create coupons for that order
     if ($item->max_coupon_qty > 0) {
         $now = DatetimeWrapper::getDatetimeOfNow();
         $nunOfSecondtoAdd = EnmasseHelper::getMinuteReleaseInvtyFromSetting($payGty) * 60;
         $intvy = CartHelper::allocatedInvty($orderItemList, DatetimeWrapper::mkFutureDatetimeSecFromNow($now, $nunOfSecondtoAdd), $couponStatus);
     } else {
         JModel::getInstance('invty', 'enmasseModel')->generateForOrderItem($orderItemList[0]->pdt_id, $orderItemList[0]->id, $orderItemList[0]->qty, $couponStatus);
     }
     //------------------------
     //generate integration class
     $isPointSystemEnabled = EnmasseHelper::isPointSystemEnabled();
     if ($isPointSystemEnabled) {
         $integrationClass = EnmasseHelper::getPointSystemClassFromSetting();
         $integrateFileName = $integrationClass . '.class.php';
         require_once JPATH_SITE . DS . "components" . DS . "com_enmasse" . DS . "helpers" . DS . "pointsystem" . DS . $integrationClass . DS . $integrateFileName;
         $user = JFactory::getUser();
         $user_id = $user->get('id');
         $point = $cart->getPoint();
         if ($point > 0) {
             $integrationObject = new $integrationClass();
             $integrationObject->integration($user_id, 'paybypoint', $point);
         }
     }
     //validating is ok, flush user data
     JFactory::getApplication()->setUserState("com_enmasse.checkout.data", null);
     // --------------------------------
     // if deal is free then directly do the notify
     if ($cart->getTotalPrice() > 0) {
         //deal is not free, check if buyer must prepay a specific amount
         if ($item->prepay_percent > 0) {
             $link = JRoute::_("index.php?option=com_enmasse&controller=payment&task=gateway&orderId=" . $order->id, false);
         } else {
             //do notify for the order that not to prepay
             EnmasseHelper::doNotify($order->id);
             $link = JRoute::_("index.php?option=com_enmasse&controller=deal&task=listing");
             $msg = JText::_("PARTIAL_PAYMENT_NO_PREPAY_CHECKOUT_MSG");
             JFactory::getApplication()->redirect($link, $msg);
         }
     } else {
         //deal is free
         $link = JRoute::_("index.php?option=com_enmasse&controller=payment&task=doNotify&orderId={$order->id}", false);
     }
     JFactory::getApplication()->redirect($link);
 }
Example #7
0
 function onAfterRoute()
 {
     if (JFactory::getApplication()->isAdmin()) {
         return;
     }
     if (JRequest::getCmd('type') == 'onepage') {
         define('JPATH_COMPONENT', JPATH_SITE . DS . 'components' . DS . 'com_virtuemart');
         require_once dirname(__FILE__) . DS . 'cart' . DS . 'tmpl' . DS . 'helper.php';
         $helper = new CartHelper();
         switch (JRequest::getCmd('opc_task')) {
             case 'set_coupon':
                 $ret = $helper->setCoupon();
                 echo json_encode($ret);
                 break;
             case 'update_form':
                 if (JRequest::getInt('update_address', 1) == 1) {
                     $helper->setAddress();
                 }
                 $ret = $helper->setPayment();
                 if (is_array($ret)) {
                     echo json_encode(array('error' => 1, 'message' => implode($ret)));
                     break;
                 }
                 $ret = $helper->setShipment();
                 if (is_array($ret)) {
                     echo json_encode(array('error' => 1, 'message' => implode($ret)));
                     break;
                 }
                 $helper->lSelectShipment();
                 $helper->lSelectPayment();
                 $data = array();
                 $data["shipments"] = $helper->shipments_shipment_rates;
                 $data["payments"] = $helper->paymentplugins_payments;
                 $data["paymentsnew"] = $helper->getpayments();
                 $data["price"] = $helper->getPrices();
                 echo json_encode($data);
                 break;
             case 'update_product':
                 $helper->setAddress();
                 $helper->updateProduct();
                 $helper->lSelectShipment();
                 $helper->lSelectPayment();
                 $data = array();
                 $data["shipments"] = $helper->shipments_shipment_rates;
                 $data["payments"] = $helper->paymentplugins_payments;
                 $data["paymentsnew"] = $helper->getpayments();
                 $data["price"] = $helper->getPrices();
                 echo json_encode($data);
                 break;
             case 'remove_product':
                 $helper->setAddress();
                 $helper->removeProduct();
                 $helper->lSelectShipment();
                 $helper->lSelectPayment();
                 $data = array();
                 $data["shipments"] = $helper->shipments_shipment_rates;
                 $data["payments"] = $helper->paymentplugins_payments;
                 $data["paymentsnew"] = $helper->getpayments();
                 $data["price"] = $helper->getPrices();
                 echo json_encode($data);
                 break;
             case 'register':
                 $ret = $helper->register();
                 echo json_encode($ret);
                 break;
             case 'set_checkout':
                 $helper->setAddress();
                 $ret = $helper->setPayment();
                 $ret = $helper->setShipment();
                 echo json_encode(array());
                 break;
             case 'login':
                 if ($return = JRequest::getVar('return')) {
                     $return = base64_decode($return);
                     if (!JURI::isInternal($return)) {
                         $return = '';
                     }
                 }
                 $options = array();
                 $options['remember'] = false;
                 $options['return'] = $return;
                 $credentials = array();
                 $credentials['username'] = JRequest::getVar('username');
                 $credentials['password'] = JRequest::getString('passwd');
                 $mainframe = JFactory::getApplication();
                 //preform the login action
                 $response = $mainframe->login($credentials, $options);
                 if ($response == false) {
                     echo "error";
                 }
                 break;
         }
         JFactory::getApplication()->close();
     }
     $document = JFactory::getDocument();
     $app = JFactory::getApplication();
     $template = $app->getTemplate(true);
     if (!class_exists('VmConfig')) {
         require JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart' . DS . 'helpers' . DS . 'config.php';
     }
     VmConfig::loadConfig();
     $uri = JFactory::getURI();
     $post = JRequest::get('post');
     $_option = JRequest::getString('option');
     $_view = JRequest::getString('view');
     $_format = JRequest::getString('format', '');
     $_task = JRequest::getString('task', '');
     $_tmpl = JRequest::getString('tmpl', '');
     if ($_option == 'com_virtuemart' && $_view == 'cart' && $_format != 'json') {
         require_once dirname(__FILE__) . DS . 'cart' . DS . 'cartview.html.php';
     }
 }