Esempio n. 1
0
 function generateOrderParams($msc_id, $price, $payment_mode, $msc_option)
 {
     $params = array();
     $params['msc_id'] = $msc_id;
     if ($payment_mode == 'a') {
         $payment = oseMscAddon::getExtInfo($msc_id, 'payment', 'array');
         $payment = $payment[$msc_option];
         if (oseObject::getValue($payment, 'has_trial')) {
             $params['has_trial'] = 1;
             $params['a1'] = $price;
             $params['p1'] = oseObject::getValue($payment, 'p1');
             $params['t1'] = oseObject::getValue($payment, 't1');
             $params['a3'] = oseObject::getValue($payment, 'a3');
             $params['p3'] = oseObject::getValue($payment, 'p3');
             $params['t3'] = oseObject::getValue($payment, 't3');
         } else {
             $params['has_trial'] = 0;
             $params['a3'] = $price;
             $params['p3'] = oseObject::getValue($payment, 'p3');
             $params['t3'] = oseObject::getValue($payment, 't3');
         }
     }
     if ($payment_mode == 'm') {
         $payment = oseMscAddon::getExtInfo($msc_id, 'payment', 'array');
         $payment = $payment[$msc_option];
         $params['recurrence_mode'] = 'period';
         $params['a3'] = $price;
         $params['p3'] = oseObject::getValue($payment, 'p3');
         $params['t3'] = oseObject::getValue($payment, 't3');
         $params['eternal'] = oseObject::getValue($payment, 'eternal');
     }
     $params['msc_option'] = $msc_option;
     return $params;
 }
 function drawSubLeaf($node)
 {
     $item = self::generateSubMsc($node);
     $array = array();
     $payment = oseMscAddon::getExtInfo(oseObject::getValue($node, 'id'), 'payment', 'obj');
     $price = oseObject::getValue($item, 'standard_price') . ' for every ' . oseObject::getValue($item, 'standard_recurrence');
     if ($payment->has_trial) {
         $price .= ' (' . oseObject::getValue($item, 'trial_price') . ' in the first ' . oseObject::getValue($item, 'trial_recurrence') . ')';
     }
     if (strtolower($payment->payment_mode) == 'm') {
         $array['button'] = $this->drawButton($node, 'm', JText::_('Manual Renewal'));
     } elseif (strtolower($payment->payment_mode) == 'a') {
         $array['button'] = $this->drawButton($node, 'a', JText::_('Automatic Renewal'));
     } else {
         $array['button'] = $this->drawButton($node, 'm', JText::_('Manual Renewal'));
         $array['button'] .= $this->drawButton($node, 'a', JText::_('Automatic Renewal'));
     }
     $array['title'] = $this->drawSubTitle('<p>|__' . oseObject::getValue($item, 'title') . "</p>");
     $array['price'] = $this->drawPrice(oseObject::getValue($item, 'price'));
     $array['period'] = $this->drawPeriod(oseObject::getValue($item, 'period'));
     $array = implode("\r\n", $array);
     return $array;
 }
