Добрый день Долго искал платежный модуль Privat24 для Virtuemart2 (joomla 2.5) Решил найти любой отечественный и переделать под свои нужды. Был найден плагин платежной системы Intellectmoney. Он состоит из двух файлов, один собственно сам плагин, взаимодействующий с CMS, а второй это скрипт принимающий ответы со стороны банка и изменяющий статус заказа. Статус у меня изменять получилось в таблице __virtuemart_orders, но вот оповещать клиента отправкой письма и добавлением в историю заказов проблема. Я не силен в PHP и не знаю как правильно прицепить этот скрипт к joomle, что бы воспользоваться вот этим простым механизмом. Код (PHP): if (!class_exists('VirtueMartModelOrders')) require( JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php' ); $modelOrder = new VirtueMartModelOrders(); $order['order_status'] = 'C'; $order['virtuemart_order_id'] = $order_info; $order['customer_notified'] = 1; $modelOrder->updateStatusForOneOrder($order_info, $order, true); return TRUE; Привожу ниже весь код слушающего ответы скрипта. Код (PHP): <?php error_reporting(E_ALL); ini_set('display_errors', 'On'); header("HTTP/1.0 200 OK"); $my_path = dirname(__FILE__); if( file_exists($my_path."/../../../configuration.php")) { $absolute_path = dirname( $my_path."/../../../configuration.php" ); require_once($my_path."/../../../configuration.php"); } elseif( file_exists($my_path."/../../configuration.php")) { $absolute_path = dirname( $my_path."/../../configuration.php" ); require_once($my_path."/../../configuration.php"); } elseif( file_exists($my_path."/configuration.php")) { $absolute_path = dirname( $my_path."/configuration.php" ); require_once( $my_path."/configuration.php" ); } else { die( "Joomla Configuration File not found!" ); } $absolute_path = realpath( $absolute_path ); // Set up the appropriate CMS framework if(class_exists( 'jconfig' )) { define('_JEXEC', 1); define('JPATH_BASE', $absolute_path); define('DS', DIRECTORY_SEPARATOR); define('JPATH_VM_PLUGINS', $absolute_path. "/administrator/components/com_virtuemart/plugins"); define('JPATH_VM_ADMINISTRATOR', $absolute_path. "/administrator/components/com_virtuemart"); define('JPATH_VM_LIBRARIES', $absolute_path. "/libraries"); // Load the framework require_once( JPATH_BASE . DS . 'includes' . DS . 'defines.php' ); require_once( JPATH_BASE . DS . 'includes' . DS . 'framework.php' ); // create the mainframe object $mainframe = & JFactory::getApplication( 'site' ); // Initialize the framework $mainframe->initialise(); } else { define('_VALID_MOS', '1'); require_once($mosConfig_absolute_path. '/includes/joomla.php'); require_once($mosConfig_absolute_path. '/includes/database.php'); $database = new database( $mosConfig_host, $mosConfig_user, $mosConfig_password, $mosConfig_db, $mosConfig_dbprefix ); $mainframe = new mosMainFrame($database, 'com_virtuemart', $mosConfig_absolute_path ); } $db =& JFactory::getDBO(); /// подключаемся к MySQL $query = "SELECT * FROM #__virtuemart_paymentmethods WHERE payment_element LIKE 'Intellectmoney';"; $db->setQuery($query); $row = $db->loadAssocList('payment_element'); $payment = $row['Intellectmoney']['payment_params']; preg_match('#eshop_id="(.*)"#Uis',$payment,$shop); preg_match('#debug="(.*)"#Uis',$payment,$debug_Stats); preg_match('#secret_key="(.*)"#Uis',$payment,$skey); preg_match('#status_pending="(.*)"#Uis',$payment,$pending); preg_match('#status_success="(.*)"#Uis',$payment,$success); preg_match('#status_canceled="(.*)"#Uis',$payment,$canceled); $eshop_Id = $shop[1]; if ($debug_Stats[1]==0) { $debug_State = 'ok'; } else { $debug_State = 'test'; } $pass = $skey[1]; //Получаем secret_key $statuspending= $pending[1]; //Статус заказа для отложенных платежей $statussuccess= $success[1]; //Статус заказа для успешной операции $statuscanceled= $canceled[1]; //Статус заказа для неудавшихся сделок $payment_p = $_POST['payment']; $signature_p = $_POST['signature']; $signature = sha1(md5(htmlspecialchars_decode($payment_p, ENT_QUOTES) . $pass)); $info = explode('&', htmlspecialchars_decode($payment_p, ENT_QUOTES)); foreach ($info as $value) { $z = explode('=', $value); $data[$z[0]] = $z[1]; } if($signature == $signature_p AND $debug_State == $data["state"]) { $order_info = $data['order']; if ( !$order_info) { return 0; } if( $order_info == $data['order']) { $db->setQuery("UPDATE #__virtuemart_orders SET `order_status`='". $statussuccess. "' WHERE order_number LIKE '". $order_info. "'"); $db->Query(); if (!class_exists('VirtueMartModelOrders')) require( JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php' ); $modelOrder = new VirtueMartModelOrders(); $order['order_status'] = 'C'; $order['virtuemart_order_id'] = $order_info; $order['customer_notified'] = 1; $modelOrder->updateStatusForOneOrder($order_info, $order, true); return TRUE; } } else { echo 'ERROR: не совпадает crc!'; return 0; } ?> Пожалуйста, помогите разобраться.