Документация по версии 1.5 — различия между версиями

Материал из ExpertBilling
Перейти к: навигация, поиск
(Платёжные системы)
Строка 138: Строка 138:
 
* EasyPay
 
* EasyPay
 
* MasterPlat
 
* MasterPlat
 +
* SimpleTerminal
  
 
Настройка производится разово в файле settings_local.py веб-кабинета:
 
Настройка производится разово в файле settings_local.py веб-кабинета:
Строка 147: Строка 148:
 
                     'payments.w1ru',
 
                     'payments.w1ru',
 
                     'payments.qiwiru',
 
                     'payments.qiwiru',
 +
                    'payments.simplaterminal',
 
                     )
 
                     )
 
                    
 
                    
Строка 208: Строка 210:
 
         'DUSER' : 'test',
 
         'DUSER' : 'test',
 
         'DPASS': 'test',
 
         'DPASS': 'test',
 +
 +
    },
 +
    'payments.simpleterminal' : {
 +
        'TYPE': 'backend',
 +
        'DEFAULT_CURRENCY' : 'RUB',
 +
        'SECRET': '12345678901234567890hgh55g54',
  
 
     }
 
     }
 
 
 
  
 
}
 
}
Строка 241: Строка 246:
  
 
Все типы платежей разбиты на 2 логических типа - frontend и backend. Frontend доступен для выбора через веб-кабинет. Backend используется, если оплата происходит без взаимодействия пользователя с веб-кабинетом. К примеру через терминал. Не меняйте эти значения.
 
Все типы платежей разбиты на 2 логических типа - frontend и backend. Frontend доступен для выбора через веб-кабинет. Backend используется, если оплата происходит без взаимодействия пользователя с веб-кабинетом. К примеру через терминал. Не меняйте эти значения.
 +
 +
=== Платёжная система SimpleTerminal ===
 +
Это псевдо-платёжная система, которая позволяет использовать API биллинга для пополнения счёта с помощью HTTP запросов.
 +
Типичный запрос на пополнение выглядит так: sum=100&uid=contract&trans=123456&secret=1235453423423g4
 +
Полный URL
 +
<pre>
 +
http://<server>/payments.simpleterminal/simpleterminal/payment/?sum=100&uid=contract&trans=123456&secret=1235453423423g4
 +
</pre>
 +
Если в настройках указан SECRET - его необходимо указывать в запросе в качестве параметра.
 +
  
 
Просмотр оплаченных счетов доступен через интерфейс администратора по ссылке /ebsadmin/payment/. Допускается изменять статус платежа. Пополнение счёта абонента или удаление пополнения произойдёт автоматически.
 
Просмотр оплаченных счетов доступен через интерфейс администратора по ссылке /ebsadmin/payment/. Допускается изменять статус платежа. Пополнение счёта абонента или удаление пополнения произойдёт автоматически.

Версия 14:44, 1 июля 2013

Введение

Этот раздел 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 является RC версией и вы её используете на свой страх и риск. Мы просим вас сообщать на форуме о всех найденных проблемах, чтобы они были быстрее исправлены.

Установка

Перед началом работы выполните следующее:

Выполните в консоли с правами суперпользователя:

$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. Этот файл не будет перезатираться при обновлениях.

После настройки веб-кабинета:

  1. /etc/init.d/apache2 reload

Внимание!!! Это не финальная версия 1.5. О всех найденных прблемах просьба писать на форуме http://forum.expertbilling.ru/

Имя и пароль по-умолчанию для входа в веб-кабинет admin/admin.

Платёжные системы

В ExpertBilling 1.5 реализован приём следующих типов платежей:

  • QIWI
  • Единая Касса w1.ru
  • Сбербанк РФ
  • Liqpay
  • EasyPay
  • MasterPlat
  • SimpleTerminal

Настройка производится разово в файле settings_local.py веб-кабинета:

GETPAID_BACKENDS = ('payments.easypay',
                    'payments.liqpay',
                    'payments.ru_sberbank',
                    'payments.w1ru',
                    'payments.qiwiru',
                    'payments.simplaterminal',
                    )
                  
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,
        'MIN_SUM': 100,

    },
    'payments.masterplat' : {
        'TYPE': 'backend', 
        'DEFAULT_CURRENCY' : 'RUB',
        'DUSER' : 'test',
        'DPASS': 'test',

    },
    'payments.simpleterminal' : {
        'TYPE': 'backend', 
        'DEFAULT_CURRENCY' : 'RUB',
        'SECRET': '12345678901234567890hgh55g54',

    }

}

Дополнительно нужно зайти через веб-интерфейс в закрытую часть интерфейса администрирвоания по пути /admin/, зайти в раздел sites и для сайта по-умолчанию указать доменное имя сервера, которое доступно снаружи. УДАЛЯТЬ ЗАПИСЬ НЕЛЬЗЯ. ЕЁ НУЖНО ИМЕННО ОТРЕДАКТИРОВАТЬ.


Для приёма QIWI требуется прописать в cron (crontab -e) следующее:

*/5 * * * *       cd /opt/ebs/web/ebscab/ && /opt/ebs/venv/bin/python manage.py process_qiwi_payments

При работе с терминалами qiwi ссылка для постбэка будет выглядеть следующим образом:

http://<server>/payments.qiwiru/qiwiru/payment/

При работе с единой кассой ссылка для постбэка:

http://<server>/payments.w1ru/w1ru/postback/

Для единой кассы дополнительно нужно авторизовать сайт. Для этого добавьте в файл

/opt/ebs/web/ebscab/templates/site_verify_codes.html

тэг, который вы получили в интерфейсе единой кассы.

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

Все типы платежей разбиты на 2 логических типа - frontend и backend. Frontend доступен для выбора через веб-кабинет. Backend используется, если оплата происходит без взаимодействия пользователя с веб-кабинетом. К примеру через терминал. Не меняйте эти значения.

Платёжная система SimpleTerminal

Это псевдо-платёжная система, которая позволяет использовать API биллинга для пополнения счёта с помощью HTTP запросов. Типичный запрос на пополнение выглядит так: sum=100&uid=contract&trans=123456&secret=1235453423423g4 Полный URL

http://<server>/payments.simpleterminal/simpleterminal/payment/?sum=100&uid=contract&trans=123456&secret=1235453423423g4

Если в настройках указан SECRET - его необходимо указывать в запросе в качестве параметра.


Просмотр оплаченных счетов доступен через интерфейс администратора по ссылке /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/ && /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/ && /opt/ebs/venv/bin/python manage.py ballance_sms_messages # раз в сутки в 12 дня слат ь нотификации о балансе
*/5 * * * *       cd /opt/ebs/web/ebscab/ && /opt/ebs/venv/bin/python manage.py process_sms_messages # каждые 5 минут выполнять отсылку отложенных SMS сообщений.   

Резервное копирование

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

Бэкапы при обновлении системы

При каждом обновлении скрипт обновления автоматически создаёт бэкапы

  • базы данных
  • содержимого директории /opt/ebs/data/
  • содержимого директории /opt/ebs/web/

Ручной бэкап базы данных

  • sudo -s
  • su postgres
  • pg_dump ebs>/tmp/ebs.dump
  • exit
  • mv /tmp/ebs.dump /opt/ebs/backups/датавремя.sql

Восстановление ручного бэкапа базы данных

sudo -s billing force-stop su postgres dropdb ebs createdb -O ebs ebs psql ebs -f /путь к несжатому бэкапу exit billing start