Esempio n. 3
0
 function getEmailVariablesReceipt($order_id, $user_id = null)
 {
     $db = oseDB::instance();
     $content = array();
     // get Order Info
     $payment = oseRegistry::call('payment');
     $where = array();
     $where[] = "order_id = {$order_id}";
     $orderInfo = $payment->getOrder($where, 'obj');
     $orderInfoParams = oseJson::decode($orderInfo->params);
     $paymentInfo = oseMscAddon::getExtInfo($orderInfo->entry_id, 'payment', 'obj');
     $member = oseRegistry::call('member');
     $member->instance($orderInfo->user_id);
     $userInfo = $member->getBillingInfo('obj');
     $userInfo->email = $userInfo->user_email;
     $orderInfo->subtotal = $orderInfoParams->subtotal;
     $orderInfo->total = $orderInfoParams->recurrence_times > 1 ? $orderInfoParams->next_total : $orderInfoParams->total;
     $orderInfo->discount = isset($orderInfoParams->discount) ? $orderInfoParams->discount : 0;
     $gw = $payment->getInstance('GateWay');
     $gwInfo = $gw->getGWInfo($orderInfo->payment_method);
     if (!empty($gwInfo)) {
         if ($gwInfo->is_cc) {
             $orderInfo->payment_method = 'Credit Card';
         }
     }
     $orderInfo->itemlist = $this->generateOrderTable($order_id, $orderInfo->user_id);
     if ($orderInfo->payment_mode == 'm') {
         $orderInfo->payment_mode = JText::_('Manual Billing');
         $orderInfo->gross_tax = oseObject::getValue($orderInfoParams, 'gross_tax', '0.00');
         if ($orderInfo->gross_tax > 0) {
             $orderInfo->vat_number = oseObject::getValue($orderInfoParams, 'vat_number');
         }
     } else {
         $orderInfo->payment_mode = JText::_('Automatic Billing');
         $params = oseJson::decode($orderInfo->params);
         $price = null;
         if (oseObject::getValue($orderInfoParams, 'has_trial', 0)) {
             if (oseObject::getValue($orderInfoParams, 'recurrence_times', 0) <= 1) {
                 $orderInfo->gross_tax = oseObject::getValue($orderInfoParams, 'gross_tax', '0.00');
             } else {
                 $orderInfo->gross_tax = oseObject::getValue($orderInfoParams, 'next_gross_tax', '0.00');
             }
         } else {
             if (oseObject::getValue($orderInfoParams, 'recurrence_times', 0) <= 2) {
                 $orderInfo->gross_tax = oseObject::getValue($orderInfoParams, 'gross_tax', '0.00');
             } else {
                 $orderInfo->gross_tax = oseObject::getValue($orderInfoParams, 'next_gross_tax', '0.00');
             }
         }
         $orderInfo->vat_number = oseObject::getValue($orderInfoParams, 'vat_number');
         $orderInfo->recurring_price = $orderInfo->payment_currency . ' ' . $orderInfoParams->next_total;
         $orderInfo->recurring_frequency = $orderInfoParams->p3 . ' ' . $orderInfoParams->t3;
     }
     $query = "SELECT entry_id FROM `#__osemsc_order_item` WHERE `order_id` = " . $order_id;
     $db->setQuery($query);
     $msc_id = $db->loadResult();
     $query = " SELECT *,DATE_SUB(`expired_date`,INTERVAL 1 DAY) AS `real_expired_date` " . " FROM `#__osemsc_member`" . " WHERE member_id = {$orderInfo->user_id} AND msc_id={$msc_id}";
     $db->setQuery($query);
     $memberInfo = oseDB::loadItem('obj');
     $query = "SELECT * FROM `#__osemsc_acl` WHERE `id` = {$msc_id}";
     $db->setQuery($query);
     $mscInfo = oseDB::loadItem('obj');
     $memberInfo->msc_title = $mscInfo->title;
     $memberInfo->msc_des = $mscInfo->description;
     $orderInfo->current_date = oseHTML::getDateTime();
     $globalConfig = oseRegistry::call('msc')->getConfig('global', 'obj');
     if (!empty($globalConfig->DateFormat)) {
         $memberInfo->start_date = date($globalConfig->DateFormat, strtotime($memberInfo->start_date));
         $orderInfo->create_date = date($globalConfig->DateFormat, strtotime($orderInfo->create_date));
         $orderInfo->current_date = date($globalConfig->DateFormat, strtotime($orderInfo->current_date));
     }
     $content['user'] = $userInfo;
     $content['order'] = $orderInfo;
     $content['profile'] = $member->getProfile();
     $content['member'] = $memberInfo;
     return $content;
 }
 function addVmOrder($msc_id, $member_id, $params, $order_number)
 {
     if (empty($member_id)) {
         $result['success'] = false;
         $result['title'] = 'Error';
         $result['content'] = JText::_('Error');
         return $result;
     }
     // Get the IP Address
     if (!empty($_SERVER['REMOTE_ADDR'])) {
         $ip = $_SERVER['REMOTE_ADDR'];
     } else {
         $ip = 'unknown';
     }
     $post = JRequest::get('post');
     $payment_mode = $params['payment_mode'];
     $payment_method = $params['payment_method'];
     //Insert the vm order table(#__vm_orders)
     $order = array();
     //get membership price
     $payment = oseRegistry::call('payment');
     $paymentInfo = oseMscAddon::getExtInfo($msc_id, 'payment', 'obj');
     if ($payment_mode == 'm') {
         $order_subtotal = $paymentInfo->price;
     } else {
         $order_subtotal = empty($paymentInfo->has_trial) ? $paymentInfo->a3 : $paymentInfo->a1;
     }
     $order['order_subtotal'] = $params['payment_price'];
     $order_total = $params['payment_price'];
     $order['order_total'] = $order_total;
     $db = oseDB::instance();
     //$order['order_tax'] = '0.00';
     $query = "SELECT user_info_id FROM `#__vm_user_info` WHERE `user_id` = '" . (int) $member_id . "'  AND (`address_type` = 'BT' OR `address_type` IS NULL)";
     $db->setQuery($query);
     $result = $db->loadResult();
     $hash_secret = "VirtueMartIsCool";
     $user_info_id = empty($result) ? md5(uniqid($hash_secret)) : $result;
     $vendor_id = '1';
     $order['user_id'] = $member_id;
     $order['vendor_id'] = $vendor_id;
     $order['user_info_id'] = $user_info_id;
     $order['order_number'] = $order_number;
     $order['order_currency'] = !empty($payment->currency) ? $payment->currency : "USD";
     $order['order_status'] = 'C';
     $order['cdate'] = time();
     $order['ip_address'] = $ip;
     $keys = array_keys($order);
     $keys = '`' . implode('`,`', $keys) . '`';
     foreach ($order as $key => $value) {
         $order[$key] = $db->Quote($value);
     }
     $values = implode(',', $order);
     $query = "INSERT INTO `#__vm_orders` ({$keys}) VALUES ({$values});";
     $db->setQuery($query);
     if (!oseDB::query()) {
         $result = array();
         $result['success'] = false;
         $result['title'] = 'Error';
         $result['content'] = JText::_('Error');
     }
     //Insert the #__vm_order_history table
     $order_id = $db->insertid();
     $history = array();
     $history['order_id'] = $order_id;
     $history['order_status_code'] = 'C';
     $history['date_added'] = date("Y-m-d G:i:s", time());
     $history['customer_notified'] = '1';
     $keys = array_keys($history);
     $keys = '`' . implode('`,`', $keys) . '`';
     foreach ($history as $key => $value) {
         $history[$key] = $db->Quote($value);
     }
     $values = implode(',', $history);
     $query = "INSERT INTO `#__vm_order_history` ({$keys}) VALUES ({$values});";
     $db->setQuery($query);
     if (!oseDB::query()) {
         $result = array();
         $result['success'] = false;
         $result['title'] = 'Error';
         $result['content'] = JText::_('Error');
     }
     //Insert the Order payment info
     $payment = array();
     $payment['order_id'] = $order_id;
     $payment['payment_method_id'] = $payment_method;
     if ($payment_method == 'authorize') {
     }
     //Insert the User Bill
     $bill = array();
     $query = " SELECT * FROM `#__osemsc_billinginfo`" . " WHERE user_id = {$member_id}";
     $db->setQuery($query);
     $billInfo = oseDB::loadItem();
     if (isset($billInfo)) {
         $bill['company'] = $billInfo['company'];
         $bill['address_1'] = $billInfo['addr1'];
         $bill['address_2'] = $billInfo['addr2'];
         $bill['city'] = $billInfo['city'];
         $bill['state'] = $billInfo['state'];
         $bill['country'] = $billInfo['country'];
         //get vm country code
         $query = " SELECT country_3_code FROM `#__vm_country` WHERE `country_2_code` = '{$bill['country']}' ";
         $db->setQuery($query);
         $country_code = $db->loadResult();
         $bill['country'] = empty($country_code) ? $bill['country'] : $country_code;
         //get vm state code
         $query = " SELECT state_2_code FROM `#__vm_state` WHERE `state_name` = '{$bill['state']}' ";
         $db->setQuery($query);
         $state_code = $db->loadResult();
         $bill['state'] = empty($state_code) ? $bill['state'] : $state_code;
         $bill['zip'] = $billInfo['postcode'];
         $bill['phone_1'] = $billInfo['telephone'];
     }
     $query = " SELECT * FROM `#__osemsc_userinfo_view`" . " WHERE user_id = {$member_id}";
     $db->setQuery($query);
     $userInfo = oseDB::loadItem();
     $bill['order_id'] = $order_id;
     $bill['user_id'] = $member_id;
     $bill['address_type'] = 'BT';
     $bill['address_type_name'] = '-default-';
     $bill['last_name'] = $userInfo['lastname'];
     $bill['first_name'] = $userInfo['firstname'];
     $bill['user_email'] = $userInfo['email'];
     $keys = array_keys($bill);
     $keys = '`' . implode('`,`', $keys) . '`';
     foreach ($bill as $key => $value) {
         $bill[$key] = $db->Quote($value);
     }
     $values = implode(',', $bill);
     $query = "INSERT INTO `#__vm_order_user_info` ({$keys}) VALUES ({$values});";
     $db->setQuery($query);
     if (!oseDB::query()) {
         $result = array();
         $result['success'] = false;
         $result['title'] = 'Error';
         $result['content'] = JText::_('Error');
     }
     //Insert the itme table(#__vm_order_item)
     $item = array();
     $item['order_id'] = $order_id;
     $item['user_info_id'] = $user_info_id;
     $item['vendor_id'] = $vendor_id;
     //get the product info
     $vm = oseMscAddon::getExtInfo($msc_id, 'vm', 'obj');
     $query = " SELECT * FROM `#__vm_product` WHERE `product_id` = '{$vm->product_id}' ";
     $db->setQuery($query);
     $product = $db->loadObject();
     $item['product_id'] = $vm->product_id;
     $item['order_item_sku'] = $product->product_sku;
     $item['order_item_name'] = $product->product_name;
     $item['product_quantity'] = '1';
     $item['product_item_price'] = $order_subtotal;
     $item['product_final_price'] = $order_total;
     $item['order_item_currency'] = !empty($payment->currency) ? $payment->currency : "USD";
     $item['order_status'] = 'C';
     $item['cdate'] = time();
     $keys = array_keys($item);
     $keys = '`' . implode('`,`', $keys) . '`';
     foreach ($item as $key => $value) {
         $item[$key] = $db->Quote($value);
     }
     $values = implode(',', $item);
     $query = "INSERT INTO `#__vm_order_item` ({$keys}) VALUES ({$values});";
     $db->setQuery($query);
     if (!oseDB::query()) {
         $result = array();
         $result['success'] = false;
         $result['title'] = 'Error';
         $result['content'] = JText::_('Error');
     }
     $result = array();
     $result['success'] = true;
     $result['title'] = 'Done';
     $result['content'] = JText::_('Done');
     return $result;
 }
