Документация по версии 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:demo1.5_x64.tar.gz для 64-бит версии демо #fab deploy:demo1.5_x32.tar.gz для 32-бит версии демо
или подставить ваш скачанынй архив с системой. После того, как устанвока завершится - откройте в браузере айпи вашего сервера и войдите в веб-кабинет
Апгрейд
Скачанный архив нужно положить в /opt/ и распаковать из него только скрипт-инсталлятор fabfile.py и инструкцию по установке.
#cd /opt/ #tar -xvzf путь к архиву с биллингом fabfile.py install.txt
И
#fab upgrade:demo.tar.gz
Апгрейд с версии 1.4.1
Скачанный архив нужно положить в /opt/ и распаковать из него только скрипт-инсталлятор fabfile.py и инструкцию по установке.
#cd /opt/ #tar -xvzf путь к архиву с биллингом fabfile.py install.txt
При апгрейде с версии 1.4.1 нужно: 1. Установить postgresql-9.1 postgresql-contrib-9.1. 2. Выполнить дамп базы данных с биллингом с помощью pg_dump
su postgres pg_dump ebs >/tmp/ebs.dump exit cp /tmp/ebs.dump /opt/ebs.dump
3. Удалить postgresql-8.4.
apt-get remove postgresql-8.4
4. Настроить postgresql-9.1 на запуск на порту 5432 (/etc/postgres/9.1/main/postgresql.conf). 5. Перезапустить postgresql, 6. Создать БД ebs с пользователем ebs
createuser -s -P ebs createdb -O ebs ebs
7. Импортировать в созданную базу дамп:
su postgres psql ebs -f /opt/ebs.dump
8. Запустить апгрейд:
#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/ && source /opt/ebs/venv/bin/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/web/ebscab/ && source /opt/ebs/venv/bin/python process.py
SMS рассылка
В ExpertBilling 1.5 реализован механизм рассылки SMS. Он позволяет:
- Слать SMS конкретному пользователю, используя шаблон сообщения.
- Слать SMS группе пользователей, используя шаблон сообщения.
- Создавать отложенные сообщения для отправки их в будущем
- Выполнять рассылку сообщений о балансе.
Настройка SMS подсистемы производится в файле settings_local.py
SENDSMS_BACKENDS = ( ('sendsms.backends.websms.SmsBackend', 'websms.ru'), ('sendsms.backends.smsru.SmsBackend', 'sms.ru'), ) SENDSMS_BACKENDS_SETTINGS = { 'sendsms.backends.websms': { 'FROM_NAME': '', # http://websms.ru/FromName.asp 'USERNAME': '', 'PASSWORD': '', }, 'sendsms.backends.smsru': { 'FROM_NAME': '', 'API_ID': '', 'TRANSLIT': '1', 'TEST': '0', 'PARTNER_ID': '', }, 'sendsms.backends.smspilotru': { 'FROM_NAME': '', 'API_ID': '', } } SENDSMS_IF_BALLANCE_AMOUNT = 0 SENDSMS_DEFAULT_BACKEND = 'sendsms.backends.websms.SmsBackend'
Переменная SENDSMS_BACKENDS содержит пути к бэкэндам для работы с соответствующими SMS-операторами. По-умолчанию реализована поддержка sms.ru и websms.ru Переменная SENDSMS_BACKENDS_SETTINGS содержит настройки конкретного оператора.
Если вы планируете использовать рассылку о балансе - вам необходимо также заполнить переменные SENDSMS_IF_BALLANCE_AMOUNT (минимальный баланс, ниже которого будут слаться уведомления) и SENDSMS_DEFAULT_BACKEND (бэкэнд, используемый при отсылке сообщений из скриптов).
Шаблон самого сообщения вы можете отредактировать в интерфейсе администратора Справочники->Шаблоны->Минимальный баланс. Шаблон будет обработан шаблонизатором Django. Внутри него вы можете использовать объект account, который содержит текущие значения из полей аккаунта. К примеру Шаблон:Account.balance - подставит баланс, Шаблон:Account.password - пароль. Парсинг шаблона и подстановка будут выполняться непосредственно в момент отсылки. До отсылки сообщение будет храниться в базе в виде шаблона.
Для автоматизации ежемесячной рассылки нужно добавить в crontab следующие записи:
12 * * * * cd /opt/ebs/web/ebscab/ && source /opt/ebs/venv/bin/python manage.py ballance_sms_messages # раз в сутки в 12 дня слат ь нотификации о балансе */5 * * * * cd /opt/ebs/web/ebscab/ && source /opt/ebs/venv/bin/python manage.py process_sms_messages # каждые 5 минут выполнять отсылку отложенных SMS сообщений.