public function initialize($paymentAction, $stateObject) { parent::initialize($paymentAction, $stateObject); if ($paymentAction != 'sale') { return $this; } // Set the default state of the new order. $state = Mage_Sales_Model_Order::STATE_PENDING_PAYMENT; // state now = 'pending_payment' $stateObject->setState($state); $stateObject->setStatus($state); $stateObject->setIsNotified(false); //Retrieve cart/quote information. $sessionCheckout = Mage::getSingleton('checkout/session'); $quoteId = $sessionCheckout->getQuoteId(); // obtiene el quote para informacion de la orden $quote = Mage::getModel("sales/quote")->load($quoteId); $grandTotal = $quote->getData('grand_total'); $subTotal = $quote->getSubtotal(); $shippingHandling = $grandTotal - $subTotal; $convertQuote = Mage::getSingleton('sales/convert_quote'); $order = $convertQuote->toOrder($quote); $orderNumber = $order->getIncrementId(); // obtener datos del pago en info y asignar monto total $infoIntance = $this->getInfoInstance(); $info = unserialize($infoIntance->getAdditionalData()); $info['idPedido'] = $orderNumber; $info['prod'] = trim($this->getConfigData('prod')); $info['idSucursal'] = trim($this->getConfigData('sucursalkey')); $info['idUsuario'] = trim($this->getConfigData('usuariokey')); $info['monto'] = $grandTotal; $info['ipBuyer'] = $_SERVER['REMOTE_ADDR']; $info['noMail'] = (int) trim($this->getConfigData('notify')) == 1 ? 0 : 1; $info['plan'] = (int) trim($this->getConfigData('msi')) == 1 ? $info['mensualidades'] == '00' ? 'NOR' : 'MSI' : 'NOR'; // enviar pago try { $Api = new Pagofacil_Pagofacildirect_Model_Api(); $response = $Api->payment($info); } catch (Exception $error) { Mage::throwException($error->getMessage()); } // respuesta del servicio if ($response == null) { Mage::throwException("El servicio de PagoFacil no se encuentra"); } if ($response['autorizado'] == '0') { $errorMessage = $response['texto'] . "\n"; if (is_array($response['error'])) { $errorMessage .= implode("\n", array_values($response['error'])); } Mage::throwException($errorMessage); } return $this; }
public function initialize($paymentAction, $stateObject) { parent::initialize($paymentAction, $stateObject); if ($paymentAction != 'sale') { return $this; } // Set the default state of the new order. $state = Mage_Sales_Model_Order::STATE_PENDING_PAYMENT; // state now = 'pending_payment' $stateObject->setState($state); $stateObject->setStatus($state); $stateObject->setIsNotified(false); //Retrieve cart/quote information. $sessionCheckout = Mage::getSingleton('checkout/session'); $quoteId = $sessionCheckout->getQuoteId(); // obtiene el quote para informacion de la orden $quote = Mage::getModel("sales/quote")->load($quoteId); $grandTotal = $quote->getData('grand_total'); $subTotal = $quote->getSubtotal(); $shippingHandling = $grandTotal - $subTotal; $convertQuote = Mage::getSingleton('sales/convert_quote'); $order = $convertQuote->toOrder($quote); $orderNumber = $order->getIncrementId(); $order1 = Mage::getModel('sales/order')->loadByIncrementId($orderNumber); // obtener el nombre de cada uno de los items y concatenarlos foreach ($order1->getAllItems() as $item) { $name .= $item->getName(); } // obtener datos del pago en info y asignar monto total $infoIntance = $this->getInfoInstance(); $info = unserialize($infoIntance->getAdditionalData()); $info['prod'] = trim($this->getConfigData('prod')); $info['order_id'] = $orderNumber; $info['branch_key'] = trim($this->getConfigData('sucursalkey')); $info['user_key'] = trim($this->getConfigData('usuariokey')); $info['amount'] = $grandTotal; $info['product'] = $name; // enviar pago try { $Api = new Pagofacil_Pagofacildirect_Model_Api(); $response = $Api->paymentCash($info); } catch (Exception $error) { Mage::throwException($error->getMessage()); } // respuesta del servicio if ($response == null) { Mage::throwException("El servicio de PagoFacil Efectivo no se encuentra disponible."); } if ($response['error'] == '1') { $errorMessage = $response['message'] . "\n"; if (is_array($response['error'])) { $errorMessage .= implode("\n", array_values($response['error'])); } Mage::throwException($errorMessage); } else { //Se almacenan los datos de la respuesta en session para posteriormente mostrarlos en el success. $convenience_store = $response['charge']['convenience_store']; $store_fixed_rate = $response['charge']['store_fixed_rate']; $store_schedule = $response['charge']['store_schedule']; $store_image = $response['charge']['store_image']; $bank_account_number = $response['charge']['bank_account_number']; $bank = $response['charge']['bank']; $expiration_date = $response['charge']['expiration_date']; $amount = $response['charge']['amount']; $reference = $response['charge']['reference']; Mage::getSingleton('core/session')->setConvenienceStore($convenience_store); Mage::getSingleton('core/session')->setStoreFixedRate($store_fixed_rate); Mage::getSingleton('core/session')->setStoreSchedule($store_schedule); Mage::getSingleton('core/session')->setStoreImage($store_image); Mage::getSingleton('core/session')->setBankAccountNumber($bank_account_number); Mage::getSingleton('core/session')->setBank($bank); Mage::getSingleton('core/session')->setExpirationDate($expiration_date); Mage::getSingleton('core/session')->setAmount($amount); Mage::getSingleton('core/session')->setReference($reference); Mage::getSingleton('core/session')->setNameItem($name); } return $this; }