Документация по версии 1.5
Содержание
Введение
Этот раздел wiki будет посвящён новой версии биллинг-системы ExpertBilling 1.5.
ExpertBilling 1.5 принципиально другая биллинга система и не многим похожа на предыдущие версии. Она содержит веб-интерфейс, рассчитанный на работу с абонентскими базами до 300 000 - 500 000 абонентов и вертикально/горизонтально масштабируемую структуру, которая способна плавно наращивать вычислительные мощности.
Код ExpertBilling теперь открыт на 70%. Вы свободно можете модифицировать интерфейс и логику отсылки команд на сервера доступа.
ExpertBilling использует зарекомендовавшие себя production решения RabbitMQ, Celery, PostgreSQL, которые используются такими гигантами как Twitter, VmWare и многими другими.
ExpertBilling стал гораздо аккуратнее и логичнее в своей работе.
ExpertBilling теперь не привязывается к жёсткому диску. Вы сможете переустановить систему в любой момент, используя свою лицензию.
Увеличение количества абонентов стало возможно без обновления системы.
Кроме этого ExpertBilling 1.5 стал гораздо безопаснее и надёжнее. Мы проделали огромную работу и надеемся, что это не напрасно.
Обратите внимание, что выложенная версия ExpertBilling 1.5 является alpha версией и вы её используете на свой страх и риск. Мы просим вас сообщать на форуме о всех найденных проблемах, чтобы они были быстрее исправлены.
Установка
Перед началом работы выполните следующее:
Выполните в консоли с правами суперпользователя:
$sudo -s
#apt-get install fabric
Возможно 3 варианта установки ExpertBilling 1.5. Обновление, апгрейд, апгрейд с версии 1.4.1. Апгрейд с более ранних версий не предусмотрен.
Установка с нуля
Скачанный архив нужно положить в /opt/ и распаковать из него только скрипт-инсталлятор fabfile.py и инструкцию по установке.
#cd /opt/ #tar -xvzf путь к архиву с биллингом fabfile.py install.txt
Установка postgresql 9.1
#apt-get update #apt-get install fabric postgresql-9.1 postgresql-contrib-9.1 postgresql-server-dev-9.1
Создание директории:
#mkdir /opt/ebs
Создание пользователя базы данных и базы данных. Рекомендуемый пароль - ebspassword:
#su postgres $createuser -P -s ebs $createdb -O ebs ebs $exit $exit
Запустите установку биллинга с нуля с правами root-а из директории /opt/.
#fab deploy:demo.tar.gz
После того, как устанвока завершится - откройте в браузере айпи вашего сервера и войдите в веб-кабинет
Апгрейд
Скачанный архив нужно положить в /opt/ и распаковать из него только скрипт-инсталлятор fabfile.py и инструкцию по установке.
#cd /opt/ #tar -xvzf путь к архиву с биллингом fabfile.py install.txt
При апгрейде с версии 1.4.1 нужно выполнить
#fab upgrade:demo.tar.gz
Апгрейд с версии 1.4.1
Скачанный архив нужно положить в /opt/ и распаковать из него только скрипт-инсталлятор fabfile.py и инструкцию по установке.
#cd /opt/ #tar -xvzf путь к архиву с биллингом fabfile.py install.txt
При апгрейде с версии 1.4.1 нужно выполнить
#fab upgrade_14:demo.tar.gz
После установки откройте файл /opt/ebs/web/ebscab/settings_local.py и переопределите в нём значения из файла /opt/ebs/web/ebscab/settings.py. Этот файл не будет перезатираться при обновлениях.
После настройки веб-кабинета:
- /etc/init.d/apache2 reload
Внимание!!! Это не финальная версия 1.5. О всех найденных прблемах просьба писать на форуме http://forum.expertbilling.ru/
Имя и пароль по-умолчанию для входа в веб-кабинет admin/admin.
Платёжные системы
В ExpertBilling 1.5 реализован приём следующих типов платежей:
- QIWI
- Единая Касса w1.ru
- Сбербанк РФ
- Liqpay
- EasyPay
Настройка производится разово в файле settings_local.py веб-кабинета:
GETPAID_BACKENDS = ('payments.easypay', 'payments.liqpay', 'payments.ru_sberbank', 'payments.w1ru', 'payments.qiwiru', ) GETPAID_BACKENDS_SETTINGS = { # Please provide your settings for backends 'payments.liqpay' : { 'TYPE': 'frontend', 'DEFAULT_CURRENCY' : 'UAH', 'MERCHANT_ID': 'i7444123444', 'MERCHANT_SIGNATURE': 'LMoTlGet9IVubuNbBvKIZ0wNDdsluOLsIvdzd', 'PAY_WAY': ('card', 'liqpay', 'delayed'), 'EXPIRE_TIME': 36, }, 'payments.easypay' : { 'TYPE': 'backend', 'DEFAULT_CURRENCY' : 'UAH', 'SERVICE_ID' : '1', 'allowed_ip': ('93.183.196.28', '93.183.196.26'), }, 'payments.ru_sberbank' : { 'TYPE': 'backend', 'DEFAULT_CURRENCY' : 'RUB', 'PASSWORD' : '12345', 'allowed_ip': ('93.183.196.28', '93.183.196.26'), }, 'payments.w1ru' : { 'TYPE': 'frontend', 'DEFAULT_CURRENCY' : 'RUB', 'MERCHANT_ID': '163789612661', 'MERCHANT_PASSWORD': 'MFVSdmZNajdBRXdcWmE3Z191cjBLWFJsZjhb', #======================================================================= # 'PTENABLED':[ # 'YandexMoneyRUB', # 'WebMoneyRUB', # ], #======================================================================= 'PTDISABLED':[ ], 'allowed_ip': ('93.183.196.28', '93.183.196.26'), 'EXPIRE_DAYS': 31, }, 'payments.qiwiru' : { 'TYPE': 'frontend', 'DEFAULT_CURRENCY' : 'RUB', 'TERMINAL_ID' : '12345', 'TERMINAL_PASSWORD' : '12345', 'LIFETIME': 48, 'ALARM_SMS': 0, 'ACCEPT_CALL': 0, }, }
Для приёма QIWI требуется прописать в cron (crontab -e) следующее:
*/5 * * * * cd /opt/ebs/web/ebscab/ && bash --init-file /opt/ebs/web/venv/bin/activate -c "python manage.py process_qiwi_payments"
За то, какие способы оплаты будут доступны пользователям, отвечает переменная GETPAID_BACKENDS. Настройки конкретного платёжного шлюза находятся в соответствующих секциях GETPAID_BACKENDS_SETTINGS.
Все типы платежей разбиты на 2 логических типа - frontend и backend. Frontend доступен для выбора через веб-кабинет. Backend используется, если оплата происходит без взаимодействия пользователя с веб-кабинетом. К примеру через терминал. Не меняйте эти значения.
Просмотр оплаченных счетов доступен через интерфейс администратора по ссылке /ebsadmin/payment/. Допускается изменять статус платежа. Пополнение счёта абонента или удаление пополнения произойдёт автоматически.
Импорт платежей
В ExpertBilling 1.5 реализован импорт выписок о проведённых платежах. Скрипт находится в директории /opt/ebs/data/scripts/payments/. Система импорта автономна и может работать на другом сервере или по любому пути на файловой системе.
Перед началом работы нужно переименовать файл pattern.ini.tmpl в pattern.ini и настроить формат обрабатываемых платёжек.
Пример:
[belpost] active=1 folderin=belpost/IN/ folderout=belpost/OUT/ foldererr=belpost/ERR/ mask=*.alt rmask=r*.alt separator=; payment_type=BELPOST_PAYMENT_IMPORT fieldnames=DATETIME;ACC;FIO;SUM;EMPTY;PID;EMPTY fielddefault=;;;;;; datetime_fmt=%d/%m/%Y %H:%M:%S reversal_payments=False [Belarusbank] active=1 folder_in=Belarusbank/IN/ folder_out=Belarusbank/OUT/ folder_err=Belarusbank/ERR/ file_mask=*.asb exclude_mask=lan.* separator=; payment_type=BELARUSBANK_PAYMENT_IMPORT encoding=cp855 fieldnames=ACC;FIO;DATETIME;TIME;SUM;EMPTY;EMPTY;EMPTY;PID datetime_fmt=%d/%m/%Y time_fmt=%H:%M reversal_payments=False [Webmoney] active=1 folder_in=WebMoney/IN/ folder_out=WebMoney/OUT/ folder_err=WebMoney/ERR/ file_mask=*.* exclude_mask=r*.* separator=; payment_type=WEBMONEY_PAYMENT_IMPORT fieldnames=DATETIME;ACC;SUM;EMPTY;EMPTY;PID;EMPTY;EMPTY;EMPTY;EMPTY datetime_fmt=%d/%m/%Y %H:%M:%S time_fmt= encoding=utf-8 reversal_payments=False [EasyPay] active=1 folder_in=EasyPay/IN/ folder_out=EasyPay/OUT/ folder_err=EasyPay/ERR/ file_mask=*.txt exclude_mask=r*.txt separator=; payment_type=EASYPAY_PAYMENT_IMPORT fieldnames=DATETIME;ACC;PID;FIO;SUM datetime_fmt=%d/%m/%Y %H:%M:%S encoding=utf-8 time_fmt= reversal_payments=False [PriorBank] active=1 folder_in=Priorbank/IN/ folder_out=PriorBank/OUT/ folder_err=Priorbank/ERR/ file_mask=*.prb exclude_mask=r*.prb separator=; payment_type=PRIORBANK_PAYMENT_IMPORT fieldnames=SUM;EMPTY;ACC;EMPTY;PID;EMPTY;EMPTY;EMPTY;DATETIME;EMPTY datetime_fmt=%d%m%y encoding=utf-8 time_fmt= reversal_payments=False
Опция reversal_payments=True говорит, что платёж нужно сторнировать - отменить. Директории folder_in, folder_out, folder_err содержат входящие платежи (вы должны помещать их туда чем-либо в раздельных файлах с расширением, указанным в переменной file_mask), обработанные платежи и платежи с ошибками соответственно.
Для обработки платежей, вам нужно настроить crontab на вызов файла process.py раз в 10-15 минут.
*/10 * * * * cd /opt/ebs/data/scripts/payments/ && bash --init-file /opt/ebs/web/venv/bin/activate -c "python process.py"