protected function handleError($message, $code, $force_redirect = false) { $this->module->getLogger()->err(get_class($this) . ': ' . $message . ' (' . $code . ')'); if (!$this->redirect_on_error && !$force_redirect) { throw new Exception($message, self::RESP_ERR_BASE + $code); } else { Tools::redirect($this->getControllerOrderUrl()); exit(0); } }
protected function createOrderFromCart($cart, $payin7_order_id, $payment_method, $is_sandbox, &$message, &$code) { $this->module->getLogger()->info(get_class($this) . ': createOrderFromCart :: ' . $cart->id . ', pd: ' . $payin7_order_id); $message = null; $code = null; if (!$cart || !$payin7_order_id || !$payment_method) { $message = 'Invalid payment method'; return false; } /** @var \Payin7\Models\OrderModel $order_model */ $order_model = $this->module->getModelInstance('order'); $order_id = null; Db::getInstance()->execute('BEGIN'); try { // validate and store the order /** @noinspection PhpUndefinedMethodInspection */ $this->module->validateOrder($cart->id, $this->module->getConfigIdOrderStatePending(), $cart->getOrderTotal(), $this->module->displayName, null, array(), $cart->id_currency, false, $cart->secure_key); /** @noinspection PhpUndefinedFieldInspection */ $order_id = $this->module->currentOrder; if (!$order_id) { Db::getInstance()->execute('ROLLBACK'); $this->handleError($this->module->l('Invalid params'), self::RESP_REQUEST_ERR); } $order_model->setPaymentMethodCode($payment_method); $order_model->setPayin7SandboxOrder($is_sandbox); $order_model->setCartSecureKey($cart->secure_key); $order_model->setOrderId($order_id); $order_model->setPayin7OrderIdentifier($payin7_order_id); $order_model->setPayin7OrderAccepted(true); $order_model->setPayin7OrderSent(true); $order_model->savePayin7Data(); Db::getInstance()->execute('COMMIT'); } catch (Exception $e) { Db::getInstance()->execute('ROLLBACK'); throw $e; } $this->module->getLogger()->info(get_class($this) . ': new order created :: ' . $order_id); return $order_model; }