/** * Return from payment gateway * * @return void */ protected function doActionReturn() { $orderId = \XLite\Core\Request::getInstance()->order_id; $order = \XLite\Core\Database::getRepo('XLite\\Model\\Order')->find($orderId); if ($order) { // Set customer notes if (!empty(\XLite\Core\Request::getInstance()->notes)) { $order->setNotes(\XLite\Core\Request::getInstance()->notes); } // Mark card as allowed for further recharges if ('Y' == \XLite\Core\Request::getInstance()->save_card || 'Y' == \XLite\Core\Session::getInstance()->cardSavedAtCheckout) { $useForRecharges = 'Y'; \XLite\Core\Session::getInstance()->cardSavedAtCheckout = 'N'; } else { $useForRecharges = 'N'; } foreach ($order->getPaymentTransactions() as $transaction) { if ($transaction->getXpcData()) { $transaction->getXpcData()->setUseForRecharges($useForRecharges); } } \XLite\Core\Database::getEM()->flush(); if (\XLite\Core\Session::getInstance()->xpc_order_create_profile && !$order instanceof \XLite\Model\Cart) { // For successfully placed orders only if ($order->getProfile()) { \XLite\Core\Auth::getInstance()->loginProfile($order->getProfile()); } elseif ($order->getOrigProfile()) { \XLite\Core\Auth::getInstance()->loginProfile($order->getOrigProfile()); } } } parent::doActionReturn(); if ($order) { $transactions = $order->getPaymentTransactions(); $lastTransaction = $transactions->first(); if ($lastTransaction->isXpc()) { $order->setPaymentStatusByTransaction($lastTransaction); $lastTransaction->setDataCell('xpc_session_id', '', null, 'C'); \XLite\Core\Database::getEM()->flush(); } } }