/** * After clicking 'Place Order' the method 'getOrderPlaceRedirectUrl()' gets called and redirects to here * Then this action creates an payment with a transaction_id that gets inserted in the database (mollie_payments, sales_payment_transaction) */ public function paymentAction() { if ($this->getRequest()->getParam('order_id')) { // Load failed payment order /** @var $order Mage_Sales_Model_Order */ $order = Mage::getModel('sales/order')->load($this->getRequest()->getParam('order_id')); $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, $this->__(Mollie_Mpm_Model_Api::PAYMENT_FLAG_RETRY), FALSE)->save(); } else { // Load last order by IncrementId /** @var $order Mage_Sales_Model_Order */ $orderIncrementId = $this->_getCheckout()->getLastRealOrderId(); $order = Mage::getModel('sales/order')->loadByIncrementId($orderIncrementId); } $order_id = $order->getId(); try { // Magento is so awesome, we need to manually remember the quote $session = $this->_getCheckout(); if (is_object($session)) { $session->setMollieQuoteId($session->getQuoteId()); } $store_code = Mage::app()->getStore()->getCode(); $store_url = Mage::app()->getStore($store_code)->getBaseUrl(); // Assign required value's $amount = $this->getAmount($order); $description = str_replace('%', $order->getIncrementId(), Mage::helper('mpm/data')->getConfig('mollie', 'description')); $redirect_url = str_replace('/admin/', $store_url, Mage::getUrl('mpm/api/return') . '?order_id=' . intval($order_id) . '&utm_nooverride=1'); $method = $this->getRequest()->getParam('method_id', NULL); $issuer = $this->getRequest()->getParam('issuer', NULL); if ($this->_api->createPayment($amount, $description, $order, $redirect_url, $method, $issuer)) { if (!$order->getId()) { Mage::log('Geen order voor verwerking gevonden'); Mage::throwException('Geen order voor verwerking gevonden'); } $this->_model->setPayment($order_id, $this->_api->getTransactionId()); // Creates transaction /** @var $payment Mage_Sales_Model_Order_Payment */ $payment = Mage::getModel('sales/order_payment')->setMethod('Mollie')->setTransactionId($this->_api->getTransactionId())->setIsTransactionClosed(FALSE); $order->setPayment($payment); $payment->addTransaction(Mage_Sales_Model_Order_Payment_Transaction::TYPE_AUTH); $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, $this->__(Mollie_Mpm_Model_Api::PAYMENT_FLAG_INPROGRESS), FALSE)->save(); $this->_redirectUrl($this->_api->getPaymentURL()); } else { Mage::throwException($this->_api->getErrorMessage()); } } catch (Exception $e) { $this->_restoreCart(); Mage::log($e); $this->_showException($e->getMessage(), $order_id); } }