База знаний BILLmanager

Как отключить отображение и использование баланса

Задача

Нужно отключить для клиентов провайдера отображение и использование баланса лицевого счёта в BILLmanager. Например, чтобы клиенты провайдера могли оплачивать услуги только с помощью доступных методов оплаты.

В статье рассмотрено два пользовательских сценария:

  • отключение отображения баланса. В этом случае клиент провайдера сохраняет возможность пополнять баланс в разделе Финансы → Платежи, но информация о балансе скрывается:
    • на главной странице;
    • в верхнем меню.
  • отключение отображения и пополнения баланса. В этом случае клиенту провайдера недоступна возможность просмотра и пополнения баланса:
    • скрывается информация о балансе скрывается на главной странице и в верхнем меню;
    • отключается возможность пополнения баланса в разделе Финансы → Платежи.
Внимание!
В обоих случаях сохранится возможность пополнить баланс через API.

Решение

Отключение отображения баланса

Чтобы отключить отображение баланса, но сохранить возможность пополнить баланс в разделе Финансы → Платежи:

  1. Подключитесь к серверу с платформой по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
  2. Создайте файл /usr/local/mgr5/etc/xml/billmgr_mod_disablefunds.xml со следующим содержимым:
    <?xml version="1.0" encoding="UTF-8"?>
    <mgrdata>
    <handler name="remove_funds.sh" type="xml">
    <event name="desktop" after="yes" proirity="after" base="project"/>
    </handler>
    <handler name="remove_funds.sh" type="xml">
    <event name="dashboard" after="yes"/>
    </handler>
    <handler name="remove_funds.sh" type="xml">
    <event name="dashboard.info" after="yes"/>
    </handler>
    </mgrdata>
  3. Создайте файл скрипта в каталоге /usr/local/mgr5/addon с именем remove_funds.sh:
    #!/bin/bash
    
    #Чтение XML-данных из стандартного ввода
    xml=$(cat)
    #Проверка прав пользователя: если пользователь не администратор, XML возвращается без изменений
    if [[ "${AUTH_LEVEL}" != "16" ]]; then
    echo "$xml"
    exit 0
    fi
    #функция
    if [[ "${PARAM_func}" == "dashboard" ]] ; then
    #Удаление кнопки Пополнить и отображения баланса с главной страницы
    echo "$xml"| sed 's|<toolbtn form="payment.add" name="balance_info"><button name="btn_topup" icon="mb-finance" size="small" theme="primary"/></toolbtn>||'
    elif [[ "${PARAM_func}" == "dashboard.info" ]]; then
    #Удаление информации о балансе из раздела информации об аккаунте
    echo $xml| sed 's|<balance func="payment.add">.*</balance>||'| sed 's|<msg name="balance">.*</msg>||'
    elif [[ "${PARAM_func}" == "desktop" ]]; then
    #Удаление отображения баланса из верхней части интерфейса
    echo $xml| sed 's|<balance func="payment.add">.*</balance>||'
    else
    #Для всех остальных случаев - возврат исходного XML без изменений
    echo "$xml"
    fi
  4. Сделайте файл исполняемым:
    sudo chmod a+x /usr/local/mgr5/addon/remove_funds.sh
  5. Перезапустите платформу и очистите XML-кеш:
    sudo rm /usr/local/mgr5/var/.db.cache* -rf && rm /usr/local/mgr5/var/.xmlcache/* -rf && /usr/local/mgr5/sbin/mgrctl -m billmgr -R
  6. Проверьте работу модуля под учётной записью клиента. Если на главной странице возникает ошибка, удалите созданные файлы и перезапустите платформу.

Отключение отображения и пополнения баланса

 Чтобы скрыть баланс на главной странице и отключить его пополнение в разделе Финансы → Платежи:

  1. Подключитесь к серверу с платформой по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
  2. Создайте файл /usr/local/mgr5/etc/xml/billmgr_mod_disablefunds.xml со следующим содержимым:
    <?xml version="1.0" encoding="UTF-8"?>
    <mgrdata>
    <handler name="remove_funds.sh" type="xml">
    <event name="desktop" after="yes" proirity="after" base="project"/>
    </handler>
    <handler name="remove_funds.sh" type="xml">
    <event name="dashboard" after="yes"/>
    </handler>
    <handler name="remove_funds.sh" type="xml">
    <event name="dashboard.info" after="yes"/>
    </handler>
    <handler name="remove_funds.sh" type="xml">
    <event name="payment" after="yes"/>
    </handler>
    </mgrdata>
  3. Создайте файл скрипта в каталоге /usr/local/mgr5/addon с именем remove_funds.sh:
    #!/bin/bash
    
    #Чтение XML-данных из стандартного ввода
    xml=$(cat)
    #Проверка прав пользователя: если пользователь не администратор, XML возвращается без изменений
    if [[ "${AUTH_LEVEL}" != "16" ]]; then
    echo "$xml"
    exit 0
    fi
    #функция
    if [[ "${PARAM_func}" == "dashboard" ]] ; then
    #Удаление кнопки Пополнить и отображения баланса с главной страницы
    echo "$xml"| sed 's|<toolbtn form="payment.add" name="balance_info"><button name="btn_topup" icon="mb-finance" size="small" theme="primary"/></toolbtn>||'
    elif [[ "${PARAM_func}" == "dashboard.info" ]]; then
    #Удаление информации о балансе из раздела информации об аккаунте
    echo $xml| sed 's|<balance func="payment.add">.*</balance>||'| sed 's|<msg name="balance">.*</msg>||'
    elif [[ "${PARAM_func}" == "desktop" ]]; then
    # Удаление отображения баланса из верхней части интерфейса
    echo $xml| sed 's|<balance func="payment.add">.*</balance>||'
    elif [[ "${PARAM_func}" == 'payment' ]]; then
    #Удаление кнопки Создать в разделе платежей, чтобы ограничить возможность пополнения баланса
    echo "$xml" | xmlstarlet ed \
    -d "//toolbtn[@func='payment.add']"
    else
    #Для всех остальных случаев - возврат исходного XML без изменений
    echo "$xml"
    fi
  4. Установите утилиту xmlstarlet. Она есть в исполняемом файле, но по умолчанию отсутствует на сервере:
    Astra Linux, Ubuntu
    sudo apt install xmlstarlet
    AlmaLinux
    sudo dnf install xmlstarlet
  5. Сделайте файл исполняемым:
    sudo chmod a+x /usr/local/mgr5/addon/remove_funds.sh
  6. Перезапустите платформу и очистите XML-кеш:
    sudo rm /usr/local/mgr5/var/.db.cache* -rf && rm /usr/local/mgr5/var/.xmlcache/* -rf && /usr/local/mgr5/sbin/mgrctl -m billmgr -R
  7. Проверьте работу модуля под учётной записью клиента. Если на главной странице или в разделе Финансы → Платежи возникает ошибка, удалите созданные файлы и перезапустите платформу.

Диагностика ошибок

Если плагины работают некорректно, получите более подробную информацию об ошибках:

  1. Установите максимальный уровень логирования для файла /usr/local/mgr5/var/billmgr.log. Подробнее см. в статье Логирование в BILLmanager.
  2. Воспроизведите ошибку.
  3. Проверьте лог /usr/local/mgr5/var/billmgr.log.
  4. Верните уровень логирования к исходному значению. 
Дата последнего обновления статьи: 16.09.2025. Статья подготовлена техническими писателями ISPsystem