Jump to content


Photo
- - - - -

Заказ от клиента, без оплаты на сайте.


Best Answer mrbrain , 12 March 2013 - 05:37

Еще сущесвует один способ, правда он является искусственным, но покрайней мере может натолкнуть разработчиков как прикрутить этот параметр в форму оформления заказа.
Попорядку.
1. В форме оформления заказа в списке "Способы оплаты" добавляем две опции Робокаса и Интеркаса, сохраняем и запоминаем, какие оно создало алиасы для этих опций (у меня это 'robokassa','interkassa')

2. На этой же странице с помощью fire bug смотрим какой уникальный номер (имя) поля "Спопособов оплаты", это необходимо знать что бы вырвать способ оплаты из POST массива по его имени, у меня это 2c200017-7279-46db-a2fe-2ef87b7ac23c

3. Открываем документ \media\zoo\applications\jbuniversal\framework\controllers\basket.php и находим строки

                if ((int)$appParams->get('global.jbzoo_cart_config.payment-enabled') && $orderDetails->getTotalPrice() > 0 ) {
                    $msg = JText::_('JBZOO_CART_SUCCESS_TO_PAYMENT_MESSAGE');
                    $this->setRedirect(JRoute::_($this->app->jbrouter->basketPayment($Itemid, $appId, $item->id), false));

                    return;

                } else {
                    $msg = JText::_('JBZOO_CART_SUCCESS_MESSAGE');
                    $this->setRedirect(JRoute::_($this->app->jbrouter->basketSuccess($Itemid, $appId), false), $msg);

                    return;
                }
примерно в 300 строке.
Добавляем перед этим кодом:
//Выбор страницы для способа оплаты
 $post_array    = $this->app->submission->filterData($post['elements']);
 $paement_value = $post_array['2c200017-7279-46db-a2fe-2ef87b7ac23c']['option'][0];
 $paement_servis= array('robokassa','interkassa');
//***
Где
$post_array  - данный которые ввел пользователь
$paement_value - способ оплаты выбранный пользователем (имя соответсвует имени поля Способ оплаты, которое смотрели с помощью fire bug)
$paement_servis - массив алиасов способы оплаты, которые будут осуществляться с помощью сервисов.
Затем после вставленного кода необходимо поправить условие if, заменив с:
if ((int)$appParams->get('global.jbzoo_cart_config.payment-enabled') && $orderDetails->getTotalPrice() > 0)
на
if ((int)$appParams->get('global.jbzoo_cart_config.payment-enabled') && $orderDetails->getTotalPrice() > 0 && in_array($paement_value,$paement_servis))
Добавляется дополнительное условие проверки in_array($paement_value,$paement_servis), которое проверяет выбранный способ оплаты, действительно сервис или нет.

Таким образом, если в админке создать новый тип поля Спосособ оплаты, или можно где то указывать его имя, и для способов оплаты можно помечать он сервисный или нет, то этот код можно сделать универсальным, заменив прямые записи имен, на их запросы из конфига.


Go to the full post


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

#11 excandr

excandr
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0
  • posts: 19
  • topics: 3

Posted 12 March 2013 - 16:16

Поскольку это хак, то нужно учитывать, что после обновления все пропадет это, а также я назвал севис Робокаса, но на шаблоне с оплатой выводится сразу два включенных сервиса (если два включили конечно), поэтому можно назвать например способ оплаты Электоронные деньги если нужны два сервиса оплаты или называйте Робокаса, как делал это я (мне нада был только один).

Сделал все по инструкции ... заменил все коды 
Но что то при выборе - Опалата курьеру, меня так же выкидывает на страницу оплаты Электронными деньгами.
Оформление заказа не заверщается и не выдает сообщение - Мы свяжемся позже.
  • 0

#12 mrbrain

mrbrain
  • JBZoo User (rus)
  • User rate: ~
  • posts: 8
  • topics: 1

Posted 13 March 2013 - 07:08

Проверьте следующее:
1. Включен способ приема оплаты с нулевой ценой?
2. В форму добавлено поле с ниспадающим списком со способами оплаты, его имя точно совпадает с тем что вы прописали в коде
3. Псевдоним опции оплаты через сервис совпадает с тем что вы указали в коде.


  • 0

#13 excandr

excandr
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0
  • posts: 19
  • topics: 3

Posted 13 March 2013 - 08:36

Проверьте следующее:
1. Включен способ приема оплаты с нулевой ценой?
2. В форму добавлено поле с ниспадающим списком со способами оплаты, его имя точно совпадает с тем что вы прописали в коде
3. Псевдоним опции оплаты через сервис совпадает с тем что вы указали в коде.

1) Включил, все равно таже беда
2) Да добавлено. Код проверил, все как у тебя сказано. Думаю проблема  в условие IF или ELSE. Что-то там не выполняется. Вот так он у меня выглядит
$post_array    = $this->app->submission->filterData($post['elements']);
$paement_value = $post_array['2c200017-7279-46db-a2fe-2ef87b7ac23c']['option'][0];
$paement_servis= array('oplata-cherez-sajt','oplata-kureru');
                if ((int)$appParams->get('global.jbzoo_cart_config.payment-enabled') && $orderDetails->getTotalPrice() > 0 && in_array($paement_value,$paement_servis)) {
                    $msg = JText::_('JBZOO_CART_SUCCESS_TO_PAYMENT_MESSAGE');
                    $this->setRedirect(JRoute::_($this->app->jbrouter->basketPayment($Itemid, $appId, $item->id), false));
                    return;
                } else {
                    $msg = JText::_('JBZOO_CART_SUCCESS_MESSAGE');
                    $this->setRedirect(JRoute::_($this->app->jbrouter->basketSuccess($Itemid, $appId), false), $msg);
                    return;

  • 0

#14 mrbrain

mrbrain
  • JBZoo User (rus)
  • User rate: ~
  • posts: 8
  • topics: 1

Posted 13 March 2013 - 08:40

Ну вот же и есть ошибка в этом:

$paement_servis= array('oplata-cherez-sajt','oplata-kureru');


Должно быть так

$paement_servis= array('oplata-cherez-sajt');


Т.е. перечисляются только те, которые будут иметь сервисы оплаты, а не все что создали, у меня же в примере Робокаса и Интеркаса там указаны, а кроме этого еще 4 есть, но я их здесь не перечисляю.
Получается что ты добавил все способы оплаты что есть в массив и они все попадают под условия электронного платежа.
  • 0

#15 excandr

excandr
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0
  • posts: 19
  • topics: 3

Posted 13 March 2013 - 09:02

Ну вот же и есть ошибка в этом:

Все понял теперь.
Работает красиво.
Спасибо за помощь. 
  • 0

#16 excandr

excandr
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0
  • posts: 19
  • topics: 3

Posted 13 March 2013 - 09:07

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

То есть, после обновления JBZoo, надо будет ТОЛЬКО опять подправить файл basket.php ??
  • 0

#17 mrbrain

mrbrain
  • JBZoo User (rus)
  • User rate: ~
  • posts: 8
  • topics: 1

Posted 13 March 2013 - 09:11

Цитата: mrbrainПоскольку это хак, то нужно учитывать, что после обновления все пропадетТо есть, после обновления JBZoo, надо будет ТОЛЬКО опять подправить файл basket.php ??

Да
  • 0




Click to return to top of page in style!