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; }
/** * Inicializa o método de pagamento. Chamado quando a compra é completa. * Objeto Order será criado após a chamada deste método. * * @param string $paymentAction * @param Varien_Object $stateObject * @return Mage_Payment_Model_Abstract * @throws Mage_Payment_Model_Info_Exception */ public function initialize($paymentAction, $stateObject) { //Mage::helper("bcash")->saveLog('Called ' . __METHOD__ . ' with payment ' . $paymentAction); //Mage::helper("bcash")->saveLog('Payment Onlinetransfer visitor: ' . Mage::helper('core/http')->getRemoteAddr()); parent::initialize($paymentAction, $stateObject); if ($paymentAction != 'sale') { return $this; } $state = Mage_Sales_Model_Order::STATE_PENDING_PAYMENT; $stateObject->setState($state); $stateObject->setStatus(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT); $stateObject->setIsNotified(false); try { $result = $this->_customBeginPayment(); $response = $result['response']; $payment_method = $result['payment_method']; $installments = $result['installments']; /* 1 – Em andamento 3 – Aprovada 4 – Concluída 5 – Disputa 6 – Devolvida 7 – Cancelada 8 – Chargeback */ // Salvar o PEDIDO em caso de SUCESSO e adicionar os dados da Transação if ($response->status != 1 && $response->status != 2) { $setIsNotified = false; switch ($response->status) { case 3: //3 – Aprovada //3 – Aprovada case 4: //4 – Concluída $state = Mage_Sales_Model_Order::STATE_PROCESSING; $setIsNotified = true; break; case 6: //6 – Devolvida $state = Mage_Sales_Model_Order::STATE_HOLDED; break; case 7: //7 – Cancelada //7 – Cancelada case 8: //8 – Chargeback $state = Mage_Sales_Model_Order::STATE_CANCELED; break; default: $state = null; break; } if (!is_null($state)) { $stateObject->setState($state); $stateObject->setStatus($state); $stateObject->setIsNotified($setIsNotified); } } Mage::getSingleton('core/session')->setTransactionIdBcash($response->transactionId); Mage::getSingleton('core/session')->setStatusBcash($response->status); Mage::getSingleton('core/session')->setDescriptionStatusBcash(urldecode($response->descriptionStatus)); Mage::getSingleton('core/session')->setPaymentLinkBcash(isset($response->paymentLink) ? urldecode($response->paymentLink) : null); Mage::getSingleton('core/session')->setPaymentMethodBcash($payment_method); Mage::getSingleton('core/session')->setInstallmentsBcash($installments); $cart = Mage::getSingleton('checkout/cart')->getQuote(); $cart->setTransactionIdBcash($response->transactionId)->setStatusBcash($response->status)->setDescriptionStatusBcash(urldecode($response->descriptionStatus))->setPaymentLinkBcash(isset($response->paymentLink) ? urldecode($response->paymentLink) : null)->setPaymentMethodBcash($payment_method)->setInstallmentsBcash($installments); $cart->save(); } catch (Exception $e) { Mage::helper("bcash")->saveLog("Exception: Model_Onlinetransfer->initialize: " . $e->getMessage()); throw new Mage_Payment_Model_Info_Exception($e->getMessage()); } return $this; }
/** * Initulaize the sofort payment and set the redirect url * * @param string $paymentAction * @param Varien_Object $stateObject * @return \Paymentnetwork_Pnsofortueberweisung_Model_Method_Sofort */ public function initialize($paymentAction, $stateObject) { parent::initialize($paymentAction, $stateObject); $communication = Mage::getModel('Paymentnetwork_Pnsofortueberweisung_Model_Service_Communication'); $communication->paymentRequest(); $url = $communication->getUrl(); Mage::getSingleton('customer/session')->setPaymentUrl($url); $this->getInfoInstance()->setAdditionalInformation('sofort_transaction_id', $communication->getTransactionId()); return $this; }