Автор Тема: Модуль робокасса  (Прочитано 284 раз)

05 Октября 2015, 14:51:28
  • Пользователь
  • **
  • Сообщений: 87
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Ошибок: 2
robokassa (разбор ошибки в /modules/robokassa/robokassa.php),
robokassa (класс отсутствует в /modules/robokassa/robokassa.php)

Модуль как скачал так и поставил, все работает, покупка и т.д. все в порядке, но ошибка в админке очень настараживает, кажется что в один момент cломается, каждый день захожу и смотрю на код в поисках проблемы, помогите пожалуйста, я конечно не программист, но чуть чуть php знаю, все классы на месте что не так?

<?php

class robokassa extends PaymentModule
{
    private 
$_html '';
    private 
$_postErrors = array();

    public function 
__construct()
    {
        
$this->name 'robokassa';        
        
$this->tab 'Payment';
        
$this->version 1.4;
        
        
$this->currencies true;
        
$this->currencies_mode 'radio';
        
        
$config Configuration::getMultiple(array('RB_MERCHANT_LOGIN''RB_PASSWORD1''RB_PASSWORD2'));    
        if (isset(
$config['RB_MERCHANT_LOGIN']))
            
$this->rb_merchant_login $config['RB_MERCHANT_LOGIN'];
if (isset($config['RB_PASSWORD1']))
            
$this->rb_password1 $config['RB_PASSWORD1'];
if (isset($config['RB_PASSWORD2']))
            
$this->rb_password2 $config['RB_PASSWORD2'];
            
        
parent::__construct();
        
        
/* The parent construct is required for translations */
        
$this->page basename(__FILE__'.php');
        
$this->displayName 'RoboKassa';
        
$this->description $this->l('Accept payments with RoboKassa');
        
$this->confirmUninstall $this->l('Are you sure you want to delete your details ?');
        
        if (!isset(
$this->rb_merchant_login))
            
$this->warning $this->l('Your RoboKassa account must be set correctly (set merchant login)');
    }        

    function 
install()
    {        
        if (!
parent::install() OR !$this->registerHook('payment') OR !$this->registerHook('paymentReturn'))
            return 
false;
        return 
true;
    }
    
    function 
uninstall()
    {
        if (!
Configuration::deleteByName('RB_MERCHANT_LOGIN') OR !parent::uninstall())
            return 
false;
        return 
true;
    }
    
    private function 
_postValidation()
    {
        if (isset(
$_POST['btnSubmit']))
        {
            if (empty(
$_POST['rb_merchant_login']))
                
$this->_postErrors[] = $this->l('Merchant Login is required');
            elseif (empty(
$_POST['rb_password1']))
                
$this->_postErrors[] = $this->l('Robokassa password1 is required');
            elseif (empty(
$_POST['rb_password2']))
                
$this->_postErrors[] = $this->l('Robokassa password2 is required');
        }
    }

    private function 
_postProcess()
    {
        if (isset(
$_POST['btnSubmit']))
        {
            
Configuration::updateValue('RB_MERCHANT_LOGIN'$_POST['rb_merchant_login']);
            
Configuration::updateValue('RB_PASSWORD1'$_POST['rb_password1']);
            
Configuration::updateValue('RB_PASSWORD2'$_POST['rb_password2']);
        }
        
$this->_html .= '<div class="conf confirm"><img src="../img/admin/ok.gif" alt="'.$this->l('OK').'" /> '.$this->l('Settings updated').'</div>';
    }
    
    private function 
_displayRb()
    {
        
$this->_html .= '<img src="../modules/robokassa/robokassa.png" style="float:left; margin-right:15px;"><b>'.$this->l('This module allows you to accept payments by RoboKassa.').'</b><br /><br />
        '
.$this->l('You need to register on the site').' <a href="https://robokassa.ru" target="blank">robokassa.ru</a> <br /><br /><br />';
    }
    
