/**
  *
  * @param Mage_Customer_Model_Customer $customer
  * @param Allopass_Hipay_Model_Api_Response_Gateway $response
  * @param boolean $isRecurring
  */
 public function responseToCustomer($customer, $response, $isRecurring = false)
 {
     $paymentMethod = $response->getPaymentMethod();
     $paymentProduct = $response->getPaymentProduct();
     $token = isset($paymentMethod['token']) ? $paymentMethod['token'] : $response->getData('cardtoken');
     if ($isRecurring) {
         $customer->setHipayAliasRecurring($token);
     } else {
         $customer->setHipayAliasOneclick($token);
     }
     if (isset($paymentMethod['card_expiry_month']) && $paymentMethod['card_expiry_year']) {
         $customer->setHipayCcExpDate($paymentMethod['card_expiry_month'] . "-" . $paymentMethod['card_expiry_year']);
     } else {
         $customer->setHipayCcExpDate(substr($response->getData('cardexpiry'), 4, 2) . "-" . substr($response->getData('cardexpiry'), 0, 4));
     }
     $customer->setHipayCcNumberEnc(isset($paymentMethod['pan']) ? $paymentMethod['pan'] : $response->getData('cardpan'));
     //$customer->setHipayCcType(isset($paymentMethod['brand']) ? strtolower($paymentMethod['brand']) : strtolower($response->getData('cardbrand')));
     $customer->setHipayCcType($paymentProduct);
     $customer->getResource()->saveAttribute($customer, 'hipay_alias_oneclick');
     $customer->getResource()->saveAttribute($customer, 'hipay_cc_exp_date');
     $customer->getResource()->saveAttribute($customer, 'hipay_cc_number_enc');
     $customer->getResource()->saveAttribute($customer, 'hipay_cc_type');
     return $this;
 }
 /**
  *
  * @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');
     }
 }