setShouldCloseParentTransaction(false); $isSameCurrency = $payment->isSameCurrency(); if (!$isSameCurrency || !$payment->isCaptureFinal($amount)) { $payment->setIsFraudDetected(true); } // update totals $amount = $payment->formatAmount($amount, true); $payment->setBaseAmountAuthorized($amount); // do authorization $order = $payment->getOrder(); if ($isOnline) { // invoke authorization on gateway $method = $payment->getMethodInstance(); $method->setStore($order->getStoreId()); $method->authorize($payment, $amount); } $message = $this->stateCommand->execute($payment, $amount, $order); // update transactions, order state and add comments $transaction = $payment->addTransaction(Transaction::TYPE_AUTH); $message = $payment->prependMessage($message); $payment->addTransactionCommentsToOrder($transaction, $message); return $payment; } }