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

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (16)

просмотр истории страницы
Использование кастомного модуля для личного кабинета, работающего в пространстве имен _carbon\modules_.
Таким образом можно изменять стандартные модули carbon или создавать собственные.
{toc}

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

Модуль необходимо разместить в рабочем каталоге:
{code}/app/asr_cabinet/usr/local/lib/cabinet_modules{code}
h3. Как работают модули в ЛК?

h4. Выпуск
Модули располагаются в рабочем каталоге:
{code}
/app/asr_cabinet/usr/local/lib/cabinet_modules/modules/
{code}
Так же есть каталог хранения:
{code}
/app/asr_cabinet/var/cabinet_modules/
{code}
При обновлении биллинга происходит копирование файлов из каталога хранения в рабочий каталог. Одноимённые файлы из каталога хранения затирают более старые в рабочем каталоге.
Например, более свежий файл Payment.php из каталога хранения перепишет более старый файл Payment.php из рабочего каталога.
{code:title=Будет скопирован в рабочий каталог}
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
{code}
{code:title=Будет переписан}
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
{code}

Когда модуль будет готов, его необходимо скопировать в каталог хранения:
{code}/app/asr_cabinet/var/cabinet_modules/{code}
h3. Как создать свой модуль?

Это сделано для того, чтобы он не исчезал после обновления биллинга.
# Разместите модуль в рабочем каталоге, при этом он сразу будет доступен в личном кабинете.
{code}
/app/asr_cabinet/usr/local/lib/cabinet_modules/modules/
{code}
# Когда модуль будет готов, скопируйте его в каталог хранения:
{code}
/app/asr_cabinet/var/cabinet_modules/
{code}
Так пользовательский модуль не исчезнет во время обновления, а также попадёт в резервную копию личного кабинета.

{color:#ff0000}{*}Внимание\!*{color} Файлы из каталога хранения затирают файлы более старые файлы в рабочем каталоге (для того, чтобы можно было заменять стандартные модули)
{note}
Если в модуле будет ошибка, то полностью перестанет работать личный кабинет. Вы можете установить [сервер Billing Slave|http://docs.carbonsoft.ru/x/NQYFAw] и проводить разработку модулей на нём, чтобы не мешать работе абонентов.
{note}

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

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

# Перейдём в контейнер личного кабинета
{code}
chroot /app/asr_cabinet/
{code}
# Cкопируем стандартный модуль, все изменения будут происходить в новом файле.
{code}
cp -p /usr/local/lib/cabinet_modules/modules/AutopayPayment.php /usr/local/lib/cabinet_modules/modules/AutopayPaymentPaymaster.php
{code}
# Найдём блок с нужным кодом и внесём необходимые изменения
{code}
# находим блок 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'
);
{code}
# Копируем новый модуль в каталог хранения
{code}
cp -p /usr/local/lib/cabinet_modules/modules/AutopayPaymentPaymaster.php /var/cabinet_modules/AutopayPaymentPaymaster.php
{code}
# В личном кабинете для вызова этого модуля будет использоваться следующий [шорткод|Wordpress. Список шорткодов ЛК.]
{code}
[cabinet_autopay_payment_paymaster operator="paymaster"]
{code}

h3. Отладка

Ошибки работы веб сервера личного кабинета пишутся в следующий файл. По ним можно быстро понять о причине проблемы.
{code}
/app/asr_cabinet/var/log/httpd/error_log
{code}
Отладку модуля можно провести по [статье|Отладка модулей кабинета].