public function responseAction()
 {
     $order_id_from_session = Mage::getSingleton('checkout/session')->getLastRealOrderId();
     $order = Mage::getModel('sales/order')->loadByIncrementId(Mage::getSingleton('checkout/session')->getLastRealOrderId());
     $order_id_from_session = $order->getId();
     $order_id_from_flex = $this->getRequest()->getParam('order');
     $error = false;
     $response_type = 'accept';
     $order_id_from_flex_converted = Mage::helper('flexpayment/api')->getMagentoOrder($order_id_from_flex);
     if (trim($order_id_from_session) != trim($order_id_from_flex_converted)) {
         $response_status_message = $this->__(Mage::helper('flexpayment')->getErrorMessage('order_mismatch'));
         $response_type = 'cancel';
     }
     $data = Mage::getModel('flexpayment/api')->getTransactionStatus($order_id_from_flex);
     if (is_array($data)) {
         if ($data['status'] == 'ok') {
             $response_status_message = $data['message'];
             $response_type = 'accept';
         } else {
             $response_status_message = $data['message'];
             $response_type = 'cancel';
         }
     }
     switch ($response_type) {
         case 'accept':
             /** trying to create invoice * */
             try {
                 if (!$order->canInvoice()) {
                     $response_status_message = $this->__('Error: cannot create an invoice !');
                     Mage::getSingleton('checkout/session')->setErrorMessage($response_status_message);
                     Mage::log('Order ID:' . $order_id_from_flex_converted . ' - ' . $response_status_message, null, 'flexpayment.log');
                     return false;
                 } else {
                     $invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice();
                     if (!$invoice->getTotalQty()) {
                         $response_status_message = $this->__('Error: cannot create an invoice without products !');
                         Mage::getSingleton('checkout/session')->setErrorMessage($response_status_message);
                         Mage::log('Order ID:' . $order_id_from_flex_converted . ' - ' . $response_status_message, null, 'flexpayment.log');
                         return false;
                     }
                     $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_OFFLINE);
                     $invoice->register();
                     $transactionSave = Mage::getModel('core/resource_transaction')->addObject($invoice)->addObject($invoice->getOrder());
                     $transactionSave->save();
                     $quote = Mage::getSingleton('checkout/session')->getQuote();
                     $quote->setIsActive(0);
                     $quote->save();
                     $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, 'FlexShopper has accepted the payment.');
                 }
             } catch (Mage_Core_Exception $e) {
                 //Mage::throwException(Mage::helper('core')->__('cannot create an invoice !'));
             }
             //$order->sendNewOrderEmail();
             $order->setEmailSent(true);
             $order->save();
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure' => true));
             return;
             break;
         case 'cancel':
             // There is a problem in the response we got
             $this->cancelAction();
             // $response_status_message = Mage::helper('payfort/data')->getResponseCodeDescription($response_status);
             Mage::getSingleton('checkout/session')->setErrorMessage($response_status_message);
             Mage::log('Order ID:' . $order_id_from_flex_converted . ' - ' . $response_status_message, null, 'flexpayment.log');
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
             return;
             break;
         default:
             $response_message = $this->__('Response Unknown');
             Mage::getSingleton('checkout/session')->setErrorMessage($response_message);
             return;
             break;
     }
 }
 public function responseAction()
 {
     if ($this->getRequest()->isPost()) {
         /*
         /* Your gateway's code to make sure the reponse you
         /* just got is from the gatway and not from some weirdo.
         /* This generally has some checksum or other checks,
         /* and is provided by the gateway.
         /* For now, we assume that the gateway's response is valid
         */
         $validated = true;
         $orderId = '123';
         // Generally sent by gateway
         if ($validated) {
             // Payment was successful, so update the order's state, send order email and move to the success page
             $order = Mage::getModel('sales/order');
             $order->loadByIncrementId($orderId);
             $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, 'Gateway has authorized the payment.');
             $order->sendNewOrderEmail();
             $order->setEmailSent(true);
             $order->save();
             Mage::getSingleton('checkout/session')->unsQuoteId();
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure' => true));
         } else {
             // There is a problem in the response we got
             $this->cancelAction();
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
         }
     } else {
         Mage_Core_Controller_Varien_Action::_redirect('');
     }
 }
