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







