Перейти к содержимому


Фотография
- - - - -

Модернизация корзины (скидка) Вопрос РАЗРАБОТЧИКАМ


Лучший Ответ SmetDenis , 27 November 2013 - 22:35

У вас код работает только если пришел POST

Следующая страница заказа - это GET (POST+редирект)

 

Вам нужно сохранить информацию о купоне как минимум в сессию и работать уже с данными сессии.

Возможно вам поможет в этом хелпер jbsession

 

Платежный робот тоже не отправит POST и в нем не будет данных сесиии.

Поэтому при создании заказа данные купона должны попасть в заказ.

И при валидации платежа - браться из этого поля.

 

Возможно поле купона проще сделать с помощью поля формы.

Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 2

#1 alexmixaylov

alexmixaylov

Отправлено 26 November 2013 - 21:59

Сделал возможность делать скидку для тех кто имеет промокод

можно посмотреть на mrpion.ru

 

сумма пересчитывается на странице корзины но при переходе на старничку оплаты

передает все равно начальную сумму

подредактировал  файл    jbbasketitems.php

    /**
     * Get total price
     */
    public function getTotalPrice($isFormated = false)
    {
        //return 5; // for interkassa debug

        $basketItems = $this->data();

        $i        = 0;
        $summa    = 0;
        $count    = 0;
        $currency = '';
        $rebate   = 1;
        if(isset($_POST['promo']) && $_POST['promo']) ###2w
        {
         if(1==$_POST['promo'][0]) $rebate = 0.95;
         if(2==$_POST['promo'][0]) $rebate = 0.90;
         if(3==$_POST['promo'][0]) $rebate = 0.85;
        }
        if (!empty($basketItems)) {

            $searchModel = JBModelFilter::model();
            $items       = $searchModel->getZooItemsByIds(array_keys($basketItems));

            foreach ($items as $item) {

                $basketInfo = $basketItems[$item->id];
                $count += $basketInfo['quantity'];

                $currency = $basketInfo['currency'];

                $subtotal = $basketInfo['quantity'] * $basketInfo['price'] * $rebate;
                $summa += $subtotal;
            }

            if ($isFormated) {
                return $this->app->jbmoney->toFormat($summa, $currency);
            }
			
            return $summa;
        }

        return null;
    }

в зависимости от того какая первая цифра кода выбирается размер скидки

$subtotal = $basketInfo['quantity'] * $basketInfo['price'] * $rebate;

 

но на следущую страницу изменения не передаются

не могли бы вы подсказать -----   КАК передать измененные данные в платежную ситсему ???

Спасибо!


Сообщение отредактировал alexmixaylov: 26 November 2013 - 22:00

  • 1

#2 alexmixaylov

alexmixaylov

Отправлено 27 November 2013 - 18:10

Денис!

Подскажите пожалуйста ответ на поставленный вопрос, очень нужно


  • 0

#3 SmetDenis

SmetDenis

Отправлено 27 November 2013 - 22:35   Лучший Ответ

У вас код работает только если пришел POST

Следующая страница заказа - это GET (POST+редирект)

 

Вам нужно сохранить информацию о купоне как минимум в сессию и работать уже с данными сессии.

Возможно вам поможет в этом хелпер jbsession

 

Платежный робот тоже не отправит POST и в нем не будет данных сесиии.

Поэтому при создании заказа данные купона должны попасть в заказ.

И при валидации платежа - браться из этого поля.

 

Возможно поле купона проще сделать с помощью поля формы.


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.





Click to return to top of page in style!