Ejemplo n.º 1
0
 /**
  * Show orderPlaceRedirect page which contains the Moneybookers iframe.
  */
 public function paymentAction()
 {
     try {
         $session = $this->_getCheckout();
         $order = $this->placeOrder();
         $order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, Mage::helper('moneybookers')->__('The customer was redirected to Moneybookers.'));
         $order->save();
         $this->_order = $order;
         $session->setLastRealOrderId($order->getIncrementId());
         $session->setMoneybookersQuoteId($session->getQuoteId());
         $session->setMoneybookersRealOrderId($session->getLastRealOrderId());
         $session->getQuote()->setIsActive(false)->save();
         $session->clear();
         $this->loadLayout();
         //load layout of moneybookers
         //            $update = $this->getLayout()->getUpdate();
         //            $update->addHandle('default');
         //            $this->addActionLayoutHandles();
         //            $update->addHandle('moneybookers_processing_payment');
         //            $this->loadLayoutUpdates();
         //            $this->generateLayoutXml();
         //            $this->generateLayoutBlocks();
         //            $this->_isLayoutLoaded = true;
         //render layout
         $this->renderLayout();
     } catch (Exception $e) {
         die($e->getMessage());
         Mage::logException($e);
         parent::_redirect('checkout/cart');
     }
 }
 public function payAction()
 {
     $pay = Mage::getModel('iceadvanced/pay');
     $result = $pay->getCheckoutResult();
     if (!is_array($result)) {
         Mage::getSingleton('checkout/session')->setErrorMessage(sprintf($this->__("The payment provider has returned the following error message: %s"), $result));
         parent::_redirect('checkout/onepage/failure');
     } else {
         $checkoutResult = isset($result['CheckoutExtendedResult']) ? $result['CheckoutExtendedResult'] : $result['CheckoutResult'];
         $this->getResponse()->setBody($this->__("Redirecting"))->setRedirect($checkoutResult->PaymentScreenURL);
     }
 }
 /**
  * Show orderPlaceRedirect page which contains the Moneybookers iframe.
  */
 public function paymentAction()
 {
     try {
         $session = $this->_getCheckout();
         $order = Mage::getModel('sales/order');
         $order->loadByIncrementId($session->getLastRealOrderId());
         if (!$order->getId()) {
             Mage::throwException('No order for processing found');
         }
         $order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, Mage::helper('moneybookers')->__('The customer was redirected to Moneybookers.'));
         $order->save();
         $session->setMoneybookersQuoteId($session->getQuoteId());
         $session->setMoneybookersRealOrderId($session->getLastRealOrderId());
         $session->getQuote()->setIsActive(false)->save();
         $session->clear();
         $this->loadLayout();
         $this->renderLayout();
     } catch (Exception $e) {
         Mage::logException($e);
         parent::_redirect('checkout/cart');
     }
 }
 /**
  * Show orderPlaceRedirect page which contains the Paynova iframe.
  */
 public function paymentAction()
 {
     $session = $this->_getCheckout();
     $session->setPaynovaRealOrderId($session->getLastRealOrderId());
     $quoteId = $session->getLastQuoteId();
     try {
         $quote = Mage::getModel('sales/quote')->load($quoteId);
         $order = Mage::getModel('sales/order');
         $paynova_order = Mage::getModel('paynovapayment/order');
         $coreOrderObj = new Mage_Sales_Model_Order();
         $lastIncrementId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
         $coreOrderObj->loadByIncrementId($lastIncrementId);
         $corePaymentObj = $coreOrderObj->getPayment()->getMethodInstance();
         //Create a "create order" structured array
         $res = $paynova_order->loadByIncrementId($lastIncrementId);
         $selectedPaymentId = $corePaymentObj->getSelectedPaymentId();
         // get payment id from selected payment.
         $selectedModelCode = $corePaymentObj->getCode();
         // get payment code for selected method.
         $filterSelectedModelCode = str_replace('_', '/', $selectedModelCode);
         $order->loadByIncrementId($session->getLastRealOrderId());
         if (!$order->getId()) {
             Mage::throwException(Mage::helper('paynovapayment')->__('No order for processing found'));
         }
         $abstractModel = Mage::getModel($filterSelectedModelCode);
         // create a object for acc class.
         // call create order
         $res = $abstractModel->setCurlCall($res, '/orders/create/');
         // post the initialize payment Json through CURL.
         Mage::helper('paynovapayment')->log($res);
         if (!$res) {
             Mage::throwException(Mage::helper('paynovapayment')->__('Unable to send the request on Paynova server.'));
         } else {
             if (!isset($res->orderId)) {
                 Mage::throwException(Mage::helper('paynovapayment')->__('Unable to send the request on Paynova server.') . $res->status->statusMessage);
             }
         }
         $paynova_order_nr = $res->orderId;
         $paynova_status_key = $res->status->statusKey;
         $order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, Mage::helper('paynovapayment')->__('Order created in Paynova'));
         if ($filterSelectedModelCode == 'paynovapayment/invoice' || $filterSelectedModelCode == 'paynovapayment/installment') {
             //get value from additional info
             $addinfo = $quote->getPayment()->getAdditionalInformation();
             if (!empty($addinfo['productid'])) {
                 $paynova_product = $addinfo['productid'];
                 $governmentid = $addinfo['governmentid'];
             }
             $res = $paynova_order->createAuthorizePaymentCall($order, $paynova_order_nr, $selectedPaymentId, $selectedModelCode, $paynova_product, $governmentid);
             $output = $abstractModel->setCurlCall($res, '/orders/' . $paynova_order_nr . '/authorizePayment');
             $res = $abstractModel->getResponseFromAuthorizePaymentCall($output);
             // recieved the response from paynova.
             if (!$res) {
                 //Try to load old quote
                 $this->_getCheckout()->addError($output->status->statusMessage);
                 $order->save();
                 $this->_redirect('checkout/cart');
                 return;
             }
             $order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, Mage::helper('paynovapayment')->__('Invoice/Installment created at Paynova.'));
             //set event data
             if ($res && !empty($output->orderId) && !empty($output->transactionId)) {
                 $body['PAYMENT_1_TRANSACTION_ID'] = $output->transactionId;
                 $body['ORDER_ID'] = $output->orderId;
                 $body['ORDER_NUMBER'] = $session->getLastRealOrderId();
                 $event = Mage::getModel('paynovapayment/event')->setEventData($body);
                 //successevent
                 $quoteId = $event->successEvent(false);
                 $session->setLastSuccessQuoteId($quoteId);
                 $order->save();
                 $payment = $order->getPayment();
                 $trans = $payment->getTransaction($output->transactionId);
             } else {
                 Mage::throwException(Mage::helper('paynovapayment')->__('order and/or transactionId is empty.'));
             }
             $capture = Mage::getStoreConfig('paynovapayment/advanced_settings/auto_finalize');
             if ($capture) {
                 $err = $abstractModel->invoicing($order);
                 $order->save();
                 if ($err) {
                     foreach (Mage::getSingleton('checkout/session')->getQuote()->getItemsCollection() as $item) {
                         Mage::getSingleton('checkout/cart')->removeItem($item->getId())->save();
                     }
                     $this->_redirect('checkout/onepage/success', array('order_ids' => array($order->getId())));
                     return;
                 }
             }
             $order->save();
             //redirect to success
             $this->_redirect('checkout/onepage/success', array('order_ids' => array($order->getId())));
             return;
         } else {
             $res = $paynova_order->createInitializePaymentCall($order, $paynova_order_nr, $selectedPaymentId, $selectedModelCode);
             $output = $abstractModel->setCurlCall($res, '/orders/' . $res['orderId'] . '/initializePayment');
             $redirectURL = $abstractModel->getResponseFromInitialPaymentCall($output);
             // recieved the response from paynova.
             $order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, Mage::helper('paynovapayment')->__('Redirected to Paynova.'));
             $order->save();
             $session->setPaynovaQuoteId($session->getQuoteId());
             $session->setPaynovaRealOrderId($session->getLastRealOrderId());
             $lastQuoteId = $session->getLastQuoteId();
             Mage::getModel('sales/quote')->load($lastQuoteId)->setIsActive(true)->save();
             $session->clear();
             @header("Location: {$redirectURL}");
             // Redirect browser.
             die;
             $this->loadLayout();
             //todo check if lines should be removed
             $this->renderLayout();
         }
     } catch (Mage_Core_Exception $e) {
         $order->addStatusToHistory($order->getStatus(), Mage::helper('paynovapayment')->__($e->getMessage()));
         // try to save the exception with the current order.
         $this->_getCheckout()->addError(Mage::helper('paynovapayment')->__('We are sorry, but an error occurred while attempting to process your payment.'));
         $order->setState(Mage_Sales_Model_Order::STATE_CANCELED, Mage_Sales_Model_Order::STATE_CANCELED, Mage::helper('paynovapayment')->__($e->getMessage()));
         //set quote as active
         $quote = Mage::getModel('sales/quote')->load($quoteId);
         $quote->setIsActive(true)->save();
         $session->setQuoteId($quoteId);
         $order->save();
         parent::_redirect('checkout/cart');
     } catch (Exception $e) {
         $this->_getCheckout()->addError($e->getMessage());
         Mage::logException($e);
         $quote = Mage::getModel('sales/quote')->load($quoteId);
         $quote->setIsActive(true)->save();
         $session->setQuoteId($quoteId);
         parent::_redirect('checkout/cart');
     }
 }
 /**
  * Fehlerbedigten Abbruch (URL_NOK) verarbeiten.
  * 
  *  @todo Fehlermeldung extrahieren und zum Verlauf hinzufügen
  */
 public function failedAction()
 {
     Mage::log('MapiController > failedAction');
     try {
         $postData = $_POST;
         if ($this->checkToken()) {
             #
             # MAJ JPN le 30/11/2015
             # Prise en compte de l'annulation dans données POST
             # Contrôle commande + reinit du panier avec les données préchargées
             #
             if (empty($postData)) {
                 // init des id panier et commande
                 $lastQuoteId = $this->_getCheckout()->getLastQuoteId();
                 $lastOrderId = $this->_getCheckout()->getLastOrderId();
                 // init de l'objet panier
                 $orderModel = Mage::getModel('sales/order')->load($lastOrderId);
                 if ($orderModel->canCancel()) {
                     // init du panier avec son id
                     $quote = Mage::getModel('sales/quote')->load($lastQuoteId);
                     // on active le panier et enregistrement
                     $quote->setIsActive(true)->save();
                     // on met la commande en mode cancel
                     $orderModel->cancel();
                     // ajout du status annulée + enregistrement
                     $orderModel->setStatus('canceled');
                     $orderModel->save();
                     // init du message de l'erreur
                     Mage::getSingleton('core/session')->setFailureMsg('order_failed');
                     Mage::getSingleton('checkout/session')->setFirstTimeChk('0');
                     // init du message d'erreur qui s'affichera au redirect sur la page panier
                     Mage::getSingleton('core/session')->addError(__('Your order has been canceled because the payment process failed.'));
                     // on redirige le client sur le panier
                     $this->_redirect('checkout/cart', array("_forced_secure" => true));
                     return;
                 }
             } elseif ($this->requestHasValidPostData()) {
                 Mage::log('Array POST [');
                 Mage::log($_POST);
                 Mage::log(']');
                 $session = $this->_getCheckout();
                 $order = Mage::getModel('sales/order');
                 $order->loadByIncrementId($session->getLastRealOrderId());
                 $order->cancel();
                 $order->addStatusHistoryComment(Mage::helper('hipaymod')->__('Hipay payment failed'), Mage_Sales_Model_Order::STATE_CANCELED);
                 $order->save();
                 $order->sendOrderUpdateEmail(Mage::helper('hipaymod')->__('Your order has been canceled because the payment process failed.'));
                 $this->_redirect('checkout/onepage/failure');
             } else {
                 Mage::log('Received data could not be validated (invalid hash key!): ' . $xml);
                 parent::_redirect('checkout/cart');
             }
         } else {
             Mage::log('Invalid security token');
             parent::_redirect('checkout/cart');
         }
     } catch (Exception $e) {
         Mage::logException($e);
         parent::_redirect('checkout/cart');
     }
 }