/** * * @param Allopass_Hipay_Model_Api_Response_Gateway $gatewayResponse * @param Mage_Sales_Model_Order_Payment $payment * @param float $amount */ public function processResponseToRedirect($gatewayResponse, $payment, $amount) { $order = $payment->getOrder(); $customer = Mage::getModel('customer/customer')->load($order->getCustomerId()); switch ($this->getConfigPaymentAction()) { case Mage_Payment_Model_Method_Abstract::ACTION_AUTHORIZE: $requestType = self::OPERATION_AUTHORIZATION; $newTransactionType = Mage_Sales_Model_Order_Payment_Transaction::TYPE_AUTH; $defaultExceptionMessage = Mage::helper('hipay')->__('Payment authorization error.'); break; case Mage_Payment_Model_Method_Abstract::ACTION_AUTHORIZE_CAPTURE: $requestType = self::OPERATION_SALE; $newTransactionType = Mage_Sales_Model_Order_Payment_Transaction::TYPE_CAPTURE; $defaultExceptionMessage = Mage::helper('hipay')->__('Payment capturing error.'); break; } $urlAdmin = Mage::getUrl('adminhtml/sales_order/index'); if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/view')) { $urlAdmin = Mage::getUrl('adminhtml/sales_order/view', array('order_id' => $order->getId())); } switch ($gatewayResponse->getState()) { case self::STATE_COMPLETED: return $this->isAdmin() ? $urlAdmin : Mage::getUrl('checkout/onepage/success'); case self::STATE_FORWARDING: $payment->setIsTransactionPending(1); $order->save(); return $gatewayResponse->getForwardUrl(); case self::STATE_PENDING: if ($this->getConfigData('re_add_to_cart')) { $this->getHelper()->reAddToCart($order->getIncrementId()); } return $this->isAdmin() ? $urlAdmin : Mage::getUrl($this->getConfigData('pending_redirect_page')); case self::STATE_DECLINED: if ($this->getConfigData('re_add_to_cart')) { $this->getHelper()->reAddToCart($order->getIncrementId()); } return $this->isAdmin() ? $urlAdmin : Mage::getUrl('checkout/onepage/failure'); case self::STATE_ERROR: default: if ($this->getConfigData('re_add_to_cart')) { $this->getHelper()->reAddToCart($order->getIncrementId()); } $this->_getCheckout()->setErrorMessage($defaultExceptionMessage); return $this->isAdmin() ? $urlAdmin : Mage::getUrl('checkout/onepage/failure'); } }