Не зарегистрирован
Вход
Забыли пароль?
Регистрация
Подписаться
Сэкономьте время — перед вопросом на форуме узнайте, как найти ответ быстрее
По техническим проблемам необходимо обращаться в Консультационный центр

Поиск по форуму: 

Приглашаем в блог Amiro.CMS. Регулярные обзоры, опыт, решения, практикумы.
Форум  ->   Разработка плагинов, вопросы по API  ->  Платежный драйвер банковской картой- страница с сообщением об успешном заказе


Показать все сообщения в этой ветке


Добавлено: 19.04.17 19:21:00  



Регистрация: 26.05.08
Сообщений: 984


Обратиться по имени

В драйвере яндекс.кассы я увидел вот такой код:

protected function cleanupCart($orderId){
        // Clean up user cart
        global $cms, $oSession;

        $sessionCookieName = $oSession->CookieName;
        $oOrder =
            AMI::getResourceModel('eshop_order/table')
            ->find($orderId, array('id', 'id_user'));
        if($oOrder->id_user){
            $oSessions =
                AMI::getResourceModel('env/session/table')
                ->getList()
                ->addColumns(array('id', 'ip', 'data'))
                ->addWhereDef("AND `id_member` = " . $oOrder->id_user)
                ->load();
            foreach($oSessions as $oItem){
                $this->log($oItem->id . ' session found');
                $aData = unserialize($oItem->data);
                $noMarker = TRUE;
                foreach(array_keys($aData) as $key){
                    if(0 === mb_strpos($key, 'yandex_ups')){
                        if($orderId != unserialize($aData[$key])){
                            $this->log('Invalid order id (' . unserialize($aData[$key]) . ' instead of ' . $orderId . ')');
                            continue 2;
                        }
                        $noMarker = FALSE;
                        AMI::setOption('eshop_cart', 'store_cart_after_logout', '');
                        // AMI::setOption('session', 'force_store', TRUE);
                        $cms->VarsCookie[$sessionCookieName] = $oItem->id;
                        $ip = $_SERVER['REMOTE_ADDR'];
                        $_SERVER['REMOTE_ADDR'] = $oItem->ip;
                        $oSession = new CMS_Session(
                            $cms,
                            AMI::getOption('core', 'allow_multi_lang')
                                ? AMI_Registry::get('lang_data')
                                : ''
                        );
                        $oSession->Start();
                        AMI::getSingleton('eshop/cart')->clear();
                        $oSession->UnsetVar('yandex_ups');
                        $oSession->Store();
                        $_SERVER['REMOTE_ADDR'] = $ip;
                        $this->log('Cart cleaned up');
                        break;
                    }
                }
                if($noMarker){
                    $this->log('Missing marker, skipped');
                }
            }
        }
    }


Видимо стоит дополнить метод payProcess драйвера, добавив туда код очистки корзины.



0


Создать новую тему Ответить