Esempio n. 3
0
 public function loadOrder($orderId)
 {
     $_order = Mage::getModel('sales/order');
     if (!$_order) {
         Mage_Core_Controller_Varien_Action::_redirect('checkout/cart', array('_secure' => true));
     }
     $_order->loadByIncrementId($orderId);
     $this->order = $_order;
 }
 public function responseAction()
 {
     if ($this->getRequest()->isPost()) {
         /*
         /* Your gateway's code to make sure the reponse you
         /* just got is from the gatway and not from some weirdo.
         /* This generally has some checksum or other checks,
         /* and is provided by the gateway.
         /* For now, we assume that the gateway's response is valid
         */
         $cmob = $_POST['cmob'];
         $ctrxid = $_POST['ctrxid'];
         $tnxId = $_POST['orderId'];
         if ($cmob != "" && $ctrxid != "") {
             $validated = true;
             $orderId = $tnxId;
             $trnsactionId = $ctrxid;
             $customerMobileNumber = $cmob;
         } else {
             if ($cmob != "") {
                 $validated = true;
                 $orderId = $tnxId;
                 $customerMobileNumber = $cmob;
             } else {
                 if ($ctrxid != "") {
                     $validated = true;
                     $orderId = $tnxId;
                     $trnsactionId = $ctrxid;
                 } else {
                     $validated = false;
                 }
             }
         }
         if ($validated) {
             // Payment was successful, so update the order's state, send order email and move to the success page
             $order = Mage::getModel('sales/order');
             $order->loadByIncrementId($orderId);
             $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, 'Gateway has authorized the payment.');
             $order->sendNewOrderEmail();
             $order->setEmailSent(true);
             // customer bkash mobile number and transaction id saved for tracking
             $notification = "Customer mobile: " . $customerMobileNumber . " Transaction ID: " . $trnsactionId;
             $order->addStatusToHistory($order->getStatus(), $notification);
             //saving the transaction id
             $order->save();
             Mage::getSingleton('checkout/session')->unsQuoteId();
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure' => true));
         } else {
             // There is a problem in the response we got
             $this->cancelAction();
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
         }
     } else {
         Mage_Core_Controller_Varien_Action::_redirect('');
     }
 }
 public function indexAction()
 {
     Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure');
     /*$this->loadLayout();
             $block = $this->getLayout()->createBlock(
     		'Mage_Core_Block_Template',
     		'clictopay_echec',
     		array('template' => 'clictopay/echec.phtml')
     		);
     		$this->getLayout()->getBlock('content')->append($block);
             $this->renderLayout();*/
 }
