
Лучший Ответ 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), которое проверяет выбранный способ оплаты, действительно сервис или нет.
Таким образом, если в админке создать новый тип поля Спосособ оплаты, или можно где то указывать его имя, и для способов оплаты можно помечать он сервисный или нет, то этот код можно сделать универсальным, заменив прямые записи имен, на их запросы из конфига.
Перейти к сообщению