Esempio n. 5
0
	function generateOrder($member_id, $payment_method, $orderPaymentInfo) {
		return oseRegistry::call('msc')->runAddonAction('register.payment.save', array('member_id' => $member_id, 'payment_method' => $payment_method), true, false);
		$result = array();
		if (empty($member_id)) {
			$result['success'] = false;
			$result['title'] = 'Error';
			$result['content'] = JText::_('Error');
			return $result;
		}
		$paymentOrder = oseRegistry::call('payment')->getInstance('Order');
		$params = array();
		$items = $orderPaymentInfo['items'];
		unset($orderPaymentInfo['items']);
		$order_number = $paymentOrder->generateOrderNumber($member_id);
		$orderPaymentInfo['order_number'] = $order_number;
		$orderPaymentInfo['entry_type'] = 'msc_list';
		$orderPaymentInfo['create_date'] = oseHTML::getDateTime();//date("Y-m-d H:i:s");
		$orderPaymentInfo['payment_serial_number'] = substr($orderPaymentInfo['order_number'], 0, 20);
		$orderPaymentInfo['payment_method'] = 'system';
		$orderPaymentInfo['payment_from'] = 'system_admin';
		$orderPaymentInfo['payment_mode'] = 'm';
		oseObject::setParams($orderPaymentInfo, array('time_stamp' => uniqid("{$member_id}_", true)));
		// Extra Order Params Updating Function
		$list = oseMscAddon::getAddonList('register_order', true, 1, 'obj');
		foreach ($list as $addon) {
			$action_name = 'register_order.' . $addon->name . '.add';
			//echo $action_name;
			$params = oseMscAddon::runAction($action_name, $orderPaymentInfo['params'], true, false);
		}
		// generate Order
		$updated = $paymentOrder->generateOrder('', $member_id, $orderPaymentInfo);
		if (!$updated) {
			$result['success'] = false;
			$result['title'] = 'Error';
			$result['content'] = JText::_('Error');
			return $result;
		}
		// generate orer item
		// in the backend, only manual payment
		$order_id = $result['order_id'] = $updated;
		$payment_mode = 'm';
		foreach ($items as $item) {
			$itemParams = array();
			$entry_type = oseObject::getValue($item, 'entry_type');
			switch ($entry_type) {
			case ('license'):
				$license_id = oseObject::getValue($item, 'entry_id');
				$license = oseRegistry::call('lic')->getInstance(0);
				$licenseInfo = $license->getKeyInfo($license_id, 'obj');
				$licenseInfoParams = oseJson::decode($licenseInfo->params);
				$msc_id = $licenseInfoParams->msc_id;
				break;
			case ('msc'):
				$msc_id = oseObject::getValue($item, 'entry_id');
				break;
			}
			$msc_option = oseObject::getValue($item, 'msc_option');
			if (oseObject::getValue($item, 'eternal')) {
				$itemParams['payment_mode'] = 'm';
			} else {
				$itemParams['payment_mode'] = 'm';
			}
			$price = oseObject::getValue($item, 'a3');
			if ($payment_mode == 'a') {
				if (oseObject::getValue($item, 'has_trial')) {
					$price = oseObject::getValue($item, 'a1');
				}
			}
			$itemParams['entry_type'] = oseObject::getValue($item, 'entry_type');
			$itemParams['payment_price'] = 0;//oseObject::getValue($item,'first_raw_price');
			$itemParams['payment_currency'] = $orderPaymentInfo['payment_currency'];
			$itemParams['create_date'] = oseHTML::getDateTime();//date("Y-m-d H:i:s");
			$price_params = $paymentOrder->generateOrderParams($msc_id, $price, $payment_mode, $msc_option);
			$price_params['start_date'] = oseObject::getValue($item, 'start_date', null);
			$price_params['expired_date'] = oseObject::getValue($item, 'expired_date', null);
			$itemParams['params'] = oseJSON::encode($price_params);
			$paymentInfos = oseMscAddon::getExtInfo($msc_id, 'payment', 'obj');
			$paymentInfo = oseObject::getValue($paymentInfos, $msc_option);
			$updated = $paymentOrder->generateOrderItem($order_id, oseObject::getValue($item, 'entry_id'), $itemParams);
		}
		if ($updated) {
			$result['success'] = true;
			$result['title'] = JText::_('Done');
			$result['content'] = JText::_('Done');
		} else {
			$result['success'] = false;
			$result['title'] = 'Error';
			$result['content'] = JText::_('Order Generate Error');
		}
		return $result;
	}
	private static function saveOS( $params )
	{
		$result = array();

    	$post = JRequest::get('post');

    	$member_id = $params['member_id'];
		$payment_method = $params['payment_method'];
		//oseExit($params);
    	JRequest::setVar('member_id',$member_id);

    	if(empty($member_id))
    	{
			$result['success'] = false;
			$result['title'] = 'Error';
			$result['content'] = JText :: _('Error');

			return $result;
    	}

    	$params = array();

    	$paymentCart = oseMscPublic::getCart();
		$subtotal = $paymentCart->getSubtotal();

		$items = $paymentCart->get('items');

		$osePaymentCurrency = $paymentCart->get('currency');

		$payment = oseRegistry::call('payment');

		$keys = array_keys($items);
    	$payment_mode = $paymentCart->getParams('payment_mode');

		$order_number = $payment->generateOrderNumber( $member_id );

		$params['entry_type'] = 'msc_list';
		$params['payment_price'] = $subtotal;
		$params['payment_currency'] = $osePaymentCurrency;
        $params['order_number'] = $order_number;
        $params['create_date'] = oseHTML::getDateTime();//date("Y-m-d H:i:s");
		$params['payment_serial_number'] = substr($order_number,0,20);
		$params['payment_method'] = $payment_method;
		$params['payment_mode'] = $payment_mode;

		//$paymentOrder->__construct('#__osemsc_order_item');

		$params['params'] = array();
		foreach($items as $item)
		{
			$entry_type = oseObject::getValue($item,'entry_type');

			switch($entry_type)
			{
				case('license'):
					$license_id = oseObject::getValue($item,'entry_id');

					$license = oseRegistry::call('lic')->getInstance(0);
					$licenseInfo = $license->getKeyInfo($license_id,'obj');
					//oseExit($item);
					$licenseInfoParams = oseJson::decode($licenseInfo->params);

					$msc_id = $licenseInfoParams->msc_id;
				break;

				case('msc'):
					$msc_id = oseObject::getValue($item,'entry_id');
				break;
			}
			$msc_option = oseObject::getValue($item,'msc_option');

			$paymentInfos = oseRegistry::call('msc')->getExtInfo($msc_id,'payment','obj');
			$paymentInfo = oseObject::getValue($paymentInfos,$msc_option);

			$price = $paymentInfo->a3;
			if($payment_mode == 'a')
			{
				if($paymentInfo->has_trial)
				{
					$price = $paymentInfo->a1;
				}
			}

			$price = $payment->pricing($price,$msc_id,$osePaymentCurrency);

			$params['params'] = $payment->generateOrderParams($msc_id,$price,$payment_mode,$msc_option);
		}

		//oseExit($params['params']);
		$params['params']['total'] = $paymentCart->get('total');
		$params['params']['discount'] = $paymentCart->get('discount');
		$params['params']['subtotal'] = $subtotal;
		$params['params']['next_subtotal'] = $paymentCart->get('next_subtotal');
    	$params['params'] = oseJSON::encode($params['params']);

		//$config = oseRegistry::call('msc')->getConfig('payment','obj');
        //$params['payment_from'] = $config->payment_system;


		$paymentOrder = $payment->getInstance('Order');
		$updated = $paymentOrder->generateOrder('', $member_id, $params);

		if($updated)
		{
			$order_id = $updated;

			JRequest::setVar('order_id',$order_id);
		}
		else
		{
			$result['success'] = false;
			$result['title'] = 'Error';
			$result['content'] = JText :: _('Error');

			return $result;
		}

		//$paymentOrder->__construct('#__osemsc_order_item');
		foreach($items as $item)
		{
			$itemParams = array();

			$entry_type = oseObject::getValue($item,'entry_type');

			switch($entry_type)
			{
				case('license'):
					$license_id = oseObject::getValue($item,'entry_id');

					$license = oseRegistry::call('lic')->getInstance(0);
					$licenseInfo = $license->getKeyInfo($license_id,'obj');
					//oseExit($item);
					$licenseInfoParams = oseJson::decode($licenseInfo->params);

					$msc_id = $licenseInfoParams->msc_id;
				break;

				case('msc'):
					$msc_id = oseObject::getValue($item,'entry_id');
				break;
			}
			$msc_option = oseObject::getValue($item,'msc_option');

			$paymentInfos = oseRegistry::call('msc')->getExtInfo($msc_id,'payment','obj');
			$paymentInfo = oseObject::getValue($paymentInfos,$msc_option);

			$price = $paymentInfo->a3;
			if($payment_mode == 'a')
			{
				if($paymentInfo->has_trial)
				{
					$price = $paymentInfo->a1;
				}
			}

			$price = $payment->pricing($price,$msc_id,$osePaymentCurrency);

			$itemParams['entry_type'] = oseObject::getValue($item,'entry_type');
			$itemParams['payment_price'] = oseObject::getValue($item,'first_raw_price');
			$itemParams['payment_currency'] = $osePaymentCurrency;
	        $itemParams['create_date'] = oseHTML::getDateTime();//date("Y-m-d H:i:s");

	        $price_params = $payment->generateOrderParams($msc_id,$price,$payment_mode,$msc_option);
	        //$itemParams['msc_id'] = $msc_id;
	        $itemParams['params'] = oseJSON::encode($price_params);

	        $paymentInfos = oseMscAddon::getExtInfo($msc_id,'payment','obj');
	        $paymentInfo = oseObject::getValue($paymentInfos,$msc_option);

	        if ( $paymentInfo->payment_mode == $payment_mode || $paymentInfo->payment_mode == 'b')
			{
				$itemParams['payment_mode'] = $payment_mode;
			}
			else
			{
				$itemParams['payment_mode'] = $paymentInfo->payment_mode;
			}

			$updated = $paymentOrder->generateOrderItem($order_id,oseObject::getValue($item,'entry_id'), $itemParams);
		}
		//$paymentOrder->__construct('#__osemsc_order');

		if($updated)
		{
			/*
			$vmorder=self::AddVmOrder($msc_id,$params,$order_number,$paymentInfo);
			if(!$vmorder['success'])
			{
				return $vmorder;
			}
			*/
			$result['success'] = true;
			$result['title'] = JText :: _('Done');
			$result['content'] = JText :: _('Done');
		}
		else
		{
			$result['success'] = false;
			$result['title'] = 'Error';
			$result['content'] = JText :: _('Order Generate Error');
		}

		return $result;
	}
	private static function saveOS($params) {
		$result = array();
		$member_id = $params['member_id'];
		$payment_method = $params['payment_method'];
		JRequest::setVar('member_id', $member_id);
		if (empty($member_id)) {
			$result['success'] = false;
			$result['title'] = 'Error';
			$result['content'] = JText::_('Error1');
			return $result;
		}
		$params = array();
		$paymentCart = $cart = oseRegistry::call('payment')->getInstance('Cart');
		$paymentCart->refreshCartItems($paymentCart->get('items'), $paymentCart->get('currency'));
		$osePaymentCurrency = $paymentCart->get('currency');
		$payment_mode = $paymentCart->getParams('payment_mode');
		$subtotal = $paymentCart->getSubtotal();
		if (empty($payment_mode)) {
			$payment_mode = oseMscPublic::savePaymentMode();
		}
		$items = $paymentCart->get('items');
		$oneItem = $items[0];
		$payment = oseRegistry::call('payment');
		$keys = array_keys($items);
		$order_number = $payment->generateOrderNumber($member_id);
		$params['entry_type'] = 'msc_list';
		$params['payment_price'] = $paymentCart->get('total');
		$params['payment_currency'] = $osePaymentCurrency;
		$params['order_number'] = $order_number;
		$params['create_date'] = oseHTML::getDateTime();
		$params['payment_serial_number'] = substr($order_number, 0, 20);
		$params['payment_method'] = $payment_method;
		$params['payment_mode'] = $payment_mode;
		$params['payment_from'] = 'system_reg';
		$params['params'] = array();
		$params['params']['start_date'] = oseObject::getValue($oneItem, 'start_date', null);
		$params['params']['expired_date'] = oseObject::getValue($oneItem, 'expired_date', null);
		$params['params']['total'] = $paymentCart->get('total');
		$params['params']['next_total'] = $paymentCart->get('next_total');
		$params['params']['discount'] = $paymentCart->get('discount');
		$params['params']['subtotal'] = $subtotal;
		$params['params']['coupon_user_id'] = $paymentCart->getParams('coupon_user_id');
		$params['params']['gross_tax'] = $paymentCart->getTaxParams('amount');
		$params['params']['next_gross_tax'] = $paymentCart->getTaxParams('next_amount');
		$params['params']['vat_number'] = $paymentCart->getTaxParams('vat_number');
		$params['params']['timestamp'] = uniqid("{$member_id}_", true);
		$params['params']['returnUrl'] = $paymentCart->getParams('returnUrl');
		if ($payment_mode == 'a') {
			$params['params']['has_trial'] = oseObject::getValue($oneItem, 'has_trial', 0);
		} else {
			$params['params']['has_trial'] = 0;
		}
		$sisow_issuerid = JRequest::getVar('sisow_issuerid');
		if ($sisow_issuerid) {
			$params['params']['sisow_issuerid'] = $sisow_issuerid;
		}
		$sisow_payment = JRequest::getVar('sisow_payment');
		if ($sisow_payment) {
			$params['params']['sisow_payment'] = $sisow_payment;
		}
		$params['params']['a1'] = $paymentCart->get('total');
		$params['params']['p1'] = oseObject::getValue($oneItem, 'p1', 0);
		$params['params']['t1'] = oseObject::getValue($oneItem, 't1');
		$params['params']['a3'] = $paymentCart->get('next_total');
		$params['params']['p3'] = oseObject::getValue($oneItem, 'p3', 0);
		$params['params']['t3'] = oseObject::getValue($oneItem, 't3');
		$params['params'] = oseJSON::encode($params['params']);
		$list = oseMscAddon::getAddonList('register_order', false, 1, 'obj');
		foreach ($list as $addon) {
			$action_name = 'register_order.' . $addon->name . '.add';
			$params = oseMscAddon::runAction($action_name, $params);
		}
		$paymentOrder = $payment->getInstance('Order');
		$updated = $paymentOrder->generateOrder('', $member_id, $params);
		if ($updated) {
			$order_id = $updated;
			$result['order_id'] = $order_id;
			JRequest::setVar('order_id', $order_id);
		} else {
			$result['success'] = false;
			$result['title'] = 'Error';
			$result['content'] = JText::_('Error2');
			return $result;
		}
		foreach ($items as $item) {
			$itemParams = array();
			$entry_type = oseObject::getValue($item, 'entry_type');
			switch ($entry_type) {
			case ('license'):
				$license_id = oseObject::getValue($item, 'entry_id');
				$license = oseRegistry::call('lic')->getInstance(0);
				$licenseInfo = $license->getKeyInfo($license_id, 'obj');
				$licenseInfoParams = oseJson::decode($licenseInfo->params);
				$msc_id = $licenseInfoParams->msc_id;
				break;
			case ('msc'):
				$msc_id = oseObject::getValue($item, 'entry_id');
				break;
			}
			$msc_option = oseObject::getValue($item, 'msc_option');
			if (oseObject::getValue($item, 'eternal')) {
				$itemParams['payment_mode'] = 'm';
			} else {
				$itemParams['payment_mode'] = $payment_mode;
			}
			$price = oseObject::getValue($item, 'a3');
			if ($payment_mode == 'a') {
				if (oseObject::getValue($item, 'has_trial')) {
					$price = oseObject::getValue($item, 'a1');
				}
			}
			$itemParams['entry_type'] = oseObject::getValue($item, 'entry_type');
			$itemParams['payment_price'] = oseObject::getValue($item, 'first_raw_price');
			$itemParams['payment_currency'] = $osePaymentCurrency;
			$itemParams['create_date'] = oseHTML::getDateTime();
			$price_params = $payment->generateOrderParams($msc_id, $price, $payment_mode, $msc_option);
			$price_params['start_date'] = oseObject::getValue($item, 'start_date', null);
			$price_params['expired_date'] = oseObject::getValue($item, 'expired_date', null);
			$price_params['recurrence_mode'] = oseObject::getValue($item, 'recurrence_mode', 'period');
			$itemParams['params'] = oseJSON::encode($price_params);
			$paymentInfos = oseMscAddon::getExtInfo($msc_id, 'payment', 'obj');
			$paymentInfo = oseObject::getValue($paymentInfos, $msc_option);
			$updated = $paymentOrder->generateOrderItem($order_id, oseObject::getValue($item, 'entry_id'), $itemParams);
		}
		if ($updated) {
			$result['success'] = true;
			$result['title'] = JText::_('Done');
			$result['content'] = JText::_('Done');
		} else {
			$result['success'] = false;
			$result['title'] = 'Error';
			$result['content'] = JText::_('Order Generate Error');
		}
		$emailConfig = oseMscConfig::getConfig('email', 'obj');
		if (!empty($emailConfig->order_notification)) {
			$db = oseDB::instance();
			$where = array();
			$where[] = '`order_id` = ' . $db->Quote($order_id);
			$orderInfo = $paymentOrder->getOrder($where, 'obj');
			$memEmail = oseRegistry::call('member')->getInstance('Email');
			$receipt = $memEmail->getOrderNotification($orderInfo);//print_r($receipt);exit;
			$memEmail->sendToAdminGroup($receipt, $emailConfig->admin_group);
		}
		return $result;
	}
	private static function saveOS( $params )
	{
		$result = array();

    	//$post = JRequest::get('post');

    	$member_id = $params['member_id'];
		$payment_method = $params['payment_method'];


		//oseExit($params);
    	JRequest::setVar('member_id',$member_id);

    	if(empty($member_id))
    	{
			$result['success'] = false;
			$result['title'] = 'Error';
			$result['content'] = JText :: _('Error1');

			return $result;
    	}

    	$params = array();

    	//$paymentCart = oseMscPublic::getCart();
    	$paymentCart = $cart = oseRegistry::call('payment')->getInstance('Cart');
    	$paymentCart->refreshCartItems($paymentCart->get('items'),$paymentCart->get('currency'));

		$osePaymentCurrency = $paymentCart->get('currency');
		$payment_mode = $paymentCart->getParams('payment_mode');
		$subtotal = $paymentCart->getSubtotal();

		if(empty($payment_mode))
    	{
    		$payment_mode = oseMscPublic::savePaymentMode();
    	}

		$items = $paymentCart->get('items');

		$oneItem = $items[0];

		$payment = oseRegistry::call('payment');

		$keys = array_keys($items);
    	//$payment_mode = $paymentCart->getParams('payment_mode');

		$order_number = $payment->generateOrderNumber( $member_id );

		$params['entry_type'] = 'msc_list';
		$params['payment_price'] = $paymentCart->get('total');
		$params['payment_currency'] = $osePaymentCurrency;
        $params['order_number'] = $order_number;
        $params['create_date'] = oseHTML::getDateTime();//date("Y-m-d H:i:s");
		$params['payment_serial_number'] = substr($order_number,0,20);
		$params['payment_method'] = $payment_method;
		$params['payment_mode'] = $payment_mode;
		$params['payment_from'] = 'system_reg';

		$params['params'] = array();
		$params['params']['start_date'] = oseObject::getValue($oneItem,'start_date',null);
		$params['params']['expired_date'] = oseObject::getValue($oneItem,'expired_date',null);
		$params['params']['total'] = $paymentCart->get('total');
		if($paymentCart->getParams('coupon_range2') == 'all')
		{
			$params['params']['next_total'] = $params['params']['total'];
		}
		else
		{
			$params['params']['next_total'] = $paymentCart->get('next_total');
			//
		}
		
		//$params['params']['next_total'] = $params['params']['total'];//$paymentCart->get('next_total');
		$params['params']['discount'] = $paymentCart->get('discount');
		$params['params']['subtotal'] = $subtotal;
		$params['params']['coupon_user_id'] = $paymentCart->getParams('coupon_user_id');
		$params['params']['gross_tax'] = $paymentCart->getTaxParams('amount');
		$params['params']['next_gross_tax'] = $paymentCart->getTaxParams('next_amount');
		$params['params']['vat_number'] = $paymentCart->getTaxParams('vat_number');
		$params['params']['timestamp'] = uniqid("{$member_id}_",true);
		$params['params']['returnUrl'] = $paymentCart->getParams('returnUrl');
		if($payment_mode == 'a')
		{
			$params['params']['has_trial'] = oseObject::getValue($oneItem,'has_trial',0);
		}
		else
		{
			$params['params']['has_trial'] = 0;
		}

		$params['params']['a1'] = $paymentCart->get('total');
		$params['params']['p1'] = oseObject::getValue($oneItem,'p1',0);
		$params['params']['t1'] = oseObject::getValue($oneItem,'t1');
		$params['params']['a3'] = $paymentCart->get('next_total');
		$params['params']['p3'] = oseObject::getValue($oneItem,'p3',0);
		$params['params']['t3'] = oseObject::getValue($oneItem,'t3');
    	$params['params'] = oseJSON::encode($params['params']);

		$list = oseMscAddon :: getAddonList('register_order', false, 1, 'obj');
    	foreach($list as $addon) {
			$action_name= 'register_order.'.$addon->name.'.add';
			//echo $action_name;
			$params = oseMscAddon :: runAction($action_name, $params);
		}

		$paymentOrder = $payment->getInstance('Order');
		$updated = $paymentOrder->generateOrder('', $member_id, $params);

		if($updated)
		{
			$order_id = $updated;
			$result['order_id'] = $order_id;
			JRequest::setVar('order_id',$order_id);
		}
		else
		{
			$result['success'] = false;
			$result['title'] = 'Error';
			$result['content'] = JText :: _('Error2');

			return $result;
		}

		//$paymentOrder->__construct('#__osemsc_order_item');
		foreach($items as $item)
		{
			$itemParams = array();

			$entry_type = oseObject::getValue($item,'entry_type');

			switch($entry_type)
			{
				case('license'):
					$license_id = oseObject::getValue($item,'entry_id');

					$license = oseRegistry::call('lic')->getInstance(0);
					$licenseInfo = $license->getKeyInfo($license_id,'obj');
					//oseExit($item);
					$licenseInfoParams = oseJson::decode($licenseInfo->params);

					$msc_id = $licenseInfoParams->msc_id;
				break;

				case('msc'):
					$msc_id = oseObject::getValue($item,'entry_id');
				break;
			}
			$msc_option = oseObject::getValue($item,'msc_option');

			//$paymentInfos = oseRegistry::call('msc')->getExtInfo($msc_id,'payment','obj');
			//$paymentInfo = oseObject::getValue($paymentInfos,$msc_option);

			if ( oseObject::getValue($item,'eternal'))
	        {
	        	$itemParams['payment_mode'] = 'm';
	        }
	        else
	        {
	        	$itemParams['payment_mode'] = $payment_mode;
	        }

			$price = oseObject::getValue($item,'a3');
			if($payment_mode == 'a')
			{
				if(oseObject::getValue($item,'has_trial'))
				{
					$price = oseObject::getValue($item,'a1');
				}
			}

			//$price = $payment->pricing($price,$msc_id,$osePaymentCurrency);

			$itemParams['entry_type'] = oseObject::getValue($item,'entry_type');
			$itemParams['payment_price'] = oseObject::getValue($item,'first_raw_price');
			$itemParams['payment_currency'] = $osePaymentCurrency;
	        $itemParams['create_date'] = oseHTML::getDateTime();//date("Y-m-d H:i:s");

	        $price_params = $payment->generateOrderParams($msc_id,$price,$payment_mode,$msc_option);
	        $price_params['start_date'] = oseObject::getValue($item,'start_date',null);
			$price_params['expired_date'] = oseObject::getValue($item,'expired_date',null);
			$price_params['recurrence_mode'] = oseObject::getValue($item,'recurrence_mode','period');
	        $itemParams['params'] = oseJSON::encode($price_params);

	        $paymentInfos = oseMscAddon::getExtInfo($msc_id,'payment','obj');
	        $paymentInfo = oseObject::getValue($paymentInfos,$msc_option);

			$updated = $paymentOrder->generateOrderItem($order_id,oseObject::getValue($item,'entry_id'), $itemParams);
		}
		//$paymentOrder->__construct('#__osemsc_order');

		if($updated)
		{
			/*
			$vmorder=self::AddVmOrder($msc_id,$params,$order_number,$paymentInfo);
			if(!$vmorder['success'])
			{
				return $vmorder;
			}
			*/
			$result['success'] = true;
			$result['title'] = JText :: _('Done');
			$result['content'] = JText :: _('Done');
		}
		else
		{
			$result['success'] = false;
			$result['title'] = 'Error';
			$result['content'] = JText :: _('Order Generate Error');
		}

		return $result;

	}
