Пример #1
0
 function _postPayment($data)
 {
     $orderpayment_id = JRequest::getVar('orderpayment_id');
     $offline_payment_method = JRequest::getVar('offline_payment_method');
     $formatted = array('offline_payment_method' => $offline_payment_method);
     $nw_uname = JRequest::getVar('nw_username');
     $nw_uemail = JRequest::getVar('nw_useremail');
     $nw_uphone = JRequest::getVar('nw_userphone');
     JTable::addIncludePath(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_j2store' . DS . 'tables');
     $orderpayment = JTable::getInstance('Orders', 'Table');
     $orderpayment->load($orderpayment_id);
     $orderpayment->transaction_details = '訂單完成,等待付款!';
     $orderpayment->transaction_status = '本次交易使用智付寶線上金流模組。';
     $orderpayment->order_state = 'Pending';
     $orderpayment->order_state_id = 4;
     // PENDING
     if ($orderpayment->save()) {
         JLoader::register('J2StoreHelperCart', JPATH_SITE . DS . 'components' . DS . 'com_j2store' . DS . 'helpers' . DS . 'cart.php');
         J2StoreHelperCart::removeOrderItems($orderpayment->id);
     } else {
         $errors[] = $orderpayment->getError();
     }
     $user = JFactory::getUser();
     if ($user->id > 0) {
         $userprofile = JUserHelper::getProfile($user->id);
         $vars = new JObject();
         $vars->user_name = $user->name;
         $vars->user_email = $user->email;
     } else {
         $vars->user_name = $nw_uname;
         $vars->user_email = $nw_uemail;
         $vars->user_phone = $nw_uphone;
     }
     $vars->orderpayment_id = $orderpayment->id;
     $vars->ezship_email = $this->params->get('ezmail');
     $vars->ret_url = JURI::base() . 'index.php/component/nicepayment';
     $vars->orderpayment_amount = ceil($orderpayment->orderpayment_amount);
     $vars->paymethod = $offline_payment_method;
     $pay2go_message = '';
     $pay2go_message = $this->Pay2go_MPG($orderpayment->orderpayment_amount, $orderpayment->id);
     require_once JPATH_SITE . DS . 'components' . DS . 'com_j2store' . DS . 'helpers' . DS . 'orders.php';
     J2StoreOrdersHelper::sendUserEmail($orderpayment->user_id, $orderpayment->order_id, $orderpayment->transaction_status, $orderpayment->order_state, $orderpayment->order_state_id);
     return $pay2go_message;
 }
Пример #2
0
    echo $k;
    ?>
'>
				<td>
				<strong>
						<?php 
    echo JText::_($item->orderitem_name);
    ?>
					</strong>
						 <br />

					 	<!-- start of orderitem attributes -->

						<!-- backward compatibility -->
						<?php 
    if (!J2StoreOrdersHelper::isJSON(stripslashes($item->orderitem_attribute_names))) {
        ?>

							<?php 
        if (!empty($item->orderitem_attribute_names)) {
            ?>
								<span><?php 
            echo $item->orderitem_attribute_names;
            ?>
</span>
							<?php 
        }
        ?>
						<br />
						<?php 
    } else {
Пример #3
0
 /**
  * Processes the payment form
  * and returns HTML to be displayed to the user
  * generally with a success/failed message
  *
  * @param $data     array       form post data
  * @return string   HTML to display
  */
 function _postPayment($data)
 {
     // Process the payment
     $app = JFactory::getApplication();
     $vars = new JObject();
     $html = '';
     $orderpayment_id = $app->input->getInt('orderpayment_id');
     // load the orderpayment record and set some values
     JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_j2store/tables');
     $orderpayment = JTable::getInstance('Orders', 'Table');
     $orderpayment->load($orderpayment_id);
     if ($orderpayment->id == $orderpayment_id) {
         $payment_status = $this->getPaymentStatus($this->params->get('payment_status', 4));
         $orderpayment->transaction_status = $payment_status;
         $orderpayment->order_state = $payment_status;
         $orderpayment->order_state_id = $this->params->get('payment_status', 4);
         // DEFAULT: PENDING
         // save the orderpayment
         if ($orderpayment->save()) {
             JLoader::register('J2StoreHelperCart', JPATH_SITE . '/components/com_j2store/helpers/cart.php');
             // remove items from cart
             J2StoreHelperCart::removeOrderItems($orderpayment->id);
         } else {
             $errors[] = $orderpayment->getError();
         }
         // let us inform the user that the order is successful
         require_once JPATH_SITE . '/components/com_j2store/helpers/orders.php';
         J2StoreOrdersHelper::sendUserEmail($orderpayment->user_id, $orderpayment->order_id, $orderpayment->transaction_status, $orderpayment->order_state, $orderpayment->order_state_id);
         $vars->onafterpayment_text = $this->params->get('onafterpayment', '');
         // display the layout
         $html = $this->_getLayout('postpayment', $vars);
         // append the article with cash payment information
         $html .= $this->_displayArticle();
     }
     return $html;
 }
Пример #4
0
 /**
  * Processes the sale payment
  *
  * @param array $data IPN data
  * @return boolean Did the IPN Validate?
  * @access protected
  */
 function _processSale($data, $ipnValidationFailed = '')
 {
     /*
      * validate the payment data
      */
     $errors = array();
     if (!empty($ipnValidationFailed)) {
         $errors[] = $ipnValidationFailed;
     }
     if ($this->params->get('sandbox', 0)) {
         $merchant_email = trim($this->_getParam('sandbox_merchant_email'));
     } else {
         $merchant_email = trim($this->_getParam('merchant_email'));
     }
     // is the recipient correct?
     if (empty($data['receiver_email']) || JString::strtolower($data['receiver_email']) != JString::strtolower(trim($merchant_email))) {
         $errors[] = JText::_('J2STORE_PAYPAL_MESSAGE_RECEIVER_INVALID');
     }
     $custom = $data['custom'];
     $custom_array = explode('|', $custom);
     $order_id = $custom_array[0];
     //array 1 has the cart session key
     if (isset($custom_array[1])) {
         $cart_session_id = $custom_array[1];
     } else {
         $cart_session_id = '';
     }
     // load the orderpayment record and set some values
     JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_j2store/tables');
     $orderpayment = JTable::getInstance('Orders', 'Table');
     $orderpayment->load(array('order_id' => $order_id));
     if (!empty($order_id) && $orderpayment->order_id == $order_id) {
         $orderpayment->transaction_details = $data['transaction_details'];
         $orderpayment->transaction_id = $data['txn_id'];
         $orderpayment->transaction_status = $data['payment_status'];
         // check the stored amount against the payment amount
         // check the payment status
         if (empty($data['payment_status']) || $data['payment_status'] != 'Completed' && $data['payment_status'] != 'Pending') {
             $errors[] = JText::sprintf('J2STORE_PAYPAL_MESSAGE_STATUS_INVALID', @$data['payment_status']);
         }
         //set a default status to it
         //$orderpayment->order_state = JText::_('J2STORE_PENDING'); // PENDING
         //$orderpayment->order_state_id = 4; // PENDING
         // set the order's new status
         if (count($errors)) {
             // if an error occurred
             $orderpayment->order_state = JText::_('J2STORE_FAILED');
             // FAILED
             $orderpayment->order_state_id = 3;
             //FAILED
         } elseif (@$data['payment_status'] == 'Pending') {
             // if the transaction has the "pending" status,
             $orderpayment->order_state = JText::_('J2STORE_PENDING');
             // PENDING
             $orderpayment->order_state_id = 4;
             //PENDING
         } else {
             $orderpayment->order_state = trim(JText::_('J2STORE_CONFIRMED'));
             // CONFIRMED
             $orderpayment->order_state_id = 1;
             //CONFIRMED
             $orderpayment->paypal_status = @$data['payment_status'];
             // Paypal's original status
             JLoader::register('J2StoreHelperCart', JPATH_SITE . '/components/com_j2store/helpers/cart.php');
             // remove items from cart
             // J2StoreHelperCart::removeOrderItems( $orderpayment->id );
             if (!empty($cart_session_id)) {
                 //load session with id
                 $options = array('id' => $cart_session_id);
                 $session = JFactory::getSession($options);
                 $session->set('j2store_cart', array());
             }
         }
         // save the orderpayment
         if ($orderpayment->store()) {
             if ($orderpayment->order_state_id == 1 || $orderpayment->order_state_id == 4) {
                 // let us inform the user that the payment is successful
                 require_once JPATH_SITE . '/components/com_j2store/helpers/orders.php';
                 J2StoreOrdersHelper::sendUserEmail($orderpayment->user_id, $orderpayment->order_id, $data['payment_status'], $orderpayment->order_state, $orderpayment->order_state_id);
             }
         } else {
             $errors[] = $orderpayment->getError();
         }
     }
     return count($errors) ? implode("\n", $errors) : '';
 }
Пример #5
0
 /**
  * Processes the payment
  * This method process only real time (simple) payments
  *
  * @return  string   unknown_type.
  *
  * @return  string
  *
  * @access protected
  * */
 public function _process()
 {
     if (!JRequest::checkToken()) {
         return $this->_renderHtml(JText::_('J2STORE_PAYMILL_INVALID_TOKEN'));
     }
     $app = JFactory::getApplication();
     $data = $app->input->getArray($_POST);
     $json = array();
     $errors = array();
     // Get order information
     JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_j2store/tables');
     $order = JTable::getInstance('Orders', 'Table');
     $order->load($data['orderpayment_id']);
     // Check for exisiting things
     if (empty($order->order_id)) {
         $json['error'] = JText::_('J2STORE_PAYMILL_INVALID_ORDER');
     }
     if (empty($data['token'])) {
         $json['error'] = JText::_('J2STORE_PAYMILL_TOKEN_MISSING');
     }
     if (!$json) {
         $currency_values = $this->getCurrency($order);
         $amount = $this->getAmount($order->orderpayment_amount, $currency_values['currency_code'], $currency_values['currency_value'], $currency_values['convert']) * 100;
         try {
             require JPath::clean(dirname(__FILE__) . "/library/autoload.php");
             $request = new Paymill\Request($this->private_key);
             $request->setSource('J2Store');
             $transaction = new Paymill\Models\Request\Transaction();
             $transaction->setAmount($amount)->setCurrency($currency_values['currency_code'])->setToken($data['token'])->setDescription(JText::_('J2STORE_PAYMILL_ORDER_DESCRIPTION'));
             $response = $request->create($transaction);
             $paymentId = $response->getId();
             $responseCode = $response->getResponseCode();
             $raw = $request->getLastResponse();
             $rawResponse = $raw['body']['data'];
             $transaction_details = $this->_getFormattedTransactionDetails($rawResponse);
             $order->transaction_id = $paymentId;
             $order->transaction_details = $transaction_details;
             $order->transaction_status = $rawResponse['status'];
             $sendEmail = false;
             if (isset($rawResponse['error'])) {
                 $order->order_state_id = 3;
                 $order->order_state = JText::_('J2STORE_DECLINED');
                 $errors[] = $resp['error'];
             } elseif (strtolower($rawResponse['status']) == 'closed') {
                 $order->order_state_id = 1;
                 $order->order_state = JText::_('J2STORE_COMPLETED');
                 $sendEmail = true;
             } elseif (strtolower($rawResponse['status']) == 'pending') {
                 $order->order_state_id = 4;
                 $order->order_state = JText::_('J2STORE_PENDING');
             } elseif (strtolower($rawResponse['status']) == 'failed') {
                 $order->order_state_id = 3;
                 $order->order_state = JText::_('J2STORE_FAILED');
             } else {
                 $order->order_state_id = 3;
                 $order->order_state = JText::_('J2STORE_FAILED');
                 $errors[] = JText::_("J2STORE_PAYMILL_ERROR_PROCESSING_PAYMENT");
             }
             // save the orderpayment
             if (!$order->save()) {
                 $errors[] = $order->getError();
             }
         } catch (PaymillException $e) {
             //Do something with the error informations below
             $e->getResponseCode();
             $e->getStatusCode();
             $errMsg = $e->getErrorMessage();
             $errors[] = $errMsg;
             $this->_log($errMsg, 'payment response error');
         }
         if (empty($errors)) {
             // remove items from cart
             J2StoreHelperCart::removeOrderItems($order->id);
             if ($sendEmail) {
                 //let us inform the user that the payment is successful
                 J2StoreOrdersHelper::sendUserEmail($order->user_id, $order->order_id, $order->order_state, $order->order_state, $order->order_state_id);
             }
             $json['success'] = JText::_($this->params->get('onafterpayment', ''));
             $json['redirect'] = JRoute::_('index.php?option=com_j2store&view=checkout&task=confirmPayment&orderpayment_type=' . $this->_element . '&paction=display');
         }
         if (count($errors)) {
             $json['error'] = implode("\n", $errors);
         }
     }
     return $json;
 }
Пример #6
0
 public static function sendUserEmail($user_id, $order_id, $payment_status, $order_status, $order_state_id)
 {
     $mainframe = JFactory::getApplication();
     $config = JFactory::getConfig();
     $j2params = JComponentHelper::getParams('com_j2store');
     if (version_compare(JVERSION, '3.0', 'ge')) {
         $sitename = $config->get('sitename');
     } else {
         $sitename = $config->getValue('config.sitename');
     }
     //now get the order table's id based on order id
     $order = J2StoreOrdersHelper::_getOrderKey($order_id);
     //inventory
     //TODO::move this function to the plugin.
     require_once JPATH_ADMINISTRATOR . '/components/com_j2store/library/inventory.php';
     require_once JPATH_ADMINISTRATOR . '/components/com_j2store/version.php';
     J2StoreInventory::setInventory($order->id, $order_state_id);
     $mainframe->triggerEvent('onJ2StoreBeforeOrderNotification', array($order));
     //now get the receipient
     $recipient = J2StoreOrdersHelper::_getRecipient($order->order_id);
     //check for email templates. If it is there, get the orderemail from there
     require_once JPATH_SITE . '/components/com_j2store/helpers/email.php';
     $emailHelper = new J2StoreHelperEmail();
     $orderObj = self::getOrder($order->id);
     if (count($emailHelper->getEmailTemplates($orderObj)) && J2STORE_PRO == 1) {
         $mailer = $emailHelper->getEmail($orderObj);
     } else {
         if ($user_id && empty($recipient->billing_first_name)) {
             $recipient->name = JFactory::getUser($user_id)->name;
         } else {
             $recipient->name = $recipient->billing_first_name . ' ' . $recipient->billing_last_name;
         }
         $body = J2StoreOrdersHelper::_getHtmlFormatedOrder($order->id, $user_id);
         $subject = JText::sprintf('J2STORE_ORDER_USER_EMAIL_SUB', $recipient->name, $sitename);
         $mailer = clone JFactory::getMailer();
         $mailer->IsHTML(true);
         $mailer->CharSet = 'UTF-8';
         $mailer->setSubject($subject);
         $mailer->setBody($body);
     }
     $admin_emails = $j2params->get('admin_email');
     $admin_emails = explode(',', $admin_emails);
     if (version_compare(JVERSION, '3.0', 'ge')) {
         $mailfrom = $j2params->get('emails_defaultemail', $config->get('mailfrom'));
         $fromname = $j2params->get('emails_defaultname', $config->get('fromname'));
     } else {
         $mailfrom = $j2params->get('emails_defaultemail', $config->getValue('config.mailfrom'));
         $fromname = $j2params->get('emails_defaultname', $config->getValue('config.fromname'));
     }
     //send email
     if ($recipient) {
         $mailer->addRecipient($recipient->user_email);
         //	$mailer->addBCC( $admin_emails );
         $mailer->setSender(array($mailfrom, $fromname));
         $mailer->send();
         $mailer = null;
     }
     if ($admin_emails) {
         if (count($emailHelper->getEmailTemplates($orderObj)) && J2STORE_PRO == 1) {
             $mailer = $emailHelper->getEmail($orderObj);
         } else {
             $mailer = clone JFactory::getMailer();
             $mailer->IsHTML(true);
             $mailer->CharSet = 'UTF-8';
             $mailer->setSubject($subject);
             $mailer->setBody($body);
         }
         $mailer->addRecipient($admin_emails);
         $mailer->setSender(array($mailfrom, $fromname));
         $mailer->send();
         $mailer = null;
     }
     $mainframe->triggerEvent('onJ2StoreAfterOrderNotification', array($order));
     return true;
 }
 function _process()
 {
     $app = JFactory::getApplication();
     $data = $app->input->getArray($_POST);
     $api_key = $this->_secret_key;
     // get order data from table using response data
     $json = array();
     if (!JRequest::checkToken()) {
         $json['error'] = JText::_('J2STORE_HEARTLAND_INVALID_TOKEN');
     }
     JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_j2store/tables');
     $order = JTable::getInstance('Orders', 'Table');
     $order->load($data['orderpayment_id']);
     $error = false;
     // validate order and params
     if (empty($data['hearttoken'])) {
         $json['error'] = JText::_('J2STORE_HEARTLAND_TOKEN_MISSING');
         $error = true;
     }
     if (empty($order->order_id)) {
         $json['error'] = JText::_('J2STORE_HEARTLAND_INVALID_ORDER');
         $error = true;
     }
     if (empty($api_key)) {
         $json['error'] = JText::_('J2STORE_HEARTLAND_MESSAGE_MISSING_LOGIN_APIKEY');
         $error = true;
     }
     // erroring:
     if (!$error) {
         try {
             // heartland config code
             $config = new HpsServicesConfig();
             $config->secretApiKey = $api_key;
             $config->versionNumber = '1929';
             $config->developerId = '002914';
             $chargeService = new HpsCreditService($config);
             // add cardholder details
             $address = new HpsAddress();
             $address->address = html_entity_decode($data['address'], ENT_QUOTES, 'UTF-8');
             $address->city = html_entity_decode($data['city'], ENT_QUOTES, 'UTF-8');
             $address->state = html_entity_decode($data['region'], ENT_QUOTES, 'UTF-8');
             $address->country = html_entity_decode($data['country'], ENT_QUOTES, 'UTF-8');
             $address->zip = html_entity_decode($data['postal_code'], ENT_QUOTES, 'UTF-8');
             $cardHolder = new HpsCardHolder();
             $cardHolder->firstName = html_entity_decode($data['first_name'], ENT_QUOTES, 'UTF-8');
             $cardHolder->lastName = html_entity_decode($data['last_name'], ENT_QUOTES, 'UTF-8');
             $cardHolder->email = $data['email'];
             $cardHolder->address = $address;
             $currency_values = $this->getCurrency($order);
             $orderpayment_amount = $this->getAmount($data['orderpayment_amount'], $currency_values['currency_code'], $curency_value, true);
             $suToken = new HpsTokenData();
             $suToken->tokenValue = $data['hearttoken'];
             $response = $chargeService->charge($orderpayment_amount, strtolower($currency_values['currency_code']), $suToken, $cardHolder);
             $data['transaction_details'] = $response;
             if (isset($response->transactionId)) {
                 $data['transaction_id'] = (string) $response->transactionId;
             }
             if (isset($response->responseText)) {
                 $data['status'] = (string) $response->responseText;
             }
         } catch (HpsException $e) {
             $json['error'] = $e;
         }
     }
     if (empty($data['transaction_id'])) {
         $json['error'] = JText::_('J2STORE_HEARTLAND_MESSAGE_MISSING_TRANSACTION_ID');
     }
     if (empty($data['status'])) {
         $json['error'] = JText::_('J2STORE_HEARTLAND_MESSAGE_MISSING_TRANSACTION_STATUS');
     }
     if (!$json) {
         // change order status and log data
         $order->transaction_details = $data['transaction_details'];
         $order->transaction_id = $data['transaction_id'];
         $order->transaction_status = $data['status'];
         // TODO:we have to check confirm status message
         if ($data['status'] == "APPROVAL") {
             $order->order_state = trim(JText::_('J2STORE_CONFIRMED'));
             // CONFIRMED
             $order->order_state_id = 1;
             // CONFIRMED
             $order->paypal_status = @$data['status'];
             // Paypal's original status
             JLoader::register('J2StoreHelperCart', JPATH_SITE . '/components/com_j2store/helpers/cart.php');
             // remove items from cart
             // J2StoreHelperCart::removeOrderItems( $orderpayment->id );
             if (!empty($data['cart_session_id'])) {
                 // load session with id
                 $options = array('id' => $data['cart_session_id']);
                 $session = JFactory::getSession($options);
                 $session->set('j2store_cart', array());
             }
         } else {
             // failed status
             $order->order_state = JText::_('J2STORE_FAILED');
             // FAILED
             $order->order_state_id = 3;
             // FAILED
         }
         if ($order->store()) {
         } else {
             $json['error'] = $order->getError();
         }
     }
     if (!$json) {
         $json['success'] = JText::_($this->params->get('onafterpayment', ''));
         $json['redirect'] = JRoute::_('index.php?option=com_j2store&view=checkout&task=confirmPayment&orderpayment_type=' . $this->_element . '&paction=display');
         require_once JPATH_SITE . '/components/com_j2store/helpers/orders.php';
         J2StoreOrdersHelper::sendUserEmail($order->user_id, $order->order_id, $data['status'], $order->order_state, $order->order_state_id);
     } else {
         $this->_sendErrorEmails($error, $data['transaction_details']);
     }
     return $json;
 }
Пример #8
0
        ?>
	<?php 
        if (is_object($field)) {
            ?>
		<dt><?php 
            echo JText::_($field->label);
            ?>
:</dt>
		<dd>
		<?php 
            if (is_array($field->value)) {
                echo '<br />';
                foreach ($field->value as $value) {
                    echo '- ' . JText::_($value) . '<br/>';
                }
            } elseif (J2StoreOrdersHelper::isJson(stripslashes($field->value))) {
                $json_values = json_decode(stripslashes($field->value));
                if (is_array($json_values)) {
                    foreach ($json_values as $value) {
                        echo '- ' . JText::_($value) . '<br/>';
                    }
                } else {
                    echo JText::_($field->value);
                }
            } else {
                echo JText::_($field->value);
            }
            ?>
		</dd>
<?php 
        }
Пример #9
0
 /**
  * Proceeds the simple payment
  *
  * @param string $resp
  * @param array $submitted_values
  * @return object Message object
  * @access protected
  */
 function _evaluateSimplePaymentResponse($resp, $submitted_values)
 {
     $object = new JObject();
     $object->message = '';
     $html = '';
     $errors = array();
     $return = array();
     $payment_status = JText::_('J2STORE_INCOMPLETE');
     $user = JFactory::getUser();
     $transaction_details = $this->_getFormattedTransactionDetails($resp);
     $this->_log($transaction_details, 'Payment Gateway Response');
     // Evaluate a typical response from sage pay
     $this->_log($resp['Status']);
     switch ($resp['Status']) {
         case 'OK':
             // Approved
             $payment_status = JText::_('J2STORE_COMPLETED');
             break;
         case 'MALFORMED':
         case 'INVALID':
         case 'NOTAUTHED':
         case 'REJECTED':
         case 'ERROR':
             // Declined
             $payment_status = JText::_('J2STORE_DECLINED');
             $errors[] = $resp['StatusDetail'];
             break;
         default:
             // Error
             $payment_status = JText::_('J2STORE_ERROR');
             $order_status = JText::_('J2STORE_INCOMPLETE');
             $errors[] = $this->params->get('onerrorpayment', ' ');
             break;
     }
     // =======================
     // verify & create payment
     // =======================
     $orderpayment_id = $this->_getOrderPaymentId($submitted_values['VendorTxCode']);
     // check that payment amount is correct for order_id
     JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_j2store/tables');
     $orderpayment = JTable::getInstance('Orders', 'Table');
     $orderpayment->load($orderpayment_id);
     if (empty($orderpayment->order_id)) {
         // TODO fail
     }
     $transaction_id = isset($resp['VPSTxId']) ? $resp['VPSTxId'] : '';
     $orderpayment->transaction_details = $transaction_details;
     $orderpayment->transaction_id = $transaction_id;
     $orderpayment->transaction_status = $payment_status;
     //set a default status to it
     $orderpayment->order_state = JText::_('J2STORE_PENDING');
     // PENDING
     $orderpayment->order_state_id = 4;
     // PENDING
     // set the order's new status and update quantities if necessary
     if (count($errors)) {
         // if an error occurred
         $orderpayment->order_state = trim(JText::_('J2STORE_FAILED'));
         // FAILED
         $orderpayment->order_state_id = 3;
         // FAILED
     } else {
         $orderpayment->order_state = trim(JText::_('J2STORE_CONFIRMED'));
         // Payment received and CONFIRMED
         $orderpayment->order_state_id = 1;
         // CONFIRMED
         JLoader::register('J2StoreHelperCart', JPATH_SITE . '/components/com_j2store/helpers/cart.php');
         // remove items from cart
         J2StoreHelperCart::removeOrderItems($orderpayment->id);
         //$this->setOrderPaymentReceived( $orderpayment->order_id );
     }
     // save the order
     if (!$orderpayment->save()) {
         $errors[] = $orderpayment->getError();
     }
     if (empty($errors)) {
         // let us inform the user that the payment is successful
         require_once JPATH_SITE . '/components/com_j2store/helpers/orders.php';
         J2StoreOrdersHelper::sendUserEmail($orderpayment->user_id, $orderpayment->order_id, $payment_status, $orderpayment->order_state, $orderpayment->order_state_id);
         $return['success'] = JText::_($this->params->get('onafterpayment', ''));
         $return['redirect'] = JRoute::_('index.php?option=com_j2store&view=checkout&task=confirmPayment&orderpayment_type=' . $this->_element . '&paction=display');
     } else {
         $error = count($errors) ? implode("\n", $errors) : '';
         $this->_sendErrorEmails($error, $transaction_details);
         $this->_log($error, 'Transaction Errors');
         $return['error'] = $error;
     }
     return $return;
     // ===================
     // end custom code
     // ===================
 }
Пример #10
0
 /**
  * Processes the payment form
  * and returns HTML to be displayed to the user
  * generally with a success/failed message
  *
  * @param $data     array       form post data
  * @return string   HTML to display
  */
 function _postPayment($data)
 {
     // Process the payment
     $app = JFactory::getApplication();
     $vars = new JObject();
     $html = '';
     $orderpayment_id = $app->input->getInt('orderpayment_id');
     // load the orderpayment record and set some values
     JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_j2store/tables');
     $orderpayment = JTable::getInstance('Orders', 'Table');
     $orderpayment->load($orderpayment_id);
     if ($orderpayment->id == $orderpayment_id) {
         $bank_information = stripslashes($_POST['moneyorder_information']);
         //we have to save the bank information in the customer note because that is the only field availale to display now
         //TODO: Trigger a plugin event so that you can show custom info depending on the payment plugin.
         //get the customer note. We dont want to overwrite it.
         if (JString::strlen($bank_information) > 5) {
             $customer_note = $orderpayment->customer_note;
             $html = '<br />';
             $html .= '<strong>' . JText::_('J2STORE_MONEYORDER_INSTRUCTIONS') . '</strong>';
             $html .= '<br />';
             $html .= $bank_information;
             $orderpayment->customer_note = $customer_note . $html;
         }
         $payment_status = $this->getPaymentStatus($this->params->get('payment_status', 4));
         $orderpayment->transaction_status = $payment_status;
         $orderpayment->order_state = $payment_status;
         $orderpayment->order_state_id = $this->params->get('payment_status', 4);
         // DEFAULT: PENDING
         // save the orderpayment
         if ($orderpayment->save()) {
             JLoader::register('J2StoreHelperCart', JPATH_SITE . '/components/com_j2store/helpers/cart.php');
             // remove items from cart
             J2StoreHelperCart::removeOrderItems($orderpayment->id);
         } else {
             $errors[] = $orderpayment->getError();
         }
         // let us inform the user that the order is successful
         require_once JPATH_SITE . '/components/com_j2store/helpers/orders.php';
         J2StoreOrdersHelper::sendUserEmail($orderpayment->user_id, $orderpayment->order_id, $orderpayment->transaction_status, $orderpayment->order_state, $orderpayment->order_state_id);
         $vars->onafterpayment_text = $this->params->get('onafterpayment', '');
         // display the layout
         $html = $this->_getLayout('postpayment', $vars);
         // append the article with moneyorder payment information
         $html .= $this->_displayArticle();
     }
     return $html;
 }
Пример #11
0
 private function processCustomFields($row, $type, $text)
 {
     if ($type == 'billing') {
         $field = 'all_billing';
     } elseif ($type == 'shipping') {
         $field = 'all_shipping';
     } elseif ($type == 'payment') {
         $field = 'all_payment';
     }
     $fields = array();
     if (!empty($row->{$field}) && JString::strlen($row->{$field}) > 0) {
         $custom_fields = $this->getDecodedFields($row->{$field});
         if (isset($custom_fields) && count($custom_fields)) {
             foreach ($custom_fields as $namekey => $field) {
                 if (!property_exists($row, $type . '_' . $namekey) && !property_exists($row, 'user_' . $namekey) && $namekey != 'country_id' && $namekey != 'zone_id' && $namekey != 'option' && $namekey != 'task' && $namekey != 'view') {
                     $fields[$namekey] = $field;
                 }
             }
         }
     }
     if (isset($fields) && count($fields)) {
         foreach ($fields as $namekey => $field) {
             //label
             /* $tag_label = '[CUSTOM_'.strtoupper($type).'_LABEL:'.strtoupper($namekey).']';
             				$text = str_replace($tag_label, $field['label'], $text);
             
             				//value
             				$tag_value = '[CUSTOM_'.strtoupper($type).'_VALUE:'.strtoupper($namekey).']';
             
             				if(is_array($field['value'])) {
             					$v = '';
             					foreach($field['value'] as $value) {
             						$v .= '-'.JText::_($value).'\n';
             					}
             					$value = $v;
             				} else {
             					$value = JText::_($field['value']);
             				}
             
             
             				$text = str_replace($tag_value, $field['value'], $text);
             
              */
             $string = '';
             if (is_array($field['value'])) {
                 foreach ($field['value'] as $value) {
                     $string .= '-' . JText::_($value) . '\\n';
                 }
             } elseif (J2StoreOrdersHelper::isJson(stripslashes($field['value']))) {
                 $json_values = json_decode(stripslashes($field['value']));
                 foreach ($json_values as $value) {
                     $string .= '-' . JText::_($value) . '\\n';
                 }
             } else {
                 $string = JText::_($field['value']);
             }
             $value = $field['label'] . ' : ' . $string;
             $tag_value = '[CUSTOM_' . strtoupper($type) . '_FIELD:' . strtoupper($namekey) . ']';
             $text = str_replace($tag_value, $value, $text);
         }
     }
     return $text;
 }
Пример #12
0
 /**
  * Processes the payment form
  * and returns HTML to be displayed to the user
  * generally with a success/failed message
  *
  * @param $data     array       form post data
  * @return string   HTML to display
  */
 function _postPayment($data)
 {
     // Process the payment
     $vars = new JObject();
     $orderpayment_id = JRequest::getVar('orderpayment_id');
     $offline_payment_method = JRequest::getVar('offline_payment_method');
     $formatted = array('offline_payment_method' => $offline_payment_method);
     // load the orderpayment record and set some values
     JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_j2store/tables');
     $orderpayment = JTable::getInstance('Orders', 'Table');
     //remove this after live.
     //$orderpayment_id = substr($orderpayment_id, 2, 3);
     $orderpayment->load($orderpayment_id);
     $orderpayment->transaction_details = implode("\n", $formatted);
     //$orderpayment->transaction_status = JText::_('Pending_Payment');
     //$orderpayment->order_state = JText::_('Pending');
     $payment_status = $this->getPaymentStatus($this->params->get('payment_status', 4));
     $orderpayment->transaction_status = $payment_status;
     $orderpayment->order_state = $payment_status;
     $orderpayment->order_state_id = $this->params->get('payment_status', 4);
     // DEFAULT: PENDING
     // save the orderpayment
     if ($orderpayment->save()) {
         JLoader::register('J2StoreHelperCart', JPATH_SITE . '/components/com_j2store/helpers/cart.php');
         // remove items from cart
         J2StoreHelperCart::removeOrderItems($orderpayment->id);
     } else {
         $errors[] = $orderpayment->getError();
     }
     // let us inform the user that the order is successful
     require_once JPATH_SITE . '/components/com_j2store/helpers/orders.php';
     J2StoreOrdersHelper::sendUserEmail($orderpayment->user_id, $orderpayment->order_id, $orderpayment->transaction_status, $orderpayment->order_state, $orderpayment->order_state_id);
     $vars->onafterpayment_text = $this->params->get('onafterpayment', '');
     // display the layout
     $html = $this->_getLayout('postpayment', $vars);
     // append the article with offline payment information
     $html .= $this->_displayArticle();
     return $html;
 }
Пример #13
0
 /**
  * This method occurs after payment is attempted,
  * and fires the onPostPayment plugin event
  *
  * @return unknown_type
  */
 function confirmPayment()
 {
     $app = JFactory::getApplication();
     $orderpayment_type = $app->input->getString('orderpayment_type');
     // Get post values
     $values = $app->input->getArray($_POST);
     //backward compatibility for payment plugins
     foreach ($values as $name => $value) {
         $app->input->set($name, $value);
     }
     //set the guest mail to null if it is present
     //check if it was a guest checkout
     $account = $this->session->get('account', 'register', 'j2store');
     // get the order_id from the session set by the prePayment
     $orderpayment_id = (int) $app->getUserState('j2store.orderpayment_id');
     if ($account != 'guest') {
         $order_link = 'index.php?option=com_j2store&view=orders&task=view&id=' . $orderpayment_id;
     } else {
         $guest_token = $app->getUserState('j2store.order_token');
         $order_link = 'index.php?option=com_j2store&view=orders&task=view';
         //assign to another session variable, for security reasons
         if ($this->session->has('guest', 'j2store')) {
             $guest = $this->session->get('guest', array(), 'j2store');
             $this->session->set('guest_order_email', $guest['billing']['email']);
             $this->session->set('guest_order_token', $guest_token);
         }
     }
     $dispatcher = JDispatcher::getInstance();
     JPluginHelper::importPlugin('j2store');
     $html = "";
     $order = $this->_order;
     $order->load(array('id' => $orderpayment_id));
     //save the coupon to the order_coupons table for tracking and unset session.
     if ($this->session->has('coupon', 'j2store')) {
         $db = JFactory::getDbo();
         $query = $db->getQuery(true);
         $query->select('*')->from('#__j2store_coupons')->where('coupon_code=' . $db->q($this->session->get('coupon', '', 'j2store')))->where('state=1');
         $query->where("((valid_from = '0000-00-00' OR valid_from < NOW()) AND (valid_to = '0000-00-00' OR valid_to > NOW()))");
         $db->setQuery($query);
         $coupon_info = $db->loadObject();
         if ($coupon_info) {
             $order_coupons = JTable::getInstance('OrderCoupons', 'Table');
             $order_coupons->set('coupon_id', $coupon_info->coupon_id);
             $order_coupons->set('coupon_code', $coupon_info->coupon_code);
             $order_coupons->set('orderpayment_id', $orderpayment_id);
             $order_coupons->set('order_id', $order->order_id);
             $order_coupons->set('customer_id', JFactory::getUser()->id);
             $order_coupons->set('customer_email', $order->user_email);
             $order_coupons->set('amount', $order->order_discount);
             $order_coupons->set('created_date', JFactory::getDate()->toSql());
             $order_coupons->store();
         }
     }
     // free product? set the state to confirmed and save the order.
     if (!empty($orderpayment_id) && (double) $order->order_total == (double) '0.00') {
         $order->order_state = trim(JText::_('CONFIRMED'));
         $order->order_state_id = '1';
         // PAYMENT RECEIVED.
         if ($order->save()) {
             // remove items from cart
             J2StoreHelperCart::removeOrderItems($order->id);
         }
         //send email
         require_once JPATH_SITE . '/components/com_j2store/helpers/orders.php';
         J2StoreOrdersHelper::sendUserEmail($order->user_id, $order->order_id, $order->transaction_status, $order->order_state, $order->order_state_id);
     } else {
         // get the payment results from the payment plugin
         $results = $dispatcher->trigger("onJ2StorePostPayment", array($orderpayment_type, $values));
         // Display whatever comes back from Payment Plugin for the onPrePayment
         for ($i = 0; $i < count($results); $i++) {
             $html .= $results[$i];
         }
         // re-load the order in case the payment plugin updated it
         $order->load(array('id' => $orderpayment_id));
     }
     // $order_id would be empty on posts back from Paypal, for example
     if (isset($orderpayment_id)) {
         //unset a few things from the session.
         $this->session->clear('shipping_method', 'j2store');
         $this->session->clear('shipping_methods', 'j2store');
         $this->session->clear('payment_method', 'j2store');
         $this->session->clear('payment_methods', 'j2store');
         $this->session->clear('payment_values', 'j2store');
         $this->session->clear('guest', 'j2store');
         $this->session->clear('customer_note', 'j2store');
         //clear the session
         $this->session->clear('coupon', 'j2store');
         //trigger onAfterOrder plugin event
         $results = $dispatcher->trigger("onJ2StoreAfterPayment", array($order));
         foreach ($results as $result) {
             $html .= $result;
         }
         // Set display
         $view = $this->getView('checkout', 'html');
         $view->setLayout('postpayment');
         $view->set('_doTask', true);
         $params = $params = JComponentHelper::getParams('com_j2store');
         if ($params->get('show_postpayment_orderlink', 1)) {
             $view->assign('order_link', $order_link);
         } else {
             $view->assign('order_link', '');
         }
         $view->assign('plugin_html', $html);
         // Get and Set Model
         $model = $this->getModel('checkout');
         $view->setModel($model, true);
         $view->display();
     }
     return;
 }
Пример #14
0
 function orderstatesave()
 {
     $app = JFactory::getApplication();
     $id = $app->input->getInt('id', 0);
     $order_state_id = $app->input->getInt('order_state_id', 0);
     $notify_customer = $app->input->getInt('notify_customer', 0);
     if (isset($order_state_id) && $order_state_id > 0) {
         require_once JPATH_ADMINISTRATOR . '/components/com_j2store/models/orderstatuses.php';
         $os_model = new J2StoreModelOrderstatuses();
         $order_state = $os_model->getOrderStateByID($order_state_id)->orderstatus_name;
         JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_j2store/tables');
         $order = JTable::getInstance('Orders', 'Table');
         $order->load($id);
         if ($order->id == $id) {
             //lets change the status
             $order->order_state = $order_state;
             $order->order_state_id = $order_state_id;
             if ($order->store()) {
                 $msg = JText::_('J2STORE_ORDER_STATUS_UPDATE_SUCCESSFUL');
                 if (isset($notify_customer) && $notify_customer == 1) {
                     require_once JPATH_SITE . '/components/com_j2store/helpers/orders.php';
                     J2StoreOrdersHelper::sendUserEmail($order->user_id, $order->order_id, $order->transaction_status, $order->order_state, $order->order_state_id);
                 } else {
                     require_once JPATH_ADMINISTRATOR . '/components/com_j2store/library/inventory.php';
                     J2StoreInventory::setInventory($order->id, $order_state_id);
                 }
             } else {
                 $msg = JText::_('J2STORE_ORDER_STATUS_UPDATE_FAILED');
             }
         } else {
             $msg = JText::_('J2STORE_ORDER_STATUS_UPDATE_FAILED');
         }
     } else {
         $msg = JText::_('J2STORE_CHOOSE_AN_ORDER_STATUS');
     }
     $link = 'index.php?option=com_j2store&view=orders&task=view&id=' . $order->id;
     $return = $app->input->getString('return');
     if (isset($return) && !empty($return)) {
         $json = array();
         $json['success']['link'] = 'index.php?option=com_j2store&view=orders';
         echo json_encode($json);
         $app->close();
     } else {
         $this->setRedirect($link, $msg);
     }
 }