/** * @role login */ public function payOffline() { ActiveRecordModel::beginTransaction(); $method = $this->request->get('id'); if (!OfflineTransactionHandler::isMethodEnabled($method) || !$this->getOfflinePaymentValidator($method)->isValid()) { return new ActionRedirectResponse('checkout', 'pay'); } $order = $this->order; $this->order->setPaymentMethod($method); $response = $this->finalizeOrder(); $transaction = Transaction::getNewOfflineTransactionInstance($order, 0); $transaction->setOfflineHandler($method); $transaction->save(); $eavObject = EavObject::getInstance($transaction); $eavObject->setStringIdentifier($method); $eavObject->save(); $transaction->getSpecification()->loadRequestData($this->request); $transaction->save(); ActiveRecordModel::commit(); return $response; }