public static function archive($msc_id, $member_id, $action) { $db = oseDB::instance(); $date = oseHTML::getDateTime(); $date = $db->Quote($date); $query = " INSERT INTO `#__osemsc_member_history` " . " (`msc_id`,`member_id`,`action`,`date`, `accumulated`) " . " VALUES " . " ({$msc_id},{$member_id},'{$action}',{$date}, '0') "; $db->setQuery($query); if (oseDB::query()) { return $db->insertid(); } else { return false; } }
function QuickpayOneOffPay($orderInfo, $params = array()) { $pConfig = oseMscConfig::getConfig('payment', 'obj'); $merchant = $pConfig->quickpay_merchant; $secret = $pConfig->quickpay_secret; $test_mode = $pConfig->quickpay_testmode; $cardtypelock = $pConfig->quickpay_cardtypelock; $autocapture = $pConfig->quickpay_autocapture; $autofee = $pConfig->quickpay_autofee; $lang = empty($pConfig->quickpay_lang) ? 'en' : $pConfig->quickpay_lang; $db = oseDB::instance(); $member = oseRegistry::call('member'); $member->instance($orderInfo->user_id); $payment = oseRegistry::call('payment'); $paymentOrder = $payment->getInstance('Order'); $billinginfo = $paymentOrder->getBillingInfo($orderInfo->user_id); $amount = $orderInfo->payment_price * 100; $currency = $orderInfo->payment_currency; $order_id = $orderInfo->order_id; $order_number = $orderInfo->order_number; $desc = self::generateDesc($order_id); $user =& JFactory::getUser($orderInfo->user_id); $order_id = sprintf("%04d", $order_id); $orderInfoParams = oseJson::decode($orderInfo->params); //$cancelUrl = JURI :: base()."index.php"; $notifyUrl = JURI::base() . "components/com_osemsc/ipn/quickpay_notify.php"; $returnUrl = urldecode(JROUTE::_(JURI::base() . "index.php?option=com_osemsc&view=thankyou&order_id=" . $orderInfo->order_id)); $returnUrl = $returnUrl ? $returnUrl : JURI::base() . "index.php?option=com_osemsc&view=member&result=success&amount={$amount}&ordernumber={$order_number}"; $date = oseHTML::getDateTime(); $url = "https://secure.quickpay.dk/form/"; $html['form'] = '<form action="' . $url . '" method="post">'; // Construct variables for post $post_variables = array('protocol' => 5, 'msgtype' => 'authorize', 'merchant' => $merchant, 'language' => $lang, 'ordernumber' => $order_id, 'amount' => $amount, 'currency' => $currency, 'continueurl' => $returnUrl, 'continueurl' => $returnUrl, 'cancelurl' => $returnUrl, 'callbackurl' => $notifyUrl, 'autocapture' => $autocapture, 'autofee' => $autofee, 'cardtypelock' => $cardtypelock, 'description' => $desc, 'testmode' => $test_mode); $md5String = ''; foreach ($post_variables as $name => $value) { $md5String .= $value; } $md5String .= $secret; $post_variables['md5check'] = md5($md5String); //print_r($post_variables);exit; $html['form'] .= '<input type="image" id="quickpay_image" name="cartImage" src="' . "components/com_osemsc/assets/images/checkout.png" . '" alt="' . JText::_('Click to pay with Quickpay') . '" />'; // Process payment variables; $html['url'] = $url . "?"; foreach ($post_variables as $name => $value) { $html['form'] .= '<input type="hidden" name="' . $name . '" value="' . htmlspecialchars($value) . '" />'; $html['url'] .= $name . "=" . urlencode($value) . "&"; } $html['form'] .= '</form>'; return $html; }
function AlipayOneOffPay($orderInfo, $params = array()) { $pConfig = oseMscConfig::getConfig('payment', 'obj'); $alipay_partner = $pConfig->alipay_partner; $alipay_key = $pConfig->alipay_key; $seller_email = $pConfig->alipay_seller_email; $db = oseDB::instance(); $member = oseRegistry::call('member'); $member->instance($orderInfo->user_id); $payment = oseRegistry::call('payment'); $paymentOrder = $payment->getInstance('Order'); $billinginfo = $paymentOrder->getBillingInfo($orderInfo->user_id); $amount = $orderInfo->payment_price; $currency = $orderInfo->payment_currency; $order_id = $orderInfo->order_id; $order_number = $orderInfo->order_number; $desc = self::generateDesc($order_id); $user =& JFactory::getUser($orderInfo->user_id); $orderInfoParams = oseJson::decode($orderInfo->params); //$cancelUrl = JURI :: base()."index.php"; $notifyUrl = JURI::base() . "components/com_osemsc/ipn/alipay_notify.php"; $returnUrl = urldecode($orderInfoParams->returnUrl); $returnUrl = $returnUrl ? $returnUrl : JURI::base() . "index.php?option=com_osemsc&view=member&result=success&amount={$amount}&ordernumber={$order_number}"; $date = oseHTML::getDateTime(); $url = "https://mapi.alipay.com/gateway.do?"; $html['form'] = '<form action="' . $url . '" method="post">'; // Construct variables for post $variables = array('service' => 'create_direct_pay_by_user', 'payment_type' => 1, 'partner' => $alipay_partner, 'seller_email' => $seller_email, '_input_charset' => 'utf-8', 'notify_url' => $notifyUrl, 'return_url' => $returnUrl, 'out_trade_no' => $order_number, 'subject' => $desc, 'body' => $desc, 'total_fee' => $amount, 'sign_type' => 'MD5'); $post_variables = $this->buildRequestPara($variables, $alipay_key); //print_r($post_variables);exit; $html['form'] .= '<input type="image" id="alipay_image" name="cartImage" src="' . "components/com_osemsc/assets/images/checkout.png" . '" alt="' . JText::_('Click to pay with Alipay') . '" />'; // Process payment variables; $html['url'] = $url . "?"; foreach ($post_variables as $name => $value) { $html['form'] .= '<input type="hidden" name="' . $name . '" value="' . htmlspecialchars($value) . '" />'; $html['url'] .= $name . "=" . urlencode($value) . "&"; } $html['form'] .= '</form>'; return $html; }
function PayGateOneOffPay($orderInfo, $params = array()) { $pConfig = oseMscConfig::getConfig('payment', 'obj'); $paygate_id = $pConfig->paygate_id; $paygate_key = $pConfig->paygate_key; $db = oseDB::instance(); $member = oseRegistry::call('member'); $member->instance($orderInfo->user_id); $payment = oseRegistry::call('payment'); $paymentOrder = $payment->getInstance('Order'); $billinginfo = $paymentOrder->getBillingInfo($orderInfo->user_id); $amount = $orderInfo->payment_price * 100; $currency = $orderInfo->payment_currency; $order_id = $orderInfo->order_id; $order_number = $orderInfo->order_number; $desc = self::generateDesc($order_id); $currency = 'ZAR'; $user =& JFactory::getUser($orderInfo->user_id); $orderInfoParams = oseJson::decode($orderInfo->params); //$cancelUrl = JURI :: base()."index.php"; $notifyUrl = JURI::base() . "components/com_osemsc/ipn/paygate_notify.php"; $returnUrl = urldecode($orderInfoParams->returnUrl); $returnUrl = $returnUrl ? $returnUrl : JURI::base() . "index.php?option=com_osemsc&view=member&result=success&amount={$amount}&ordernumber={$order_number}"; $date = oseHTML::getDateTime(); $CHECKSUM = md5("{$paygate_id}|{$order_number}|{$amount}|{$currency}|{$notifyUrl}|{$date}|{$user->email}|{$paygate_key}"); $url = "https://www.paygate.co.za/paywebv2/process.trans"; $html['form'] = '<form action="' . $url . '" method="post">'; // Construct variables for post $post_variables = array('PAYGATE_ID' => $paygate_id, 'REFERENCE' => $order_number, 'AMOUNT' => $amount, 'CURRENCY' => $currency, 'RETURN_URL' => $notifyUrl, 'TRANSACTION_DATE' => $date, 'EMAIL' => $user->email, 'CHECKSUM' => $CHECKSUM); //print_r($post_variables);exit; $html['form'] .= '<input type="image" id="paygate_image" name="cartImage" src="' . "components/com_osemsc/assets/images/checkout.png" . '" alt="' . JText::_('Click to pay with PayGate') . '" />'; // Process payment variables; $html['url'] = $url . "?"; foreach ($post_variables as $name => $value) { $html['form'] .= '<input type="hidden" name="' . $name . '" value="' . htmlspecialchars($value) . '" />'; $html['url'] .= $name . "=" . urlencode($value) . "&"; } $html['form'] .= '</form>'; return $html; }
function generateOrderItem($order_id, $entry_id, $params = array()) { $db = oseDB::instance(); //$payment= oseMscAddon :: getExtInfo($msc_id, 'payment', 'obj'); //$params['payment_currency']=(!empty($payment->currency)) ? $payment->currency : "USD"; $params['create_date'] = empty($params['create_date']) ? oseHTML::getDateTime() : $params['create_date']; $keys = array_keys($params); $keys = '`' . implode('`,`', $keys) . '`'; $values = array(); foreach ($params as $key => $value) { $values[$key] = $db->Quote($value); } $values = implode(',', $values); $query = " INSERT INTO `{$this->table}_item` " . " (`order_id`,`entry_id`,{$keys}) " . " VALUES " . " ('{$order_id}' , '{$entry_id}', {$values})"; $db->setQuery($query); if (oseDB::query()) { $order_id = $db->insertid(); //$orderParams= $this->autoOrderParams($params['payment_mode'], $params['params']); //$this->updateOrder($order_id, 'pending', array('params' => $orderParams, 'payment_mode' => $params['payment_mode'])); return $order_id; } else { return false; } }
private function CreateRebill($customerId) { $db = oseDB::instance(); $ccInfo = $this->get('ccInfo'); $orderInfo = $this->get('orderInfo'); $orderInfoParams = oseJson::decode(oseObject::getValue($orderInfo, 'params')); //$postVar['ewayCVN']= $credit_info["creditcard_cvv"]; // Date Time $curDate = oseHTML::getDateTime(); $date = new DateTime($curDate); $RebillInitDate = $date->format('d/m/Y'); if (!empty($orderInfoParams->has_trial)) { $trialOccurrences = "1"; //$mscTrialRecurrence = self::TranslateInterval($orderInfoParams->t1, $orderInfoParams->p1); //$recurStartDate = date("d/m/Y", strtotime("+ {$mscTrialRecurrence['length']} {$mscTrialRecurrence['unit']}")); //$mscRegRecurrence= self::TranslateInterval($orderInfoParams->t3, $orderInfoParams->p3); $query = " SELECT DATE_ADD('{$curDate}',INTERVAL {$orderInfoParams->p1} {$orderInfoParams->t1})"; } else { $trialOccurrences = "0"; //$mscRegRecurrence= self::TranslateInterval($orderInfoParams->t3, $orderInfoParams->p3); //$recurStartDate = date("d/m/Y", strtotime("+ {$mscRegRecurrence['length']} {$mscRegRecurrence['unit']}")); $query = " SELECT DATE_ADD('{$curDate}',INTERVAL {$orderInfoParams->p3} {$orderInfoParams->t3})"; } $db->setQuery($query); $date->__construct($db->loadResult()); $RebillStartDate = $date->format("d/m/Y"); $query = " SELECT DATE_ADD('{$curDate}',INTERVAL 10 YEAR)"; $db->setQuery($query); $date->__construct($db->loadResult()); $RebillEndDate = $date->format("d/m/Y"); $postVar = array(); $postVar['RebillCustomerID'] = $customerId; $postVar['RebillInvRef'] = oseObject::getValue($orderInfo, 'order_number'); $postVar['RebillInvDes'] = ''; $postVar['RebillCCName'] = $ccInfo['ewayCardHoldersName']; $postVar['RebillCCNumber'] = $ccInfo['ewayCardNumber']; $postVar['RebillCCExpMonth'] = $ccInfo['ewayCardExpiryMonth']; $postVar['RebillCCExpYear'] = $ccInfo['ewayCardExpiryYear']; $postVar['RebillInitAmt'] = $orderInfo->payment_price * 100; $postVar['RebillInitDate'] = $RebillInitDate; $postVar['RebillRecurAmt'] = $orderInfoParams->next_total * 100; $postVar['RebillStartDate'] = $RebillStartDate; $postVar['RebillInterval'] = $orderInfoParams->p3; $postVar['RebillIntervalType'] = $this->transIntervlUnit($orderInfoParams->t3); $postVar['RebillEndDate'] = $RebillEndDate; //date("d/m/Y", strtotime("+ 3 years")); $result = $this->_soapcall('CreateRebillEvent', $postVar, true); return $result['CreateRebillEventResult']; }
private static function joinInAutomaticMode($msc_id, $member_id, $orderInfo) { $db = oseDB::instance(); $result = array(); $result['success'] = true; $orderParams = oseJSON::decode($orderInfo->params); $start_date = oseHTML::getDateTime(); $start_date = $db->Quote($start_date); if ($orderParams->has_trial) { $recurrence_num = $orderParams->p1 + 1; $recurrence_unit = $orderParams->t1; } else { $recurrence_num = $orderParams->p3 + 1; $recurrence_unit = $orderParams->t3; } $expired_date = " DATE_ADD({$start_date},INTERVAL {$recurrence_num} {$recurrence_unit}) "; $query = " UPDATE `#__osemsc_member` " . " SET start_date = {$start_date} , expired_date = {$expired_date}" . " WHERE member_id = {$member_id} AND msc_id = {$msc_id} "; $db->setQuery($query); if (!oseDB::query()) { $result['success'] = false; $result['title'] = 'Error'; $result['content'] = JText::_(' Fail Updated Member\'s Recurrence '); return $result; } return $result; }
function getMemberAccessContent($type = 'joomla', $content_type, $member_id, $rType = 'array') { $db = oseDB::instance(); $member = oseRegistry::call('member'); $member->instance($member_id); $mscs = $member->getAllOwnedMsc(false, 1, 'obj'); // get restricted of status 1; Step 1 get the start date $mValues = array(); $startDate = array(); foreach ($mscs as $msc) { $startDate[$msc->msc_id] = $msc->start_date; $mValues[] = $msc->msc_id; } if (!empty($mValues)) { $mValues = '(' . implode(',', $mValues) . ')'; $bquery = " (entry_id IN {$mValues} AND entry_type = 'msc') " . " OR " . " (entry_id = '{$member_id}' AND entry_type = 'member') "; } else { $bquery = " (entry_id = '{$member_id}' AND entry_type = 'member') "; } // filter the intersect access content $aWhere = array(); $aWhere[] = $bquery; $aWhere[] = "type = '{$type}'"; $aWhere[] = "content_type = '{$content_type}'"; $aWhere[] = "status = '1'"; $aWhere = oseDB::implodeWhere($aWhere); $query = " SELECT DISTINCT content_id, params, entry_id" . " FROM `#__osemsc_content` " . $aWhere; $db->setQuery($query); $aObj = oseDB::loadList($rType); foreach ($aObj as $key => $sqeObj) { $params = oseJson::decode(oseObject::getValue($sqeObj, 'params', '{}')); $timeLength = oseObject::getValue($params, 'time_length', false); $time_unit = oseObject::getValue($params, 'time_unit', 'week'); if ($timeLength) { // provided that entry type is msc $total = strtotime("+{$timeLength} {$time_unit}", strtotime($startDate[oseObject::getValue($sqeObj, 'entry_id')])); $cur = strtotime(oseHTML::getDateTime()); //oseExit($timeLength); if ($cur < $total) { unset($aObj[$key]); } } } return $aObj; }
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 BeanStreamCreateProfile($orderInfo, $credit_info, $params = array()) { $updated = $this->BeanStreamOneOffPay($orderInfo, $credit_info, true, $params); //$updated = array();$updated['success'] = true; if ($updated['success']) { if (isset($updated['orderInfo'])) { $orderInfo = $updated['orderInfo']; unset($updated['orderInfo']); } $config = oseMscConfig::getConfig('', 'obj'); $pConfig = $config; //oseRegistry::call('msc')->getConfig('payment', 'obj'); $user =& JFactory::getUser($orderInfo->user_id); $app =& JFactory::getApplication(); $Itemid = $this->getItemid(); $merchant_id = $pConfig->beanstream_merchant_id; $username = $pConfig->beanstream_username; $password = $pConfig->beanstream_password; if (empty($merchant_id)) { return self::getErrorMessage('cc', '0001', null); } //require_once(OSEMSC_B_LIB.DS.'beanstreamsoap.php'); $result = array(); $db = oseDB::instance(); $user_id = $orderInfo->user_id; $msc_id = $orderInfo->entry_id; $order_id = $orderInfo->order_id; $order_number = $orderInfo->order_number; $orderInfoParams = oseJson::decode($orderInfo->params); $desc = $this->generateDesc($order_id); $billingInfo = $this->getBillingInfo($orderInfo->user_id); $taxRate = isset($orderInfoParams->tax_rate) ? $orderInfoParams->tax_rate : 0; $currency = $orderInfo->payment_currency; $user =& JFactory::getUser($orderInfo->user_id); $amount = $orderInfoParams->next_total; if (empty($amount)) { return self::getErrorMessage('cc', '0002', null); } $postVar = array(); /* $totalAmount in cents, as required by ePay: The total amount in cents for the transaction, eg $1.00 = 100 */ // General $postVar['requestType'] = 'BACKEND'; $postVar['merchant_id'] = $merchant_id; $postVar['username'] = $username; $postVar['password'] = $password; $postVar['trnAmount'] = $amount; $postVar['trnOrderNumber'] = substr($order_number, 0, 20); $postVar['trnType'] = 'P'; $postVar['trnRecurring'] = 1; $postVar['paymentMethod'] = 'CC'; $postVar['ref1'] = $order_id; $postVar['ref2'] = $orderInfoParams->timestamp; //$postVar['adjId']= $amount; // Card Info $postVar['trnCardOwner'] = $credit_info["creditcard_name"]; $postVar['trnCardNumber'] = $credit_info["creditcard_number"]; $postVar['trnExpMonth'] = substr($credit_info["creditcard_month"], -2); $postVar['trnExpYear'] = substr($credit_info["creditcard_year"], -2); $postVar['trnCardCvd'] = $credit_info["creditcard_cvv"]; // Billing $postVar['ordName'] = $billingInfo->firstname . ' ' . $billingInfo->lastname; $postVar['ordEmailAddress'] = $billingInfo->email; $postVar['ordPhoneNumber'] = $billingInfo->telephone; $postVar['ordAddress1'] = $billingInfo->addr1; $postVar['ordCity'] = $billingInfo->city; $postVar['ordProvince'] = $billingInfo->state; $postVar['ordPostalCode'] = $billingInfo->postcode; $postVar['ordCountry'] = $billingInfo->country; // Recurring $curDate = oseHTML::getDateTime(); /* if($orderInfoParams->has_trial) { $dateAdd = '+ '.$orderInfoParams->p1.''.$orderInfoParams->t1; $startDate = strtotime($dateAdd,strtotime($curDate)); $startDate = date('mdY',$startDate); } else { $dateAdd = '+ '.$orderInfoParams->p3.''.$orderInfoParams->t3; $startDate = strtotime($dateAdd,strtotime($curDate)); $startDate = date('mdY',$startDate); } */ if ($orderInfoParams->has_trial) { $nT1 = $this->BeanStreamTransInterval($orderInfoParams->t1); $query = " SELECT DATE_ADD('{$curDate}',INTERVAL {$orderInfoParams->p1} {$orderInfoParams->t1})"; } else { $nT3 = $this->BeanStreamTransInterval($orderInfoParams->t3); $query = " SELECT DATE_ADD('{$curDate}',INTERVAL {$orderInfoParams->p3} {$orderInfoParams->t3})"; } $db->setQuery($query); $date = new DateTime($db->loadResult()); $startDate = $date->format("mdY"); $postVar['rbCharge'] = 0; $postVar['rbFirstBilling'] = $startDate; $postVar['rbBillingPeriod'] = $this->BeanStreamTransInterval($orderInfoParams->t3); $postVar['rbBillingIncrement'] = $orderInfoParams->p3; // URL $postVar['errorPage'] = urlencode(JURI::root()); $postVar['approvedPage'] = urlencode(JURI::root()); $postVar['declinedPage'] = urlencode(JURI::root()); $hostname = 'www.beanstream.com'; $workstring = http_build_query($postVar); $uri = "/scripts/process_transaction.asp"; require_once OSEMSC_B_LIB . DS . 'class.connection.php'; $res = OSECONNECTOR::send_request_via_fsockopen($hostname, $uri, $workstring, 'urlencoded'); $res = stristr($res, "\r\n\r\n"); $res = trim($res); $post = array(); parse_str($res, $post); if ($post['trnApproved']) { $updataParams = array(); $updataParams['payment_serial_number'] = $post['rbAccountId']; //$updataParams['beanstream_rbAccountId'] = $post['rbAccountId']; $orderInfoParams->oneoff_transactionid = $orderInfo->payment_serial_number; $updataParams['params'] = oseJson::encode($orderInfoParams); $result = $this->updateOrder($order_id, 'confirmed', $updataParams); return $updated; //$this->confirmOrder($order_id,$updataParams); } else { return self::getErrorMessage('cc', '0000', JText::_('Joined Membership, but subscription fails creating. Error: ' . $post['messageText'])); } } else { return $updated; } }
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; }
function onAfterRoute() { $mainframe= JFactory :: getApplication(); if($mainframe->isAdmin()) { return; // Dont run in admin } if (file_exists(JPATH_SITE.DS.'components'.DS.'com_osemsc'.DS.'init.php') && file_exists(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_ose_cpu'.DS.'define.php') && !file_exists(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_osemsc'.DS.'installer.dummy.ini')) { require_once(JPATH_SITE.DS.'components'.DS.'com_osemsc'.DS.'init.php'); } else { return false; } $db= oseDB :: instance(); $current_date= oseHTML :: getDateTime(); $pluginParams= $this->params; if($pluginParams->get('registrationRedirect', false) == true) { self :: registrationRedirect($mainframe); } if($pluginParams->get('use2columnLayout', false) == true) { self :: twocolumnRedirect($mainframe); } if($pluginParams->get('enable_componentControl', false) == true) { $isComponentControlled= self :: isComponentControlled(); if($isComponentControlled == true) { $com_redmenuid= $pluginParams->def('com_redmenuid', null); self :: redirect(null,null,$com_redmenuid); } } if($pluginParams->get('enable_menuControl', false) == true) { $isMenuControlled= self :: isMenuControlled(); $user = JFactory::getUser(); $menu= & JSite :: getMenu(); $item= $menu->getActive(); if (empty($item)) { return; } $oseContent = oseRegistry :: call('content'); $futureDate = $oseContent->getInstance('msc')->getSequentialMessage($type = 'joomla', 'menu', $item->id, $user->id,'obj'); $redmessage= $this->params->def('redmessage',null); if (!empty($futureDate)) { $DefMsgtoNonmembers = str_replace('[FUTURETIME]',$futureDate, $redmessage); }else{ $DefMsgtoNonmembers = str_replace('[FUTURETIME]','', $redmessage); } if($isMenuControlled == true) { $menu_redmenuid= $pluginParams->def('menu_redmenuid', null); self :: redirect(null,$DefMsgtoNonmembers,$menu_redmenuid); } } $option= JRequest :: getCmd('option', null); $controller= JRequest :: getCmd('controller', null); if($option == 'com_ose_download') { if($pluginParams->get('enable_osedownloadControl', false)) { self :: checkOSEDownload(); } } if($option == 'com_phocadownload') { if($pluginParams->get('enable_phocaControl', false)) { self :: checkPhocaDownload(); } } if($option == 'com_mtree') { if($pluginParams->get('enable_mtreeControl', false)) { self :: checkMtree(); } } if($option == 'com_hwdvideoshare') { if($pluginParams->get('enable_hwdvideoshareControl', false)) { self :: checkHWD(); } } if($option == 'com_hwdmediashare') { if($pluginParams->get('enable_hwdmediashareControl', false)) { self :: checkHWDMedia(); } } if($option == 'com_sobi2') { if($pluginParams->get('enable_sobi2Control', false)) { self :: checkSobi2(); } } if($option == 'com_sobipro') { if($pluginParams->get('enable_sobiproControl', false)) { self :: checkSobiPro(); } } if($option == 'com_rokdownloads') { if($pluginParams->get('enable_rokdownloadControl', false)) { self :: checkRokdownload(); } } if($option == 'com_jdownloads') { if($pluginParams->get('enable_jdownloadsControl', false)) { self :: checkJdownloads(); } } if($option == 'com_ariquiz') { if($pluginParams->get('enable_ariquizControl', false)) { self :: checkAriquiz($pluginParams); } } if($option == 'com_community') { if($pluginParams->get('enable_jomsocialRegRedirect', false)) { self :: jomsocialRegRedirect(); } if($pluginParams->get('enable_JomRegRedirect', false)) { self :: jomRegRedirect(); } } if($option == 'com_eventbooking') { if($pluginParams->get('enable_eventbookingControl', false)) { self :: checkEventbooking(); } } if ($pluginParams->get('force_ssl', false)) { $ssl = (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS']=='on' OR $_SERVER['HTTPS']==true))?true:false; $view= JRequest :: getCmd('view', null); if ($ssl==false && $option == 'com_osemsc' && $view=='register') { $menu = &JSite::getMenu(); $item = $menu->getActive(); $currentURL = JURI::current(); $currentURL = str_replace("http", "https", $currentURL); $redirecturl= JRoute :: _($currentURL."?option=com_osemsc&view=register&Itemid=".$item->id); $redirecturl= str_replace("&", "&", $redirecturl); $mainframe ->redirect($redirecturl); } } if($pluginParams->get('force_user_to_member', false)) { $delete_users= $pluginParams->get('delete_users', false); self :: forceUsertoMember($delete_users); } }
/** * This method should handle any login logic and report back to the subject * * @access public * @param array holds the user data * @param array array holding options (remember, autoregister, group) * @return boolean True on success * @since 1.5 */ function onUserLogin($user, $options = array()) { require_once(JPATH_SITE.DS.'components'.DS.'com_osemsc'.DS.'init.php'); $mainframe = JFactory::getApplication(); $db = JFactory::getDBO(); $option=JRequest::getVar("option"); jimport('joomla.user.helper'); if ($mainframe->isAdmin() ) { return; // Dont run in admin } $pluginParams = $this->params; //$loginRedirection = $pluginParams->get('loginRedirection'); // Move to OSE Router; $singleLogin = $pluginParams->get('singleLogin'); $loginRedirect= $pluginParams->get('loginRedirect'); $autoUpdate = $pluginParams->get('autoUpdateOnLogin'); $autoUpdateGroup = $pluginParams->get('autoUpdateGroup'); $user = self::getUser($user); // Update BillingInfo names; $query = " SELECT user_id, firstname FROM #__osemsc_billinginfo WHERE user_id = ".(int)$user->id; $db->setQuery($query); $objects = $db->loadObject(); if (!empty($objects->user_id) && empty($objects->firstname)) { $thisUser = JFactory::getUser($objects->user_id); $names = explode(' ',$thisUser->name); $firstname = $db->Quote($names[0]); $lastname = count($names)>1?$names[1]:'null'; $lastname = $db->Quote($lastname); $query = "UPDATE `#__osemsc_billinginfo` SET `firstname` = {$firstname},`lastname` = {$lastname} WHERE `user_id` = ".(int)$user->id; $db->setQuery($query); $db->Query(); } $query = " SELECT user_id, lastname FROM #__osemsc_billinginfo WHERE user_id = ".(int)$user->id; $db->setQuery($query); $objects = $db->loadObject(); if (!empty($objects->user_id) && empty($objects->lastname)) { $query = "UPDATE `#__osemsc_billinginfo` SET `lastname` = (SELECT lastname FROM #__osemsc_userinfo WHERE user_id = ".(int)$user->id.") WHERE `user_id` =".(int)$user->id; $db->setQuery($query); $db->Query(); } // BillingInfo names; $enableVMUser = $pluginParams->get('enableVMUser'); if ($enableVMUser==true) { $oseUser['user_id'] = oseObject::getValue($user,'id'); $query= "SELECT * FROM `#__virtuemart_userinfos` WHERE `address_type` = 'BT' AND `virtuemart_user_id` = ". (int)$user->id; $db->setQuery($query); $result= $db->loadObject(); if(!empty($result)) { $query = "SELECT `country_3_code` FROM `#__virtuemart_countries` WHERE `virtuemart_country_id` = ". $db->Quote($result->virtuemart_country_id); $db->setQuery($query); $country_3_code=$db->loadResult(); if (!empty($country_3_code)) { $result->country = $country_3_code; } else { $result->country = substr($result->country, 0,3); } $query = "SELECT `state_2_code` FROM `#__virtuemart_states` WHERE `virtuemart_state_id` = ". $db->Quote($result->virtuemart_state_id); $db->setQuery($query); $state_2_code=$db->loadResult(); if (!empty($state_2_code)) { $result->state = $state_2_code; } else { $result->state = substr($result->state, 0,2); } $query= "SELECT count(*) FROM `#__osemsc_billinginfo` WHERE `user_id` = ". (int)$user->id; $db->setQuery($query); $result2= $db->loadResult(); if (empty($result2)) { $query= "INSERT INTO `#__osemsc_billinginfo` (`user_id`, `firstname`, `lastname`, `company`, `addr1`, `addr2`, `city`, `state`, `country`, `postcode`, `telephone`) VALUES (".(int)$user->id.", '{$result->first_name}', '{$result->last_name}', '{$result->company}', '{$result->address_1}', '{$result->address_2}', '{$result->city}', '{$result->state}', '{$result->country}', '{$result->zip}', '{$result->phone_1}');"; } else { $query = " UPDATE `#__osemsc_billinginfo` " . " SET `firstname` = '{$result->first_name}', " . " `lastname` = '{$result->last_name}', " . " `company` = '{$result->company}', " . " `addr1` = '{$result->address_1}', " . " `addr2` = '{$result->address_2}', " . " `city` = '{$result->city}', " . " `state` = '{$result->state}', " . " `country` = '{$result->country}', " . " `postcode` = '{$result->zip}', " . " `telephone` = '{$result->phone_1}' " . " WHERE `user_id` =".(int)$user->id; } $db->setQuery($query); $db->query(); } } if ($autoUpdate==true && !empty($autoUpdateGroup)) { if (!class_exists("oseMscPublic")) { require_once(JPATH_SITE.DS.'components'.DS.'com_osemsc'.DS.'helpers'.DS.'oseMscPublic.php'); } oseAppConfig::load('msc'); $cart = oseMscPublic::getCart(); $items = $cart->get('items'); $update = true; if(count($items) >0) { foreach($items as $item) { if($item['entry_id'] == $autoUpdateGroup) { $update = false; } } } $query = " SELECT count(*) FROM #__osemsc_member WHERE msc_id = ".(int)$autoUpdateGroup." AND member_id=".(int)$user->id; $db->setQuery($query); $exists = $db->loadResult(); if ($update && empty($exists)) { // join msc if($mainframe->isSite()) { $cart = oseMscPublic::getCart(); // get current item $cCart = $cart->cart; $cart->init(); $cart->__construct(); $cart->updateParams('payment_mode','m'); $paymentInfo = oseRegistry::call('msc')->getPaymentMscInfo($autoUpdateGroup,$cart->get('currency'),0); $nItem = array('entry_id'=>$autoUpdateGroup,'entry_type'=>'msc','msc_option'=>oseObject::getValue($paymentInfo,'msc_option')); $cart->addItem($nItem['entry_id'],$nItem['entry_type'],$nItem); $cart->update(); //$orderPaymentInfo = array();//$cart->output(); oseMscAddon::runAction('register.payment.save',array('member_id'=>$user->id,'payment_method'=>'none'), true, false); $order_id = JRequest::getInt('order_id',0); oseRegistry::call('payment')->getInstance('Order')->confirmOrder($order_id, array()); $cart->init(); $cart->__construct(); $cart1 = oseMscPublic::getCart();$cart1->__construct(); $cart1->cart = $cCart; $cart1->update(); } else { $cart = oseMscPublic::getCart(); // get current item //$cItems = $cart->output(); //$cart->init(); $cart->updateParams('payment_mode','m'); $paymentInfo = oseRegistry::call('msc')->getPaymentMscInfo($autoUpdateGroup,$cart->get('currency'),0); $nItem = array('entry_id'=>$autoUpdateGroup,'entry_type'=>'msc','msc_option'=>oseObject::getValue($paymentInfo,'msc_option')); $cart->addItem($nItem['entry_id'],$nItem['entry_type'],$nItem); $cart->update(); $orderPaymentInfo = array();//$cart->output(); $orderResult = oseMscAddon::runAction('register.payment.save',array('member_id'=>$user->id,'payment_method'=>'none'), true, false); $order_id = JRequest::getInt('order_id',0); oseRegistry::call('payment')->getInstance('Order')->confirmOrder($order_id, array()); $cart->init(); /*$orderPaymentInfo = $cart->output(); oseMscPublic::generateOrder($user['id'],'none',$orderPaymentInfo); $order_id = JRequest::getInt('order_id',0);oseExit($order_id); oseRegistry::call('payment')->getInstance('Order')->confirmOrder($order_id, array());*/ } } } $member = oseRegistry::call('member'); $member->instance($user->id); $mscs = $member->getAllOwnedMsc(true,null,'obj'); $date = oseHTML::getDateTime(); $date = strtotime($date); $updateStatus = false; if(!empty($mscs)) { foreach($mscs as $msc) { $startdate = strtotime($msc->start_date); $expdate = strtotime($msc->expired_date); $params = oseJson::decode($msc->params); if($msc->status && ($startdate>$date) && (($date<$expdate) || $msc->eternal == 1 || $msc->expired_date == '0000-00-00 00:00:00')) { $updateStatus = true; $status = 0; }elseif(empty($msc->status) && ($startdate < $date) && (($date<$expdate) || $msc->eternal == 1 || $msc->expired_date == '0000-00-00 00:00:00')) { $updateStatus = true; $status = 1; } if($updateStatus) { $query = "SELECT * FROM `#__osemsc_order_item` WHERE `order_id` = ".$params->order_id; $db->setQuery($query); $orderItem = $db->loadObject(); $orderItemParams = oseJson::decode($orderItem->params); if($orderItemParams->recurrence_mode == 'fixed') { $query = "UPDATE `#__osemsc_member` SET `status` = '{$status}' WHERE `id` = ".$msc->id; $db->setQuery($query); $db->query(); } } } } if ($singleLogin>0) { self::singleLogin($singleLogin, $db, $user, $mainframe); } if ($loginRedirect == true) { if (!empty($user)) { self::loginRedirect($user->id); } } return true; }
function getMemberRestrictedContent($type = 'joomla', $content_type, $member_id, $rType = 'array') { $db = oseDB::instance(); $member = oseRegistry::call('member'); $member->instance($member_id); $mscs = $member->getAllOwnedMsc(false, 1, 'obj'); // get restricted of status 1; Step 1 get the start date $mValues = array(); $startDate = array(); foreach ($mscs as $msc) { $startDate[$msc->msc_id] = $msc->start_date; $mValues[] = $msc->msc_id; } if (!empty($mValues)) { $mValues = '(' . implode(',', $mValues) . ')'; $cquery = " (child.entry_id IN {$mValues} AND child.entry_type = 'msc') " . " OR " . " (child.entry_id = '{$member_id}' AND child.entry_type = 'member') "; $bquery = " (entry_id IN {$mValues} AND entry_type = 'msc') " . " OR " . " (entry_id = '{$member_id}' AND entry_type = 'member') "; } else { $cquery = " (child.entry_id = '{$member_id}' AND child.entry_type = 'member') "; $bquery = " (entry_id = '{$member_id}' AND entry_type = 'member') "; } $cWhere = array(); $cWhere[] = $cquery; $cWhere[] = "child.type = '{$type}'"; $cWhere[] = "child.content_type = '{$content_type}'"; $cWhere[] = "child.status = '1'"; $cWhere = oseDB::implodeWhere($cWhere); $pWhere = array(); $pWhere[] = "parent.type = '{$type}'"; $pWhere[] = "parent.content_type = '{$content_type}'"; $pWhere[] = "parent.status = '1'"; $pWhere = oseDB::implodeWhere($pWhere); $query = " SELECT parent.* FROM `{$this->table}` AS parent" . " WHERE parent.content_id NOT IN (" . " \t\tSELECT DISTINCT child.content_id " . " \t\tFROM `{$this->table}` AS child" . $cWhere . " )" . " AND " . str_replace('WHERE', '', $pWhere); $db->setQuery($query); //oseExit($db->_sql); $objs = oseDB::loadList($rType); // get restricted of status -1; $bWhere = array(); $bWhere[] = $bquery; $bWhere[] = "type = '{$type}'"; $bWhere[] = "content_type = '{$content_type}'"; $bWhere[] = "status = '-1'"; $bWhere = oseDB::implodeWhere($bWhere); $query = " SELECT DISTINCT content_id " . " FROM `{$this->table}` " . $bWhere; $db->setQuery($query); $banObj = oseDB::loadList($rType); if (empty($objs)) { $objs = array(); } if (empty($banObj)) { $banObj = array(); } // get restricted of sequential, status = 1 $query = " SELECT DISTINCT child.content_id, child.entry_id, child.params " . " \tFROM `{$this->table}` AS child" . $cWhere; $db->setQuery($query); $sqeObjs = oseDB::loadList($rType); foreach ($sqeObjs as $key => $sqeObj) { $params = oseJson::decode(oseObject::getValue($sqeObj, 'params', '{}')); $timeLength = oseObject::getValue($params, 'time_length', false); if ($timeLength) { // provided that entry type is msc $total = strtotime("+{$timeLength} week", strtotime($startDate[oseObject::getValue($sqeObj, 'entry_id')])); $cur = strtotime(oseHTML::getDateTime()); //oseExit($timeLength); if ($cur > $total) { unset($sqeObjs[$key]); } } else { unset($sqeObjs[$key]); } } $objs = array_merge($objs, $banObj, $sqeObjs); //oseExit(oseDB::loadList($rType)); return $objs; }
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; }
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; }
function queryRebill($type) { $orderInfo = $this->get('orderInfo'); $orderInfoParams = oseJson::decode(oseObject::getValue($orderInfo, 'params')); $postVar = array(); $postVar['RebillID'] = oseObject::getValue($orderInfo, 'payment_serial_number'); $postVar['RebillCustomerID'] = $orderInfoParams->RebillCustomerID; switch ($type) { case 'today': $postVar['startDate'] = date('Y-m-d', strtotime('-1 day', strtotime(oseHTML::getDateTime()))); $postVar['endDate'] = date('Y-m-d', strtotime('+1 day', strtotime(oseHTML::getDateTime()))); $postVar['status'] = 'Successful'; $action = 'QueryTransactions'; $resultKey = 'QueryTransactionsResult'; break; case 'next': $action = 'QueryNextTransaction'; $resultKey = 'QueryNextTransactionResult'; break; case 'bill': $action = 'QueryRebillEvent'; $resultKey = 'RebillEventDetails'; break; } $resArray = $this->_soapcall($action, $postVar, true); $resArray = $resArray[$resultKey]; if (!empty($resArray)) { $resArray['success'] = true; return $resArray; } else { return $this->getErrorMessage('cc', '0004', $resArray['ErrorDetails']); } }
private static function activateInAutomaticMode($msc_id,$member_id,$orderInfo,$ext) { $db = oseDB::instance(); $result = array(); $result['success'] = true; $orderParams = oseJSON::decode($orderInfo->params); $start_date = oseHTML::getDateTime(); $start_date = $db->Quote($start_date); $recurrence_num = $orderParams->p3; $recurrence_unit = $orderParams->t3; $expired_date = " DATE_ADD({$start_date},INTERVAL {$recurrence_num} {$recurrence_unit}) "; $query = " UPDATE `#__osemsc_member` " ." SET expired_date = {$expired_date}" ." WHERE member_id = {$member_id} AND msc_id = {$msc_id} " ; $db->setQuery($query); //oseExit($db->_sql); if(!oseDB::query()) { $result['success'] = false; $result['title'] = 'Error'; $result['content'] = JText::_(' Fail Updated Member\'s Recurrence '); return $result; } $query = " SELECT expired_date FROM `#__osemsc_member` " ." WHERE member_id = {$member_id} AND msc_id = {$msc_id} " ; $db->setQuery($query); $end_date = $db->loadResult(); $end_date = $db->Quote($end_date); $expired_date = " DATE_ADD({$end_date},INTERVAL 1 DAY) "; if(oseObject::getValue($orderParams,'recurrence_times',0) > 1) { } else { $query = " UPDATE `#__osemsc_member` " ." SET expired_date = {$expired_date}" ." WHERE member_id = {$member_id} AND msc_id = {$msc_id} " ; $db->setQuery($query); //oseExit($db->_sql); if(!oseDB::query()) { $result['success'] = false; $result['title'] = 'Error'; $result['content'] = JText::_(' Fail Updated Member\'s Recurrence '); return $result; } } 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; }
public static function save($params) { $now = oseHTML::getDateTime(); $result = array(); $result['success'] = true; if(empty($params['allow_work'])) { $result['success'] = false; $result['title'] = 'Error'; $result['content'] = JText::_("Error"); return $result; } unset($params['allow_work']); if($params['join_from'] != 'payment') { $result['success'] = true; $result['title'] = 'Done'; $result['content'] = JText::_("Done"); return $result; } $post = JRequest::get('post'); $member_id = $params['member_id']; $db = oseDB::instance(); $user = JFactory::getUser(); $query = " SELECT * FROM `#__oselic_cs_keys_view`" ." WHERE user_id = {$member_id}" ; $db->setQuery($query); $item = oseDB::loadItem('obj'); $company_id = $item->company_id; //oseExit($company); $query = " SELECT eternal, expired_date FROM `#__osemsc_member`" ." WHERE member_id = {$member_id}" ; $db->setQuery($query); $obj = $db->loadObject(); $publish_down = empty($obj->eternal)?$obj->expired_date:'0000-00-00 00:00:00'; $query = " SELECT directory_id FROM `#__osemsc_directory`" ." WHERE company_id = {$company_id}" ; $db->setQuery($query); $directory_id = $db->loadResult(); if (empty ($directory_id)) { $query = " INSERT INTO `#__mt_links` (user_id,link_published,link_approved,link_created,publish_down) VALUES ('{$member_id}','1','1','{$now}', '$publish_down')"; $db->setQuery($query); if(!oseDB::query()) { $result['success'] = false; $result['title'] = 'Error'; $result['content'] = JText::_("Error"); return $result; } $newMtLinkID = $db->insertid(); //Insert the image $query = " SELECT cf_id FROM `#__mt_customfields`" ." WHERE caption = 'Image' AND field_type = 'image'"; $db->setQuery($query); $cf_id = $db->loadResult(); $query = " INSERT INTO `#__mt_cfvalues` (cf_id, link_id) VALUES ('{$cf_id}', '{$newMtLinkID}')"; $db->setQuery($query); if(!oseDB::query()) { $result['success'] = false; $result['title'] = 'Error'; $result['content'] = JText::_("Error"); return $result; } $query = " INSERT INTO `#__mt_cfvalues_att` (cf_id, link_id) VALUES ('{$cf_id}', '{$newMtLinkID}')"; $db->setQuery($query); if(!oseDB::query()) { $result['success'] = false; $result['title'] = 'Error'; $result['content'] = JText::_("Error"); return $result; } $query = " INSERT INTO `#__osemsc_directory` (company_id) VALUES ({$company_id})"; $db->setQuery($query); if(!oseDB::query()) { $result['success'] = false; $result['title'] = 'Error'; $result['content'] = JText::_("Error"); return $result; } $newDirID = $db->insertid(); $query = " INSERT INTO `#__osemsc_mtrel` (link_id,directory_id) " ." VALUES ('{$newMtLinkID}','{$newDirID}')" ; $db->setQuery($query); if(!oseDB::query()) { $result['success'] = false; $result['title'] = 'Error'; $result['content'] = JText::_("Error"); return $result; } $result['success'] = true; $result['title'] = 'Done'; $result['content'] = JText::_('Joined Directory.'); } else { $result['success'] = true; $result['title'] = 'Done'; $result['content'] = JText::_('Joined Directory.'); } //echo $query;exit; return $result; }
private function searchMembers($intervaldays,$field) { //$intervaldays++; $db= JFactory :: getDBO(); $date = oseHTML::getDateTime(); $query= " SELECT mem.msc_id, mem.member_id, mem.params,mem.expired_date, mem.notified,muv.* FROM `#__osemsc_member` AS mem " . " INNER JOIN `#__osemsc_userinfo_view` AS muv ON muv.user_id = mem.member_id " . " WHERE DATEDIFF( mem.expired_date, '{$date}' ) BETWEEN {$intervaldays} AND {$intervaldays}+1 AND (mem.{$field} <> 1 OR mem.{$field} IS NULL) AND mem.status = 1 AND muv.primary_contact = 1"; $db->setQuery($query); $member_ids= $db->loadObjectList(); if(!empty($member_ids)) { foreach($member_ids as $k => $member) { $memParams = oseJson::decode($member->params); if(oseObject::getValue($memParams,'payment_mode','m') == 'm') { $dDiff = strtotime($member->expired_date) - strtotime(oseHtml::getDateTime()); if( $dDiff >= ($intervaldays * 86400) && $dDiff < ($intervaldays * 86400+86400)) { continue; } else { unset($member_ids[$k]); } } else { $dDiff = strtotime($member->expired_date) - strtotime(oseHtml::getDateTime()); if( $dDiff >= ($intervaldays * 86400+86400) && $dDiff < ($intervaldays * 86400+86400*2)) { continue; } else { unset($member_ids[$k]); } } } } return $member_ids; }