Пользовательские модули в cabinet_modules

Skip to end of metadata
Go to start of metadata

В личном кабинете есть возможность изменять стандартные модули, а также создавать свои. Модули работают в пространстве имён carbon\modules.

Как работают модули в ЛК?

Модули располагаются в рабочем каталоге:

/app/asr_cabinet/usr/local/lib/cabinet_modules/modules/

Так же есть каталог хранения:

/app/asr_cabinet/var/cabinet_modules/

При обновлении биллинга происходит копирование файлов из каталога хранения в рабочий каталог. Одноимённые файлы из каталога хранения затирают более старые в рабочем каталоге.
Например, более свежий файл Payment.php из каталога хранения перепишет более старый файл Payment.php из рабочего каталога.

Будет скопирован в рабочий каталог
ls -l /app/asr_cabinet/var/cabinet_modules/Payment.php 
-rw-r--r-- 1 root root 126174 Июл 18 09:56 /app/asr_cabinet/var/cabinet_modules/Payment.php
Будет переписан
ls -l /app/asr_cabinet/usr/local/lib/cabinet_modules/modules/Payment.php 
-rw-r--r-- 1 root root 126016 Фев  6 08:33 /app/asr_cabinet/usr/local/lib/cabinet_modules/modules/Payment.php

Как создать свой модуль?

  1. Разместите модуль в рабочем каталоге, при этом он сразу будет доступен в личном кабинете.
    /app/asr_cabinet/usr/local/lib/cabinet_modules/modules/
    
  2. Когда модуль будет готов, скопируйте его в каталог хранения:
    /app/asr_cabinet/var/cabinet_modules/
    

    Так пользовательский модуль не исчезнет во время обновления, а также попадёт в резервную копию личного кабинета.

Если в модуле будет ошибка, то полностью перестанет работать личный кабинет. Вы можете установить сервер Billing Slave и проводить разработку модулей на нём, чтобы не мешать работе абонентов.

Примеры

Необходимо заменить описание для автоплатежей Paymaster.

  1. Перейдём в контейнер личного кабинета
    chroot /app/asr_cabinet/
    
  2. Cкопируем стандартный модуль, все изменения будут происходить в новом файле.
    cp -p /usr/local/lib/cabinet_modules/modules/AutopayPayment.php /usr/local/lib/cabinet_modules/modules/AutopayPaymentPaymaster.php
    
  3. Найдём блок с нужным кодом и внесём необходимые изменения
    # находим блок public function processPOST_paymaster($POST)
    
            $params = Array(
                    'LMI_MERCHANT_ID' => $login,
                    'LMI_PAYMENT_AMOUNT' => $sum,
                    'LMI_CURRENCY' => "RUB",
                    'LMI_PAYMENT_DESC_BASE64' => base64_encode('Подключение автоплатежей'),
                    'LMI_PAYMENT_NO' => $order_id,
                    'LMI_CREATE_TOKEN' => 'True',
                    'LMI_PAYMENT_METHOD' => 'BankCard'
            );
    
    # нас интересует параметр 'LMI_PAYMENT_DESC_BASE64' => base64_encode('Подключение автоплатежей'),
    # Мы хотим передавать в этом параметре номер договора
    # $contract_number = $this->user_info()->contract_number;
    # получаем номер договора перед $params
    # заменяем на 'LMI_PAYMENT_DESC_BASE64' => base64_encode("МОЙ ТЕКСТ " . $contract_number),
    
    
            $login = $this->fiscal_config->paymaster["login"][0];
            $sum = $payResult->summa_in;
            $order_id = $payResult->operation_id_out;
            $contract_number = $this->user_info()->contract_number;
    
            $params = Array(
                    'LMI_MERCHANT_ID' => $login,
                    'LMI_PAYMENT_AMOUNT' => $sum,
                    'LMI_CURRENCY' => "RUB",
                    'LMI_PAYMENT_DESC_BASE64' => base64_encode("МОЙ ТЕКСТ " . $contract_number),
                    'LMI_PAYMENT_NO' => $order_id,
                    'LMI_CREATE_TOKEN' => 'True',
                    'LMI_PAYMENT_METHOD' => 'BankCard'
            );
    
  4. Копируем новый модуль в каталог хранения
    cp -p /usr/local/lib/cabinet_modules/modules/AutopayPaymentPaymaster.php /var/cabinet_modules/AutopayPaymentPaymaster.php
    
  5. В личном кабинете для вызова этого модуля будет использоваться следующий шорткод
    [cabinet_autopay_payment_paymaster operator="paymaster"]
    

Отладка

Ошибки работы веб сервера личного кабинета пишутся в следующий файл. По ним можно быстро понять о причине проблемы.

/app/asr_cabinet/var/log/httpd/error_log

Отладку модуля можно провести по статье.

Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.