/** * This function is likely never returns * but anyway handle result and exceptions * @return Am_Paysystem_Result */ function process() { $err = $this->invoice->validate(); if ($err) { throw new Am_Exception_InputError($err[0]); } $this->invoice->save(); $plugin = Am_Di::getInstance()->plugins_payment->loadGet($this->invoice->paysys_id); $this->result = new Am_Paysystem_Result(); $plugin->processInvoice($this->invoice, $this->controller->getRequest(), $this->result); if ($this->result->isSuccess() || $this->result->isFailure()) { if ($transaction = $this->result->getTransaction()) { $transaction->setInvoice($this->invoice); $transaction->process(); } } if ($this->result->isSuccess()) { $url = REL_ROOT_URL . "/thanks?id=" . $this->invoice->getSecureId('THANKS'); $this->callback($this->onSuccess); $this->controller->redirectLocation($url, ___("Invoice processed"), ___("Invoice processed successfully")); // no return Am_Exception_Redirect } elseif ($this->result->isAction()) { $this->callback($this->onAction); $this->result->getAction()->process($this->controller); // no return Am_Exception_Redirect } else { // ($result->isFailure()) { $this->callback($this->onFailure); } return $this->result; }
/** * This function is likely never returns * but anyway handle result and exceptions * @return Am_Paysystem_Result */ function process() { Am_Di::getInstance()->hook->call(Am_Event::INVOICE_BEFORE_PAYMENT, array('invoice' => $this->invoice, 'controller' => $this->controller)); $plugin = Am_Di::getInstance()->plugins_payment->loadGet($this->invoice->paysys_id); $this->result = new Am_Paysystem_Result(); $plugin->processInvoice($this->invoice, $this->controller->getRequest(), $this->result); if ($this->result->isSuccess() || $this->result->isFailure()) { if ($transaction = $this->result->getTransaction()) { $transaction->setInvoice($this->invoice); $transaction->process(); } } if ($this->result->isSuccess()) { if (method_exists($this->controller, 'getForm')) { $this->controller->getForm()->getSessionContainer()->destroy(); } $url = REL_ROOT_URL . "/thanks?id=" . $this->invoice->getSecureId('THANKS'); $this->callback($this->onSuccess); $this->controller->redirectLocation($url); // no return // Am_Exception_Redirect only for APPLICATION_ENV = 'testing' } elseif ($this->result->isAction()) { if (method_exists($this->controller, 'getForm')) { $this->controller->getForm()->getSessionContainer()->destroy(); } $this->callback($this->onAction); $this->result->getAction()->process($this->controller); // no return // Am_Exception_Redirect only for APPLICATION_ENV = 'testing' } else { // ($result->isFailure()) { $this->callback($this->onFailure); } return $this->result; }
function directAction(Am_Request $request, Zend_Controller_Response_Http $response, array $invokeArgs) { if (!$this->getDi()->auth->getUserId() || !($invoice_id = $this->getDi()->auth->getUser()->data()->get(self::NEED_SHOW_OTO))) { throw new Am_Exception_InternalError(); } $user = $this->getDi()->auth->getUser(); $invoice = $this->getDi()->invoiceTable->load($invoice_id); $controller = new Am_Controller($request, $response, $invokeArgs); // find first matching upsell $oto = $this->getDi()->otoTable->findUpsell($invoice->getProducts()); if ($controller->getRequest()->get('oto') == 'no') { $oto = $this->getDi()->otoTable->findDownsell($invoice->data()->get(self::LAST_OTO_SHOWN)); } if (!$oto) { $user->data()->set(self::NEED_SHOW_OTO, null)->update(); Am_Controller::redirectLocation(REL_ROOT_URL); } if ($controller->getRequest()->get('oto') == 'yes') { $user->data()->set(self::NEED_SHOW_OTO, null)->update(); return $this->yesOto($controller, $invoice, $this->getDi()->otoTable->load($invoice->data()->get(self::LAST_OTO_SHOWN))); } $invoice->data()->set(self::LAST_OTO_SHOWN, $oto->pk())->update(); $html = $oto->render(); $controller->getResponse()->setBody($html); throw new Am_Exception_Redirect(); }
public function createBasketController($id, $title, Am_Controller $controller) { return new AdminCartHtmlGenerateController_Basket($controller->getRequest(), $controller->getResponse(), $this->_invokeArgs); }
public function createSavedController($id, $title, Am_Controller $controller) { return new AdminReportsController_Saved($controller->getRequest(), $controller->getResponse(), $this->_invokeArgs); }