/** * La funcion valida que existan plugins para realizar el pago * y organiza la información para enviarsela al plugin */ private function _afterSave() { // Se obtiene el objeto que representa la orden $order = new AsomClassOrder($this->_order); // Se obtiene la informacion relevante para el pago // de la orden $data = $order->getOrder(); $paymentInfo = $order->getPaymentValues(); // Se termina de completar el objeto $paymentInfo->Reference = $data->recloc; $paymentInfo->AirlineCode = $data->provider; // Se indica si el vuelo es nacional o internacional $paymentInfo->isNational = $order->isNational(); // Se llaman todos los plugins que se tengan instalados para // el validaciones antes del pago JPluginHelper::importPlugin('amadeus'); $dispatcher = JDispatcher::getInstance(); $answer = $dispatcher->trigger('onBeforePayment', array($paymentInfo, $this->_delegate->getIDPaymentMethod())); $app = JFactory::getApplication(); if (!count($answer)) { $app->redirect('index.php', JText::_('ORDER_SAVE')); } elseif (in_array(false, $answer, true)) { $app->redirect('index.php', JText::_('PAYMENT ERROR'), 'error'); } return true; }
public function retry() { $order = (int) JRequest::getVar('order', '', 'post'); //Se valida que exista un hash con la orden generada, para mostrar asi el resultado, y evitar //que otros usuarios vean otras ordenes $code = JFactory::getApplication()->getUserState('asom.code', ''); $config = new JConfig(); $secret = sha1($order . $config->secret); if ($order != 0 && $secret == $code) { // Directorio que contiene la libreria que consta de interfaces y clases para // integrarse con el AmadeuS Order Manager $library = JPATH_ROOT . DS . 'administrator' . DS . 'components' . DS . 'com_asom' . DS . 'library'; // Se registra el directorio, para que dinamicamente cargue las clases necesarias. JLoader::registerPrefix('Asom', $library); $order = new AsomClassOrder($order); // Se obtiene la informacion relevante para el pago // de la orden $data = $order->getOrder(); $paymentInfo = $order->getPaymentValues(); // Se termina de completar el objeto $paymentInfo->Reference = $data->recloc; $paymentInfo->AirlineCode = $data->provider; // Se indica si el vuelo es nacional o internacional $paymentInfo->isNational = $order->isNational(); // Se llaman todos los plugins que se tengan instalados para // el validaciones antes del pago JPluginHelper::importPlugin('amadeus'); $dispatcher = JDispatcher::getInstance(); $paymentMethod = JRequest::getVar('payment', '', 'post'); $answer = $dispatcher->trigger('onBeforePayment', array($paymentInfo, $paymentMethod)); $app = JFactory::getApplication(); if (!count($answer)) { $app->redirect('index.php', JText::_('ORDER_SAVE')); } elseif (in_array(false, $answer, true)) { $app->redirect('index.php', JText::_('PAYMENT ERROR'), 'error'); } return true; } else { JFactory::getApplication()->redirect('index.php', JText::_('ORDER IS NOT VALID, TRY AGAIN'), 'error'); } }