public function lastStep($order_key, $answer_key) { require_once Mage::getBaseDir('lib') . '/metododepago2/TodoPago.php'; $http_header = $this->get_http_header(); $wsdl = $this->get_wsdls(); $end_point = $this->get_end_point(); $todopago_connector = new TodoPago($http_header, $wsdl, $end_point); // /a este metodo es al que me va a devolver el gateway en caso que todo salga ok Mage::log("Modulo de pago - TodoPago ==> secondStep - orderid: " . $order_id); Mage::log("Modulo de pago - TodoPago ==> secondStep - AnswerKey: " . $answer_key); $order = new Mage_Sales_Model_Order(); $order->loadByIncrementId($order_key); if (Mage::getStoreConfig('payment/modulodepago2/modo_test_prod') == "test") { $merchant = Mage::getStoreConfig('payment/todopago_modo/idstore_test'); } else { $merchant = Mage::getStoreConfig('payment/todopago_modo/idstore'); } // Security if (Mage::getStoreConfig('payment/modulodepago2/modo_test_prod') == "test") { $security = Mage::getStoreConfig('payment/todopago_modo/codigo_seguridad_test'); } else { $security = Mage::getStoreConfig('payment/todopago_modo/codigo_seguridad'); } $requestkey = $order->getTodopagoclave(); // ahora vuelvo a consumir web service para confirmar la transaccion $optionsAnswer = array('Security' => $security, 'Merchant' => $merchant, 'RequestKey' => $requestkey, 'AnswerKey' => $answer_key); Mage::log("Modulo de pago - TodoPago ==> secondStep (" . $order_id . ") - AnswerKey: " . json_encode($optionsAnswer)); try { $second_step = $todopago_connector->getAuthorizeAnswer($optionsAnswer); Mage::log("Modulo de pago - TodoPago ==> secondStep (" . $order_id . ") - {$second_step}: " . json_encode($second_step)); $todopagotable = new Todopago_Modulodepago2_Model_Todopagotable(); $todopagotable->load($order_key, "order_id"); $todopagotable->setAnswerKey($answer_key); $todopagotable->setGetauthorizeanswerStatus(Mage::getModel('core/date')->date('Y-m-d H:i:s') . " - " . $second_step["StatusCode"] . " - " . $second_step['StatusMessage']); $todopagotable->save(); //para saber si es un cupon if (strlen($second_step['Payload']['Answer']["BARCODE"]) > 0) { if (Mage::getStoreConfig('payment/modulodepago2/modo_test_prod') == "test") { $order->setStatus(Mage::getStoreConfig('test_todopago_offline')); $order->addStatusHistoryComment("Todo Pago (TEST): " . $second_step['StatusMessage']); } else { $order->setStatus(Mage::getStoreConfig('payment/todopago_avanzada/estado_offline')); $order->addStatusHistoryComment("Todo Pago: " . $second_step['StatusMessage']); } $order->save(); Mage_Core_Controller_Varien_Action::_redirect('modulodepago2/cupon/index', array('_secure' => true, 'nroop' => $order_id, 'venc' => $second_step['Payload']['Answer']["COUPONEXPDATE"], 'total' => $second_step['Payload']['Request']['AMOUNT'], 'code' => $second_step['Payload']['Answer']["BARCODE"], 'tipocode' => $second_step['Payload']['Answer']["BARCODETYPE"], 'empresa' => $second_step['Payload']['Answer']["PAYMENTMETHODNAME"])); } elseif ($second_step['StatusCode'] == -1) { if (Mage::getStoreConfig('payment/modulodepago2/modo_test_prod') == "test") { $order->setStatus('test_todopago_complete'); $order->addStatusHistoryComment("Todo Pago (TEST): " . $second_step['StatusMessage']); } else { $order->setStatus(Mage::getStoreConfig('payment/todopago_avanzada/order_aprov')); $order->addStatusHistoryComment("Todo Pago: " . $second_step['StatusMessage']); } $order->save(); Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure' => true)); } elseif ($second_step['StatusCode'] != -1) { if (Mage::getStoreConfig('payment/modulodepago2/modo_test_prod') == "test") { $order->setStatus('test_todopago_canceled'); $order->addStatusHistoryComment("Todo Pago (TEST): " . $second_step['StatusMessage']); } else { $order->setStatus(Mage::getStoreConfig('payment/todopago_avanzada/estado_denegada')); $order->addStatusHistoryComment("Todo Pago: " . $second_step['StatusMessage']); } $order->save(); Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true)); } } catch (Exception $e) { if (Mage::getStoreConfig('payment/modulodepago2/modo_test_prod') == "test") { $order->setStatus('test_todopago_canceled'); $order->addStatusHistoryComment("Todo Pago (TEST)(Exception): " . $e); } else { $order->setStatus(Mage::getStoreConfig('payment/todopago_avanzada/estado_denegada')); $order->addStatusHistoryComment("Todo Pago (Exception): " . $e); } $order->save(); Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true)); } }
public function lastStep($order_key, $answer_key) { /*COMENTO LAS PARTES DONDE SE UTILIZAN LOS ESTADOS CREADOS POR EL MODULO*/ Mage::log("init: " . __METHOD__); $todopago_connector = Mage::helper('modulodepago2/connector')->getConnector(); // /a este metodo es al que me va a devolver el gateway en caso que todo salga ok Mage::log("Modulo de pago - TodoPago ==> secondStep - orderid: " . $order_key); Mage::log("Modulo de pago - TodoPago ==> secondStep - AnswerKey: " . $answer_key); $order = new Mage_Sales_Model_Order(); $order->loadByIncrementId($order_key); //merchant $merchant = Mage::helper('modulodepago2/ambiente')->get_merchant(); // Security $security = Mage::helper('modulodepago2/ambiente')->get_security_code(); $requestkey = $order->getTodopagoclave(); // ahora vuelvo a consumir web service para confirmar la transaccion $optionsAnswer = array('Security' => $security, 'Merchant' => $merchant, 'RequestKey' => $requestkey, 'AnswerKey' => $answer_key); Mage::log("Modulo de pago - TodoPago ==> secondStep (" . $order_key . ") - AnswerKey: " . json_encode($optionsAnswer)); try { Mage::log("try " . __METHOD__); $second_step = $todopago_connector->getAuthorizeAnswer($optionsAnswer); Mage::log("Modulo de pago - TodoPago ==> secondStep (" . $order_key . ") - second_step: " . json_encode($second_step)); $todopagotable = new Todopago_Modulodepago2_Model_Todopagotable(); $todopagotable->load($order_key, "order_id"); $todopagotable->setAnswerKey($answer_key); $todopagotable->setGetauthorizeanswerStatus(Mage::getModel('core/date')->date('Y-m-d H:i:s') . " - " . $second_step["StatusCode"] . " - " . $second_step['StatusMessage']); $todopagotable->save(); //para saber si es un cupon if (strlen($second_step['Payload']['Answer']["BARCODE"]) > 0) { $status = Mage::getStoreConfig('payment/modulodepago2/estado_offline'); if (empty($status)) { $status = Mage::getStoreConfig('payment/todopago_avanzada/estado_offline'); } $state = $this->_get_new_order_state($status); if (Mage::getStoreConfig('payment/modulodepago2/modo_test_prod') == "test") { $message = "Todo Pago (TEST): " . $second_step['StatusMessage']; } else { $message = "Todo Pago: " . $second_step['StatusMessage']; } $order->setState($state, $status, $message); try { $order->sendNewOrderEmail(); } catch (Exception $e) { Mage::log("catch : " . __METHOD__); Mage::log("message: " . var_export($e, true)); $order->sendOrderUpdateEmail(true, $message); } $order->save(); Mage_Core_Controller_Varien_Action::_redirect('modulodepago2/cupon/index', array('_secure' => true, 'nroop' => $order_key, 'venc' => $second_step['Payload']['Answer']["COUPONEXPDATE"], 'total' => $second_step['Payload']['Request']['AMOUNT'], 'code' => $second_step['Payload']['Answer']["BARCODE"], 'tipocode' => $second_step['Payload']['Answer']["BARCODETYPE"], 'empresa' => $second_step['Payload']['Answer']["PAYMENTMETHODNAME"])); } elseif ($second_step['StatusCode'] == -1) { $status = Mage::getStoreConfig('payment/modulodepago2/order_aprov'); if (empty($status)) { $status = Mage::getStoreConfig('payment/todopago_avanzada/order_aprov'); } $state = $this->_get_new_order_state($status); if (Mage::getStoreConfig('payment/modulodepago2/modo_test_prod') == "test") { $message = "Todo Pago (TEST): " . $second_step['StatusMessage']; } else { $message = "Todo Pago: " . $second_step['StatusMessage']; } $order->setState($state, $status, $message); try { $order->sendNewOrderEmail(); } catch (Exception $e) { Mage::log("catch : " . __METHOD__); Mage::log("message: " . var_export($e, true)); $order->sendOrderUpdateEmail(true, $message); } $payment = $order->getPayment(); $payment->setTransactionId($second_step['AuthorizationKey']); $payment->setParentTransactionId($payment->getTransactionId()); $payment->save(); $order->save(); $invoice = $order->prepareInvoice()->setTransactionId(1)->addComment("Invoice created.")->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE)->register()->pay(); Mage::getModel('core/resource_transaction')->addObject($invoice)->addObject($invoice->getOrder())->save(); Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure' => true)); } elseif ($second_step['StatusCode'] != -1) { $status = Mage::getStoreConfig('payment/modulodepago2/estado_denegada'); if (empty($status)) { $status = Mage::getStoreConfig('payment/todopago_avanzada/estado_denegada'); } $state = $this->_get_new_order_state($status); if (Mage::getStoreConfig('payment/modulodepago2/modo_test_prod') == "test") { $message = "Todo Pago (TEST): " . $second_step['StatusMessage']; } else { $message = "Todo Pago: " . $second_step['StatusMessage']; } $order->cancel(); Mage::log("Orden cancelada"); $order->setState($state, $status, $message); $order->sendOrderUpdateEmail(true, $message); $order->save(); Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true)); } } catch (Exception $e) { Mage::log("catch : " . __METHOD__); $status = Mage::getStoreConfig('payment/modulodepago2/estado_denegada'); if (empty($status)) { $status = Mage::getStoreConfig('payment/todopago_avanzada/estado_denegada'); } $state = $this->_get_new_order_state($status); if (Mage::getStoreConfig('payment/modulodepago2/modo_test_prod') == "test") { $message = "Todo Pago (TEST)(Exception): " . $e; } else { $message = "Todo Pago (Exception): " . $e; } $order->cancel(); Mage::log("Orden cancelada"); $order->setState($state, $status, $message); $order->sendOrderUpdateEmail(true, $message); $order->save(); Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure' => true)); } }