Esempio n. 6
0
 public function responseAction()
 {
     if ($this->getRequest()->get("flag") == "1" && $this->getRequest()->get("orderId")) {
         $orderId = $this->getRequest()->get("orderId");
         $order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
         $order->setState(Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW, true, 'Payment Success.');
         $order->save();
         Mage::getSingleton('checkout/session')->unsQuoteId();
         Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure' => false));
     } else {
         Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/error', array('_secure' => false));
     }
 }
 public function returnAction()
 {
     /* Your gateway's code to make sure the reponse you
     			/* just got is from the gatway and not from some weirdo.
     			/* This generally has some checksum or other checks,
     			/* and is provided by the gateway.
     			/* For now, we assume that the gateway's response is valid
     			*/
     $data = $this->getRequest()->getParams();
     $orderId = substr($data['txnid'], 2);
     // Generally sent by gateway
     $status = $data['status'];
     $payRef = "reference number";
     if (!empty($orderId)) {
         $validated = true;
     }
     if ($validated) {
         // Payment was successful, so update the order's state, send order email and move to the success page
         $order = Mage::getSingleton('sales/order');
         $order->loadByIncrementId($orderId);
         switch ($status) {
             case "S":
                 $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, 'Gateway has authorized the payment.');
                 break;
             case "P":
                 $order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, true, 'Awaiting Payment.');
                 break;
             default:
                 $order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, true, 'Pending');
         }
         $order->sendNewOrderEmail();
         $order->setEmailSent(true);
         $order->save();
         Mage::getSingleton('checkout/session')->unsQuoteId();
         Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure' => true));
     } else {
         // There is a problem in the response we got
         $this->cancelAction();
         Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
     }
 }
 public function responseAction()
 {
     $orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
     $order = Mage::getModel('sales/order')->loadByIncrementId(Mage::getSingleton('checkout/session')->getLastRealOrderId());
     /*
      * $order = Mage::getModel('sales/order')->loadByIncrementId(Mage::getSingleton('checkout/session')->getLastRealOrderId());
      * $order->getGrandTotal();
      *
      * */
     /*
              * * Most frequent transaction statuses:
              * *
     			0 - Invalid or incomplete
     			1 - Cancelled by customer
     			2 - Authorisation declined
     			5 - Authorised
     			9 - Payment requested
     */
     $response_code = $this->getRequest()->getParam('f_code');
     $error = false;
     $status = "";
     if ($response_code == "Ok") {
         $response_type = "accept";
     } else {
         $response_type = "decline";
     }
     switch ($response_type) {
         case 'accept':
             /** trying to create invoice * */
             try {
                 if (!$order->canInvoice()) {
                     //Mage::throwException(Mage::helper('core')->__('cannot create an invoice !'));
                     $response_message = $this->__('Error: cannot create an invoice !');
                     $this->renderResponse($response_message);
                     return false;
                 } else {
                     /** create invoice  **/
                     //$invoiceId = Mage::getModel('sales/order_invoice_api')->create($order->getIncremenetId(), array());
                     $invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice();
                     if (!$invoice->getTotalQty()) {
                         //Mage::throwException(Mage::helper('core')->__('cannot create an invoice without products !'));
                         $response_message = $this->__('Error: cannot create an invoice without products !');
                         $this->renderResponse($response_message);
                         return false;
                     }
                     $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE);
                     $invoice->register();
                     $transactionSave = Mage::getModel('core/resource_transaction')->addObject($invoice)->addObject($invoice->getOrder());
                     $transactionSave->save();
                     $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, 'Payfort has accepted the payment.');
                     /** load invoice * */
                     //$invoice = Mage::getModel('sales/order_invoice')->loadByIncrementId($invoiceId);
                     /** pay invoice * */
                     //$invoice->capture()->save();
                 }
             } catch (Mage_Core_Exception $e) {
                 //Mage::throwException(Mage::helper('core')->__('cannot create an invoice !'));
             }
             $order->sendNewOrderEmail();
             $order->setEmailSent(true);
             $order->save();
             $response_status = 9;
             if ($response_status == 9) {
                 $response_message = $this->__('Your payment is accepted.');
             } elseif ($response_status == 5) {
                 $response_message = $this->__('Your payment is authorized.');
             } else {
                 $response_message = $this->__('Unknown response status.');
             }
             // $this->renderResponse($response_message);
             // Mage::getSingleton('checkout/session')->setSuccessMessage($response_status_message);
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure' => true));
             return;
             break;
         case 'decline':
             // There is a problem in the response we got
             $this->cancelAction();
             // $response_status_message = Mage::helper('payfort/data')->getResponseCodeDescription($response_status);
             Mage::getSingleton('checkout/session')->setErrorMessage($response_status_message);
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
             // $this->renderResponse($response_message);
             return;
             break;
         case 'exception':
             // There is a problem in the response we got
             $this->cancelAction();
             // $response_status_message = Mage::helper('payfort/data')->getResponseCodeDescription($response_status);
             Mage::getSingleton('checkout/session')->setErrorMessage($response_status_message);
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
             // $this->renderResponse($response_message);
             return;
             break;
         case 'cancel':
             // There is a problem in the response we got
             $this->cancelAction();
             // $response_status_message = Mage::helper('payfort/data')->getResponseCodeDescription($response_status);
             Mage::getSingleton('checkout/session')->setErrorMessage($response_status_message);
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
             // $this->renderResponse($response_message);
             return;
             break;
         default:
             $response_message = $this->__('Response Unknown');
             $this->renderResponse($response_message);
             return;
             break;
     }
 }
 public function failureAction()
 {
     //$this->cancelAction();
     Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
 }
 public function responseAction()
 {
     //var_dump($_POST); use for debugging value.
     if ($_GET['order_id']) {
         $orderId = $_GET['order_id'];
         // Generally sent by gateway
         $status = $_GET['status_code'];
         if ($status == '200' && !is_null($orderId) && $orderId != '') {
             // Redirected by Veritrans, if ok
             Mage::getSingleton('checkout/session')->unsQuoteId();
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure' => false));
         } else {
             // There is a problem in the response we got
             $this->cancelAction();
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
         }
     } else {
         Mage_Core_Controller_Varien_Action::_redirect('');
     }
 }
