/** * @method void overridePaymentMethod() * @description Called on event 'sales_quote_payment_import_data_before' * * @return void */ public function overridePaymentMethod(Varien_Event_Observer $observer) { /** * Is the "Save this card" box checked? If it is, change the payment * method to 'ccsave' */ if ($observer->getInput()->getData('save_card') == 'on') { $observer->getInput()->setMethod('ccsave'); } }
/** * Handle custom payment data fields * * @param Varien_Event_Observer $observer * @return void */ public function salesQuotePaymentImportDataBefore(Varien_Event_Observer $observer) { /** @var $input Varien_Object */ $input = $observer->getInput(); /** @var $payment Mage_Sales_Model_Quote_Payment */ $payment = $observer->getPayment(); $paymentMethod = $input->getMethod(); if (isset($paymentMethod)) { // Clear any possible additional info from previous requests $customPaymentAddInfoFields = CLS_Paypal_Helper_Data::$customPaymentAddInfoFields; if (!empty($customPaymentAddInfoFields)) { foreach ($customPaymentAddInfoFields as $_customField) { if ($payment->hasAdditionalInformation($_customField)) { $payment->unsAdditionalInformation($_customField); } } } /** @var $helper CLS_Paypal_Helper_Data */ $helper = Mage::helper('cls_paypal'); // Handle "Save this card" option for native Magento payment methods if ($helper->isSupportedPaymentMethod($paymentMethod)) { if ($input['cc_save_future'] == 'Y') { // Set 'Save for future use' flag $payment->setAdditionalInformation('cc_save_future', 'Y'); } } elseif ($helper->isCustomerstoredPaymentMethod($paymentMethod)) { if ($input['stored_card_id']) { // Save stared card ID into the additional information, // card ID will be validated afterwards $payment->setAdditionalInformation('stored_card_id', $input['stored_card_id']); } } } }
/** * Collects codFee from qoute/addresses to quote * * @param Varien_Event_Observer $observer * */ public function sales_quote_collect_totals_after(Varien_Event_Observer $observer) { $quote = $observer->getEvent()->getQuote(); $data = $observer->getInput(); $quote->setCodFee(0); $quote->setBaseCodFee(0); $quote->setCodTaxAmount(0); $quote->setBaseCodTaxAmount(0); foreach ($quote->getAllAddresses() as $address) { $quote->setCodFee((double) $quote->getCodFee() + $address->getCodFee()); $quote->setBaseCodFee((double) $quote->getBaseCodFee() + $address->getBaseCodFee()); $quote->setCodTaxAmount((double) $quote->getCodTaxAmount() + $address->getCodTaxAmount()); $quote->setBaseCodTaxAmount((double) $quote->getBaseCodTaxAmount() + $address->getBaseCodTaxAmount()); } }