0 Пользователей и 1 Гость просматривают эту тему.
  • 1 Ответов
  • 2118 Просмотров
*

heller_andrei

  • Новичок
  • 1
  • 0 / 0
Добрый день

Долго искал платежный модуль Privat24 для Virtuemart2

Решил найти любой отечественный и переделать под свои нужды. Был найден плагин платежной системы Intellectmoney.
Он состоит из двух файлов, один собственно сам плагин, взаимодействующий с CMS, а второй это скрипт принимающий ответы со стороны банка и изменяющий статус заказа.
Статус у меня изменять получилось в таблице __virtuemart_orders, но вот оповещать клиента отправкой письма и добавлением в историю заказов проблема.
Я не силен в PHP и не знаю как правильно прицепить этот скрипт к joomle, что бы воспользоваться вот этим простым механизмом.
Код
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 

 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;
  }    
?>

Пожалуйста, помогите разобраться.
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Re: Платежный плагин для Virtuemart2
« Ответ #1 : 24.01.2014, 12:54:43 »
Ну зачем такие трудности!!
Купить не проще?
За ценой пиши договоримся

Цитировать
Я не силен в PHP

Ну и зачем тогда голову морочить себе??

В Joomla есть класс для работы с письмами.
 JFactory::getMailer()
Описание класса JFactory

С историей заказа тоже самое только класс уже в VM2 как звать не помню по моему orders или как то так.
и вот эта строчка
Цитировать
require( JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php' );

по моему больше отношение к шаблонам имеет нежели к отправки писем или смене статуса.
В общем хочешь плагин оплаты приват24 пиши!
Успехов!!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Плагин оплаты по QR коду

Автор denism300

Ответов: 1
Просмотров: 1024
Последний ответ 17.02.2023, 19:50:16
от sivers
Добавить выбор города в плагин доставки?

Автор warlocksp

Ответов: 3
Просмотров: 1923
Последний ответ 13.02.2022, 15:48:14
от Evgen Kulibin
Плагин Onpay для VirtueMart!

Автор OnpayGuy

Ответов: 85
Просмотров: 11218
Последний ответ 06.07.2021, 10:47:59
от vmven
Vituemart платёжный модуль tinkoff

Автор PavelK

Ответов: 2
Просмотров: 1703
Последний ответ 24.10.2020, 12:02:32
от draff
Плагин для Robokassa не перенаправляет покупателя туда

Автор ЛюдмилаМир

Ответов: 1
Просмотров: 1499
Последний ответ 24.09.2019, 13:58:40
от draff