Esempio n. 11
0
 public function responseAction()
 {
     //var_dump($_POST); use for debugging value.
     $prefix = Mage::getStoreConfig('payment/vtweb/prefix_id');
     if ($this->getRequest()->isPost()) {
         Mage::log('POST:' . print_r($_POST, true), null, 'responseAction.log', true);
         $orderId = $_POST['order_id'];
         // Generally sent by gateway
         $orderId = str_replace($prefix, '', $orderId);
         $status = $_POST['status_code'];
         if ($status == 'success' && !is_null($orderId) && $orderId != '') {
             // Redirected by Veritrans, if ok
             Mage::getSingleton('checkout/session')->unsQuoteId();
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure' => true));
         } else {
             // There is a problem in the response we got
             $this->cancelAction();
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
         }
     } else {
         Mage::log('GET:' . print_r($_GET, true), null, 'responseAction.log', true);
         $orderId = $_GET['order_id'];
         // Generally sent by gateway
         $orderId = str_replace($prefix, '', $orderId);
         $status = $_GET['status_code'];
         if ($status == '200' && !is_null($orderId) && $orderId != '') {
             // Redirected by Veritrans, if ok
             Mage::getSingleton('checkout/session')->unsQuoteId();
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure' => true));
         } else {
             if ($status == '201' && !is_null($orderId) && $orderId != '') {
                 //set order to review state
                 $new_order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
                 $new_order->setStatus(Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW);
                 $new_order->save();
                 // Redirected by Veritrans, if ok
                 Mage::getSingleton('checkout/session')->unsQuoteId();
                 Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure' => true));
             } else {
                 // Back to merchant - reorder
                 Mage_Core_Controller_Varien_Action::_redirect('vtweb/payment/reorder', array('_secure' => true));
             }
         }
         //			Mage_Core_Controller_Varien_Action::_redirect('');
     }
 }
 public function getMerchantPageDataAction()
 {
     $orderId = $this->pfOrder->getSessionOrderId();
     $this->pfOrder->loadOrder($orderId);
     $_order = $this->pfOrder->getLoadedOrder();
     if (!$_order) {
         Mage_Core_Controller_Varien_Action::_redirect('checkout/cart', array('_secure' => true));
     }
     if ($_order->getState() != Mage_Sales_Model_Order::STATE_PENDING_PAYMENT) {
         $_order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, (bool) Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, $this->__('Payfort pending payment.'))->save();
     }
     $gatewayParams = $this->pfPayment->getPaymentRequestParams(PAYFORT_FORT_PAYMENT_METHOD_CC, PAYFORT_FORT_INTEGRATION_TYPE_MERCAHNT_PAGE);
     $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($gatewayParams));
 }
 /**
  * Triggered when a user cancels a payment at CC Avenue
  * or when there was a proble with the payment
  */
 public function cancelAction()
 {
     $this->cancelOrder(Mage::helper('ccavenue')->__('The payment was cancelled at CC Avenue.'));
     Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
 }
 public function responseAction()
 {
     $orderId = $this->getRequest()->getParam("transaction_id");
     if ($orderId) {
         $order = Mage::getModel('sales/order');
         $order->loadByIncrementId($orderId);
         $khipuauthorized = $this->__('Payment in khipu verification.');
         $order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, true, $khipuauthorized);
         Mage::getSingleton('checkout/session')->unsQuoteId();
         Mage_Core_Controller_Varien_Action::_redirect('khmage/payment/success', array('_secure' => true));
     } else {
         Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
     }
 }
 public function responseAction()
 {
     if ($_GET['order_id']) {
         $orderId = $_GET['order_id'];
         // Generally sent by gateway
         $status = $_GET['status_code'];
         //Mage::log('orderid= '.$orderId.'status = '.$status,null,'vtdirect_veritrans.log',true);
         if ($status == '200' && !is_null($orderId) && $orderId != '') {
             // Redirected by Veritrans, if ok
             //Mage::log('masuk if status 200, order id gak null dan order id gak empty',null,'vtdirect_veritrans.log',true);
             Mage::getSingleton('checkout/session')->unsQuoteId();
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure' => false));
         } else {
             // There is a problem in the response we got
             $this->cancelAction();
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
         }
     } else {
         if ($_POST['response']) {
             $response = json_decode($_POST['response']);
             //Mage::log(print_r($response,TRUE),null,'vtdirect_veritrans.log',true);
             $status_code = $response->status_code;
             $orderId = $response->order_id;
             //Mage::log('status_code = '.$status_code.'order id= '.$orderId,null,'vtdirect_veritrans.log',true);
             if ($status_code == '200' && !is_null($orderId) && $orderId != '') {
                 //redirected by veritrans if okay.
                 //Mage::log('status 200, order id not null',null,'vtdirect_veritrans.log',true);
                 Mage::getSingleton('checkout/session')->unsQuoteId();
                 //Mage::log(print_r(Mage::getSingleton('checkout/session')->unsQuoteId(),TRUE),null,'vtdirect_veritrans.log',true);
                 Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure' => false));
             } else {
                 // There is a problem in the response we got
                 $this->cancelAction();
                 Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
             }
         } else {
             Mage::log('masuk ke else artinya ga ada order id', null, 'vtdirect_veritrans.log', true);
             Mage_Core_Controller_Varien_Action::_redirect('');
         }
     }
 }
 private function redirect_first($cart_array)
 {
     Mage_Core_Controller_Varien_Action::_redirect('modulodepago2/formulariocustom/insite', array('_secure' => true, 'amount' => $cart_array['Amount']));
 }
