... {toc} В личном кабинете есть возможность изменять стандартные модули, а также создавать свои. Модули работают в пространстве имён _carbon\modules_. h3. Как работают модули в ЛК? Модули располагаются в рабочем каталоге: {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} h3. Как создать свой модуль? # Разместите модуль в рабочем каталоге, при этом он сразу будет доступен в личном кабинете. {code} /app/asr_cabinet/usr/local/lib/cabinet_modules/modules/ {code} # Когда модуль будет готов, скопируйте его в каталог хранения: {code} /app/asr_cabinet/var/cabinet_modules/ {code} Так пользовательский модуль не исчезнет во время обновления, а также попадёт в резервную копию личного кабинета. {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}
|
# Cкопируем Копируем новый модуль в каталог хранения
|
{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} Отладку модуля можно провести по [статье|Отладка модулей кабинета].
|