Добрый день. Не работает модуль оплаты RBK money c их официального сайта для Joomla + Virtuemart3. В чем конкретно проблема: В одном предложении - в заказе во фронте не остается записи о выбранном способе оплаты РБК Money. Подробнее: Внимательно оценил сруктуру заказов в зависимости от выбранного плагина оплаты и содержание базы данных после заказа. Что увидел. Если я выбираю способ оплаты отличный от плагина RBK, то заполняется поле «дата выписывания счета» в базе данных и создается запись о том, что для выбранного способа оплаты созда заказ. Скрин: заполненные поля дата счета. Видно, что если paymentmethod = 4 или 3 (это не РБК), то delivery_date заполнено. Если paymentmethod = 6 - это РБК. То не заполнено также в базе данных видно, что на все заведенные варианты оплаты создаются таблицы с заказами. Скрин: структура базы данных. Видно что есть таблицы …_payment_plg_вид оплаты При этом, если открыть любой вид оплаты отличный от РБК, мы видим список заказов, которые были созданы с выбором данного вида оплаты Если открыть такую же таблицу для РБК, то мы видим что она пустая, хотя заказы есть (согласно статитсике в личном кабинете РБК) При этом в админке соотвественно заказ с оплатой standart выглядит вот так (т.е. способ оплаты заполнен, так как есть запись в подчиненой таблице): А заказ с выранным способом оплаты РБК выглядит вот так: все пусто на 3 скрине Получается что плагин изначально при оформлении заказа работает неверно и недозаполняет базу данных. Соответсвенно не обновляется статус скриптом notify.php, так как нечего обновлять - Заказа с таким типом оплаты в таблице нет. При этом сказать, что что-то неработает у меня в ядре тоже нельзя, так как другие виды оплаты, в частности standart и яндекс работают без проблем. Опять же то, что плагин установлен и активен - говорит то, что оплаты проходят - это видно в личном кабинете. В чем может быть проблема. Помогите плиз
Не понял как вставить скрины в текст. Но вроде во вложении идут по порядку) --- добавлено: 27.03.2017 --- Что еще накопал сам: В плагине стандарт, равно как и в яндексе есть кусок программы в процедуре plgVmConfirmedOrder немного отличаются но смысл один и тот же: Код (PHP): $this->getPaymentCurrency($method, $order['details']['BT']->payment_currency_id); $currency_code_3 = shopFunctions::getCurrencyByID($method->payment_currency, 'currency_code_3'); $email_currency = $this->getEmailCurrency($method); $totalInPaymentCurrency = vmPSPlugin::getAmountInCurrency($order['details']['BT']->order_total,$method->payment_currency); $dbValues['payment_name'] = $this->renderPluginName ($method) . '<br />' . $method->payment_info; $dbValues['order_number'] = $order['details']['BT']->order_number; $dbValues['virtuemart_paymentmethod_id'] = $order['details']['BT']->virtuemart_paymentmethod_id; $dbValues['cost_per_transaction'] = $method->cost_per_transaction; $dbValues['cost_min_transaction'] = $method->cost_min_transaction; $dbValues['cost_percent_total'] = $method->cost_percent_total; $dbValues['payment_currency'] = $currency_code_3; $dbValues['email_currency'] = $email_currency; $dbValues['payment_order_total'] = $totalInPaymentCurrency['value']; $dbValues['tax_id'] = $method->tax_id; $this->storePSPluginInternalData ($dbValues); $payment_info=''; if (!empty($method->payment_info)) { $lang = JFactory::getLanguage (); if ($lang->hasKey ($method->payment_info)) { $payment_info = vmText::_ ($method->payment_info); } else { $payment_info = $method->payment_info; } } if (!class_exists ('VirtueMartModelCurrency')) { require(VMPATH_ADMIN . DS . 'models' . DS . 'currency.php'); } $currency = CurrencyDisplay::getInstance ('', $order['details']['BT']->virtuemart_vendor_id); $html = $this->renderByLayout('post_payment', array( 'order_number' =>$order['details']['BT']->order_number, 'order_pass' =>$order['details']['BT']->order_pass, 'payment_name' => $dbValues['payment_name'], 'displayTotalInPaymentCurrency' => $totalInPaymentCurrency['display'] )); $modelOrder = VmModel::getModel ('orders'); $order['order_status'] = $this->getNewStatus ($method); $order['customer_notified'] = 1; $order['comments'] = ''; $modelOrder->updateStatusForOneOrder ($order['details']['BT']->virtuemart_order_id, $order, TRUE); Ключевое здесь: вызов storePSPluginInternalData и updateStatusForOneOrder В плагине РБК такого в принципе нет. Но я вот не пойму, почему перерыл интернет, обращался в тех поддержку РБК и нет инфы. Как будто никто с этим не сталкивался. А как такое может быть, если в плагине в принципе нет куска работы с заказом Shurikkan: Родион, у нас на форуме все PHP/JS/HTML/CSS и т.п. оборачиваются соответствующими bb-кодами. Читай правила.
А плагины и не обрабатывают заказ,а служат для определения показа варианта оплаты, определенном в конфиге варианта оплаты. Это для Вирта с 2.0
Не понятно. А что тогда создает запись в таблице _virtuemart_payment_plg_rbkmoney. Для РБК она остается пустой, а для яндекса например заполняется. После этого заказ во фронте для яндекса выглядит вот так (оплата заполнена): А заказ во фронте с выбранным РБК оплаты не содержит, при этом с точки зрения платежа функционирует полностью
Наконец-то я решил свой вопрос. Теперь у меня на сайте все настроено и работает благодаря платному плагину https://shop.vampirus.ru/shop/virtuemart2/rbk-money-payment-pligun-virtuemart-2-detail.html Рекомендую именно этот плагин вместо родного. Потому как: 1) Он работает! Выбранный способ оплаты появляется в заказе и после оплаты меняется его статус 2) Имеется грамотная и быстрая тех поддержка от разработчика. Реальная помощь в настройке 3) Плагин имеет расширенную настройку, например можно задать логотип в типе оплаты