Esempio n. 17
0
 public function responseAction()
 {
     $orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
     $order = Mage::getModel('sales/order')->loadByIncrementId(Mage::getSingleton('checkout/session')->getLastRealOrderId());
     /*
      * $order = Mage::getModel('sales/order')->loadByIncrementId(Mage::getSingleton('checkout/session')->getLastRealOrderId());
      * $order->getGrandTotal();
      *
      * */
     /*
              * * Most frequent transaction statuses:
              * *
     			14 purchase
       02 authorize
     */
     $sha_in_pass_phrase = Mage::getStoreConfig('payment/payfort/sha_in_pass_phrase');
     $sha_out_pass_phrase = Mage::getStoreConfig('payment/payfort/sha_out_pass_phrase');
     $params_not_included = array('signature', '_s');
     $response_type = $this->getRequest()->getParam('response_message');
     $signature = $this->getRequest()->getParam('signature');
     $response_order_id = $this->getRequest()->getParam('merchant_reference');
     $response_status = $this->getRequest()->getParam('status');
     $response_code = $this->getRequest()->getParam('response_code');
     $response_params = $this->getRequest()->getParams();
     $response_status_message = $response_type;
     uksort($response_params, 'strnatcasecmp');
     $sha_string = '';
     $error = false;
     $status = "";
     foreach ($response_params as $key => $param) {
         // ignore not included params
         if (in_array($key, $params_not_included)) {
             continue;
         }
         // ignore empty params
         if ($param == '') {
             continue;
         }
         $sha_string .= strtolower($key) . '=' . $param;
     }
     $sha_type = Mage::getStoreConfig('payment/payfort/sha_type');
     //$sha_string_encrypted = sha1($sha_string);
     //die($sha_out_pass_phrase.$sha_string.$sha_out_pass_phrase);
     $sha_string_encrypted = hash(str_replace('-', '', $sha_type), $sha_out_pass_phrase . $sha_string . $sha_out_pass_phrase);
     // check the signature
     if (strtolower($sha_string_encrypted) !== strtolower($signature)) {
         $response_message = $this->__('Invalid response signature.');
         $this->loadLayout();
         //Creating a new block
         $block = $this->getLayout()->createBlock('Mage_Core_Block_Template', 'payfort_block_response', array('template' => 'payfort/pay/response.phtml'))->setData('response_message', $response_message);
         $this->getLayout()->getBlock('content')->append($block);
         //Now showing it with rendering of layout
         $this->renderLayout();
         // There is a problem in the response we got
         $this->cancelAction();
         // $response_status_message = Mage::helper('payfort/data')->getResponseCodeDescription($response_status);
         Mage::getSingleton('checkout/session')->setErrorMessage($response_status_message);
         Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
         // $this->renderResponse($response_message);
         return false;
     }
     //$response_status_message = Mage::helper('payfort/data')->getResponseCodeDescription($response_status);
     if ($response_status != 12 && $response_status != 02 || substr($response_code, 2) != '000') {
         // $response_message = $this->__($response_status_message);
         // $this->renderResponse($response_message);
         // return false;
         if ($response_type != 'decline') {
             $response_type = 'decline';
         }
     }
     if (substr($response_code, 2) == '000') {
         $response_type = 'Success';
     }
     switch ($response_type) {
         case 'Success':
             /** trying to create invoice * */
             try {
                 if (!$order->canInvoice()) {
                     //Mage::throwException(Mage::helper('core')->__('cannot create an invoice !'));
                     $response_message = $this->__('Error: cannot create an invoice !');
                     $this->renderResponse($response_message);
                     return false;
                 } else {
                     /** create invoice  **/
                     //$invoiceId = Mage::getModel('sales/order_invoice_api')->create($order->getIncremenetId(), array());
                     $invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice();
                     if (!$invoice->getTotalQty()) {
                         //Mage::throwException(Mage::helper('core')->__('cannot create an invoice without products !'));
                         $response_message = $this->__('Error: cannot create an invoice without products !');
                         $this->renderResponse($response_message);
                         return false;
                     }
                     $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE);
                     $invoice->register();
                     $transactionSave = Mage::getModel('core/resource_transaction')->addObject($invoice)->addObject($invoice->getOrder());
                     $transactionSave->save();
                     $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, 'Payfort has accepted the payment.');
                     /** load invoice * */
                     //$invoice = Mage::getModel('sales/order_invoice')->loadByIncrementId($invoiceId);
                     /** pay invoice * */
                     //$invoice->capture()->save();
                 }
             } catch (Mage_Core_Exception $e) {
                 //Mage::throwException(Mage::helper('core')->__('cannot create an invoice !'));
             }
             $order->sendNewOrderEmail();
             $order->setEmailSent(true);
             $order->save();
             if ($response_status == 14) {
                 $response_message = $this->__('Your payment is accepted.');
             } elseif ($response_status == 02) {
                 $response_message = $this->__('Your payment is authorized.');
             } else {
                 $response_message = $this->__('Unknown response status.');
             }
             // $this->renderResponse($response_message);
             // Mage::getSingleton('checkout/session')->setSuccessMessage($response_status_message);
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure' => true));
             return;
             break;
         case 'decline':
             // There is a problem in the response we got
             $this->cancelAction();
             // $response_status_message = Mage::helper('payfort/data')->getResponseCodeDescription($response_status);
             Mage::getSingleton('checkout/session')->setErrorMessage($response_status_message);
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
             // $this->renderResponse($response_message);
             return;
             break;
         case 'exception':
             // There is a problem in the response we got
             $this->cancelAction();
             // $response_status_message = Mage::helper('payfort/data')->getResponseCodeDescription($response_status);
             Mage::getSingleton('checkout/session')->setErrorMessage($response_status_message);
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
             // $this->renderResponse($response_message);
             return;
             break;
         case 'cancel':
             // There is a problem in the response we got
             $this->cancelAction();
             // $response_status_message = Mage::helper('payfort/data')->getResponseCodeDescription($response_status);
             Mage::getSingleton('checkout/session')->setErrorMessage($response_status_message);
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
             // $this->renderResponse($response_message);
             return;
             break;
         default:
             $response_message = $this->__('Response Unknown');
             $this->renderResponse($response_message);
             return;
             break;
     }
 }
 public function cancelAction($orderId = FALSE, $errorDescription = "Unknown reason")
 {
     if (!$orderId) {
         $orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
     }
     if ($orderId) {
         $order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
         if ($order->getId()) {
             $order->cancel()->setState(Mage_Sales_Model_Order::STATE_CANCELED, true, "Gateway has declined the payment: {$errorDescription}.")->save();
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
         }
     }
 }
 public function responseAction()
 {
     if ($this->getRequest()->isPost()) {
         // Retrieve POST Values
         $working_key = Mage::getStoreConfig('payment/ccavenue/working_key');
         $merchant_id = $this->getRequest()->getPost('Merchant_Id');
         $amount = $this->getRequest()->getPost('Amount');
         $order_id = $this->getRequest()->getPost('Order_Id');
         $merchant_param = $this->getRequest()->getPost('Merchant_Param');
         $checksum = $this->getRequest()->getPost('Checksum');
         $auth_desc = $this->getRequest()->getPost('AuthDesc');
         $card_category = $this->getRequest()->getPost('card_category');
         $bank_name = $this->getRequest()->getPost('bank_name');
         // Check whether AuthQuery is required
         if (Mage::getStoreConfig('payment/ccavenue/enable_auth_query')) {
             // Prepare cURL request
             $ch = curl_init();
             $post_data = 'Merchant_Id=' . Mage::getStoreConfig('payment/ccavenue/merchant_id') . '&Order_Id=' . $order_id;
             curl_setopt($ch, CURLOPT_URL, 'https://www.ccavenue.com/servlet/new_txn.OrderStatusTracker');
             curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
             curl_setopt($ch, CURLOPT_HEADER, false);
             curl_setopt($ch, CURLOPT_POST, count($post_data));
             curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
             // Run cURL request
             $order_details = curl_exec($ch);
             // Close cURL request
             curl_close($ch);
             // Check for error
             if (stripos($order_details, 'error=') !== false) {
                 $auth_desc = 'AuthQuery!';
             } else {
                 // No error, check for validity
                 parse_str($order_details, $order_details);
                 if (!isset($order_details['Order_Id']) || !isset($order_details['AuthDesc']) || $order_details['Order_Id'] != $merchant_id . '-' . $order_id || $order_details['AuthDesc'] != $auth_desc) {
                     $auth_desc = 'AuthQuery!';
                 }
             }
         }
         // Insert into CCAvenue Response Log Table
         $now = Mage::getModel('core/date')->timestamp(time());
         Mage::getModel('ccavenue/ccavenueresponse')->setMerchantId($merchant_id)->setAmount($amount)->setOrderId($order_id)->setMerchantParam($merchant_param)->setChecksum($checksum)->setAuthdesc($auth_desc)->setCcavenueResponseIp($this->get_uer_ip())->setCardCategory($card_category)->setBankName($bank_name)->setCcavenueResponseDtime(date('Y-m-d H:i:s', $now))->save();
         $checksum = $this->verifyChecksum($merchant_id, $order_id, $amount, $auth_desc, $checksum, $working_key);
         // Check response and take appropriate actions
         if ($checksum == "true" && $auth_desc == "Y") {
             // Payment was successful, so update the order's state, send order email and move to the success page
             $order = Mage::getModel('sales/order');
             $order->loadByIncrementId($order_id);
             $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, 'CCAvenue has authorized the payment.');
             $order->sendNewOrderEmail();
             $order->setEmailSent(true);
             $order->save();
             Mage::getSingleton('checkout/session')->unsQuoteId();
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure' => true));
         } else {
             if ($checksum == "true" && $auth_desc == "B") {
                 // Payment was successful as a 'Batch Processing' order. Status of such payments can only be determined after some time
                 $this->reviewAction();
                 Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
             } else {
                 if ($checksum == "true" && $auth_desc == "N") {
                     // CCAvenue has declined the payment, so cancel the order and redirect to fail page
                     $this->cancelAction();
                     Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
                 } else {
                     // There is a serious problem in getting a response from CCAvenue
                     $this->cancelAction();
                     Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure ' => true));
                 }
             }
         }
     } else {
         Mage_Core_Controller_Varien_Action::_redirect('');
     }
 }
 public function cancelAction()
 {
     /*
             $session = Mage::getSingleton('checkout/session');
             $session->setQuoteId($session->getCcavenuepayStandardQuoteId(true));
     
      
     $order_history_comment='';	
             
             if ($session->getLastRealOrderId()) {
                 $order = Mage::getModel('sales/order')->loadByIncrementId($session->getLastRealOrderId());
                 if ($order->getId()) {
     		 
     		$order_history_comments = $this->getCheckout()->getCcavenuepayErrorMessage();
     		foreach($order_history_comments as $order_history_comment)
     		{
     			if($order_history_comment !='') $order->addStatusHistoryComment($order_history_comment,true);
     		}			
                     $order->cancel()->save();
                 }
             }
     
            
     Mage::getSingleton('checkout/session')->addError("CcavenuePay Payment has been cancelled and the transaction has been declined.");
     if($order_history_comment!='')	Mage::getSingleton('checkout/session')->addError($order_history_comment);
     $this->_redirect('checkout/cart');
     */
     if (Mage::getSingleton('checkout/session')->getLastRealOrderId()) {
         $this->cancelOrder(Mage::helper('ccavenuepay')->__('The payment was cancelled at CC Avenue.'));
         Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
     } else {
         Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
     }
 }
 public function redirectAction()
 {
     $orderIncrementId = $this->_getCheckout()->getLastRealOrderId();
     $order = Mage::getModel('sales/order')->loadByIncrementId($orderIncrementId);
     $sessionId = Mage::getSingleton('core/session');
     /* need to set payment data to Mage::getSingleton('core/session')->setPaymentData(); when checkout */
     $pay = Mage::getSingleton('core/session')->getPaymentData();
     Veritrans_Config::$isProduction = Mage::getStoreConfig('payment/mandiriclickpay/environment') == 'production' ? true : false;
     Veritrans_Config::$serverKey = Mage::getStoreConfig('payment/mandiriclickpay/server_key_v2');
     $transaction_details = array();
     $transaction_details['order_id'] = $orderIncrementId;
     $order_billing_address = $order->getBillingAddress();
     $billing_address = array();
     $billing_address['first_name'] = $order_billing_address->getFirstname();
     $billing_address['last_name'] = $order_billing_address->getLastname();
     $billing_address['address'] = $order_billing_address->getStreet(1);
     $billing_address['city'] = $order_billing_address->getCity();
     if (strlen($billing_address['city']) > 20) {
         $split = explode('/', $billing_address['city']);
         if (count($split) == 1) {
             $billing_address['city'] = substr($billing_address['city'], 20);
         } else {
             $billing_address['city'] = $split[1];
         }
     }
     $billing_address['postal_code'] = $order_billing_address->getPostcode();
     $billing_address['country_code'] = $this->convert_country_code($order_billing_address->getCountry());
     $billing_address['phone'] = $this->convert_country_code($order_billing_address->getTelephone());
     $order_shipping_address = $order->getShippingAddress();
     $shipping_address = array();
     $shipping_address['first_name'] = $order_shipping_address->getFirstname();
     $shipping_address['last_name'] = $order_shipping_address->getLastname();
     $shipping_address['address'] = $order_shipping_address->getStreet(1);
     $shipping_address['city'] = $order_shipping_address->getCity();
     if (strlen($shipping_address['city']) > 20) {
         $split = explode('/', $shipping_address['city']);
         if (count($split) == 1) {
             $shipping_address['city'] = substr($shipping_address['city'], 20);
         } else {
             $shipping_address['city'] = $split[1];
         }
     }
     $shipping_address['postal_code'] = $order_shipping_address->getPostcode();
     $shipping_address['phone'] = $order_shipping_address->getTelephone();
     $shipping_address['country_code'] = $this->convert_country_code($order_shipping_address->getCountry());
     $customer_details = array();
     $customer_details['billing_address'] = $billing_address;
     $customer_details['shipping_address'] = $shipping_address;
     $customer_details['first_name'] = $order_billing_address->getFirstname();
     $customer_details['last_name'] = $order_billing_address->getLastname();
     $customer_details['email'] = $order_billing_address->getEmail();
     $customer_details['phone'] = $order_billing_address->getTelephone();
     $items = $order->getAllItems();
     $shipping_amount = $order->getShippingAmount();
     $shipping_tax_amount = $order->getShippingTaxAmount();
     $tax_amount = $order->getTaxAmount();
     $item_details = array();
     foreach ($items as $each) {
         $item = array('id' => $each->getProductId(), 'price' => $each->getPrice(), 'quantity' => $each->getQtyToInvoice(), 'name' => substr($each->getName(), 0, 50));
         if ($item['quantity'] == 0) {
             continue;
         }
         // error_log(print_r($each->getProductOptions(), true));
         $item_details[] = $item;
     }
     $num_products = count($item_details);
     unset($each);
     if ($order->getDiscountAmount() != 0) {
         $couponItem = array('id' => 'DISCOUNT', 'price' => $order->getDiscountAmount(), 'quantity' => 1, 'name' => 'DISCOUNT');
         $item_details[] = $couponItem;
     }
     if ($shipping_amount > 0) {
         $shipping_item = array('id' => 'SHIPPING', 'price' => $shipping_amount, 'quantity' => 1, 'name' => 'Shipping Cost');
         $item_details[] = $shipping_item;
     }
     if ($shipping_tax_amount > 0) {
         $shipping_tax_item = array('id' => 'SHIPPING_TAX', 'price' => $shipping_tax_amount, 'quantity' => 1, 'name' => 'Shipping Tax');
         $item_details[] = $shipping_tax_item;
     }
     if ($tax_amount > 0) {
         $tax_item = array('id' => 'TAX', 'price' => $tax_amount, 'quantity' => 1, 'name' => 'Tax');
         $item_details[] = $tax_item;
     }
     // convert to IDR
     $current_currency = Mage::app()->getStore()->getCurrentCurrencyCode();
     if ($current_currency != 'IDR') {
         $conversion_func = function ($non_idr_price) {
             return $non_idr_price * Mage::getStoreConfig('payment/vtdirect/conversion_rate');
         };
         foreach ($item_details as &$item) {
             $item['price'] = call_user_func($conversion_func, intval(round($item['price'])));
         }
         unset($item);
     } else {
         foreach ($item_details as &$each) {
             $each['price'] = (int) $each['price'];
         }
         unset($each);
     }
     $mandiri = Mage::getSingleton('core/session')->getPaymentData();
     $payloads = array();
     $payloads['transaction_details'] = $transaction_details;
     $payloads['item_details'] = $item_details;
     $payloads['customer_details'] = $customer_details;
     $payloads['payment_type'] = 'mandiri_clickpay';
     $payloads['mandiri_clickpay'] = array('card_number' => $mandiri['cc_number'], 'input1' => $mandiri['input1'], 'input2' => $mandiri['input2'], 'input3' => $mandiri['input3'], 'token' => $mandiri['token']);
     try {
         $redirUrl = Veritrans_VtDirect::charge($payloads);
         Mage::log($redirUrl, null, 'vtdirect_veritrans.log', true);
         if ($redirUrl->status_code == '200' || $redirUrl->status_code == '201') {
             $order->setState(Mage::getStoreConfig('payment/vtdirect/'), true, 'New order, waiting for payment.');
             $order->sendNewOrderEmail();
             $order->setEmailSent(true);
             // Redirected by Veritrans, if ok
             Mage::getSingleton('checkout/session')->unsQuoteId();
             foreach (Mage::getSingleton('checkout/session')->getQuote()->getItemsCollection() as $item) {
                 Mage::getSingleton('checkout/cart')->removeItem($item->getId())->save();
             }
             //delete item from cart
             foreach (Mage::getSingleton('checkout/session')->getQuote()->getItemsCollection() as $item) {
                 Mage::getSingleton('checkout/cart')->removeItem($item->getId())->save();
             }
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure' => true));
         } else {
             // There is a problem in the response we got
             $this->cancelAction();
             Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
         }
     } catch (Exception $e) {
         Mage::log($e, null, 'vtdirect_veritrans.log');
         error_log($e->getMessage());
         Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true));
     }
 }