Esempio n. 9
0
 public function joinMsc($msc_id)
 {
     $db = oseDB::instance();
     $query = " SELECT COUNT(*) FROM `#__osemsc_member`" . " WHERE msc_id !={$msc_id} AND member_id = {$this->member_id}" . " AND status = 1";
     $db->setQuery($query);
     $hasMsc = $db->loadResult();
     if ($hasMsc > 0) {
         //return false;
     }
     $query = " SELECT * FROM `#__osemsc_member`" . " WHERE msc_id = {$msc_id} AND member_id = {$this->member_id}";
     $db->setQuery($query);
     $item = oseDB::loadItem('obj');
     if (!empty($item)) {
         $query = " UPDATE `#__osemsc_member`" . " SET `status` = 1, `notified` = '0', `notified2` = '0', `notified3` = '0' " . " WHERE msc_id = {$msc_id} AND member_id = {$this->member_id}";
         $db->setQuery($query);
         if (!$db->query()) {
             return false;
         }
         return $msc_id;
     } else {
         $exts = oseMscAddon::getExtInfo($msc_id, 'payment');
         foreach ($exts as $ext) {
             $eternal = $db->Quote(oseObject::getValue($ext, 'eternal'));
             break;
         }
         $eternal = empty($eternal) ? 0 : $eternal;
         $query = " INSERT INTO `#__osemsc_member` ( msc_id, member_id, eternal ) VALUES " . " ( {$msc_id},{$this->member_id}," . (int) $eternal . " ) ";
         $db->setQuery($query);
         if (!$db->query()) {
             return false;
         }
         return $db->insertid();
     }
 }
Esempio n. 10
0
 function getExtInfo($msc_id, $xtype, $type = 'array')
 {
     switch ($xtype) {
         case 'paymentAdv':
         case 'payment':
             $info = oseMscAddon::getExtInfoItem($msc_id, $xtype, 'obj');
             if (empty($info)) {
                 return array();
             } else {
                 $isArray = $type == 'array' ? true : false;
                 $items = oseJson::decode($info->params, $isArray);
                 if (empty($items)) {
                     $items = array();
                 }
                 return $items;
             }
             break;
         default:
             $info = oseMscAddon::getExtInfo($msc_id, $xtype, $type);
             return $info;
             break;
     }
 }