Beispiel #1
0
 /**
  * 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();
         }
     }
 }