Example #1
0
 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;
 }
Example #2
0
 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;
 }