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;
 }