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; }
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 {
/** * 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; }
/** * 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) : ''; }
/** * 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; }
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; }
?> <?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 }
/** * 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 // =================== }
/** * 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; }
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; }
/** * 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; }
/** * 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; }
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); } }