    private function 
_displayForm()
    {
        
$this->_html .=
        
'<form action="'.$_SERVER['REQUEST_URI'].'" method="post">
            <fieldset>
            <legend><img src="../img/admin/contact.gif" />'
.$this->l('Contact details').'</legend>
                <table border="0" width="500" cellpadding="0" cellspacing="0" id="form">
                    <tr><td colspan="2">'
.$this->l('Please specify required data').'.<br /><br /></td></tr>
                    <tr><td width="140" style="height: 35px;">'
.$this->l('RoboKassa Merchant Login').'</td><td><input type="text" name="rb_merchant_login" value="'.htmlentities(Tools::getValue('rb_merchant_login'$this->rb_merchant_login), ENT_COMPAT'UTF-8').'" style="width: 300px;" /></td></tr>
                    <tr><td width="140" style="height: 35px;">'
.$this->l('RoboKassa Password1').'</td><td><input type="text" name="rb_password1" value="'.htmlentities(Tools::getValue('rb_password1'$this->rb_password1), ENT_COMPAT'UTF-8').'" style="width: 300px;" /></td></tr>
                    <tr><td width="140" style="height: 35px;">'
.$this->l('RoboKassa Password2').'</td><td><input type="text" name="rb_password2" value="'.htmlentities(Tools::getValue('rb_password2'$this->rb_password2), ENT_COMPAT'UTF-8').'" style="width: 300px;" /></td></tr>
                    <tr><td colspan="2" align="center"><br /><input class="button" name="btnSubmit" value="'
.$this->l('Update settings').'" type="submit" /></td></tr>
                </table>
            </fieldset>
        </form>'
;
    }

    function 
getContent()
    {
        
$this->_html '<h2>'.$this->displayName.'</h2>';

        if (!empty(
$_POST))
        {
            
$this->_postValidation();
            if (!
sizeof($this->_postErrors))
                
$this->_postProcess();
            else
                foreach (
$this->_postErrors AS $err)
                    
$this->_html .= '<div class="alert error">'$err .'</div>';
        }
        else
            
$this->_html .= '<br />';

        
$this->_displayRb();
        
$this->_displayForm();

        return 
$this->_html;
    }

    function 
hookPayment($params)
    {
        global 
$smarty;
        
        
$delivery = new Address(intval($params['cart']->id_address_delivery));
        
$invoice = new Address(intval($params['cart']->id_address_invoice));
        
$customer = new Customer(intval($params['cart']->id_customer));                
                
        
$currency      $this->getCurrency();
        
$amount        number_format(Tools::convertPrice($params['cart']->getOrderTotal(true3), $currency), 2'.''');
        
$order_id      $params['cart']->id;
        
$description   'Оплата товаров на сайте '.$_SERVER['SERVER_NAME'];               
        
$rb_password1    Configuration::get('RB_PASSWORD1');
        
$rb_mrh_login  Configuration::get('RB_MERCHANT_LOGIN');
        
$rb_sign       md5("$rb_mrh_login:$amount:$order_id:$rb_password1");

                
        
$smarty->assign(array( 
            
'robokassaUrl'          => 'https://merchant.roboxchange.com/Index.aspx',
            
//'robokassaUrl'          => 'http://test.robokassa.ru/Index.aspx',
            
'rb_payment_amount'     => $amount,
            
'rb_payment_id'         => $order_id,
            
'rb_payment_desc'       => $description,
            
'rb_mrh_login'          => $rb_mrh_login,
            
'rb_sign'               => $rb_sign,
            
'this_path'             => $this->_path,
            
'this_path_ssl'         => Configuration::get('PS_FO_PROTOCOL').$_SERVER['HTTP_HOST'].__PS_BASE_URI__."modules/{$this->name}/"));

        return 
$this->display(__FILE__'robokassa.tpl');
    }
    
    public function 
getL($key)
    {
        
$translations = array(
            
'success'=> 'Robokassa transaction is carried out successfully.',
            
'fail'=> 'Robokassa transaction is refused.'
        
);
        return 
$translations[$key];
    }

    public function 
hookPaymentReturn($params)
    {
        if (!
$this->active)
            return ;

        return 
$this->display(__FILE__'confirmation.tpl');
    }
    
}

?>

05 Октября 2015, 15:15:24
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 786
  • Репутация: +7/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Показ ошибок включите, чтобы строку знать в которой ошибка.
05 Октября 2015, 16:14:06
Ответ #2
  • Пользователь
  • **
  • Сообщений: 87
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
После изменения AdminProductsController, сайт поменялся стал 1.6.1.1 хотя я его обновлял до этой версии неделю назад ничего не менялось, пропал вообще модуль робокассы хотя в модулях есть, сейчас переставил модуль, но не видит перевозчиков, они есть но пишет в данном регионе не обслуживает ни 1 перевозчик, разбираюсь теперь с новыми проблемам... 

Все решилось снял галку "Я хочу использовать расширенную систему управления запасами для этого товара" видимо он после обновы по дефолту настройки сделал частично, странно, но теперь нет ошибки робокассы и т.д. Он как-будто в старой версии был даже обнову игнорил, а как я всковырнул тот файлик в контроллере он очнулся.