Jump to content


Photo
- - - - -

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


Best Answer SmetDenis , 27 November 2013 - 22:35

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

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

 

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

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

 

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

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

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

 

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

Go to the full post


  • This topic is locked This topic is locked
2 replies to this topic

#1 alexmixaylov

alexmixaylov
  • JBZoo User (rus)
  • User rate: 7.7
  • posts: 679
  • topics: 142

Posted 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;

 

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

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

Спасибо!


Edited by alexmixaylov, 26 November 2013 - 22:00.

  • 1

#2 alexmixaylov

alexmixaylov
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 7.7
  • posts: 679
  • topics: 142

Posted 27 November 2013 - 18:10

Денис!

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


  • 0

#3 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 27 November 2013 - 22:35   Best Answer

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

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

 

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

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

 

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

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

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

 

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


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



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





Click to return to top of page in style!