Серверная часть
В основе движка билинга лежит Framework Limb 3 ( http:/// ). В частности используются следующие его пакеты:
· acl (управление правами доступа),
· core (основные классы приложения),
· filter_chain (управление порядок работы приложения),
· fs (функции для работы с файловой системой),
· log (ведение лога),
· macro (шаблонизатор),
· mail (рассылка почты),
· net (обработка данных, полученных от пользователя и вывод результата),
· session (управление сессиями).
Также используются пакеты, разработанные нами:
· authorization (авторизация пользователей)
· data_filter (фильтрация данных полученных от пользователя)
· evaluator (вычислитель формул для тарифов)
· lite (основные классы приложения, включающие небольшую ORM)
· liveoperator (пакет билинга)
Для взаимодействия с базой данных используется паттерн Active record, потому классы моделей в основном наследуются от одного и того же класса – liteRecord. Данный класс является аналогом lmbActiveRecord из пакета active_record от Limb 3 и частично повторяет его функционал.
Платежные системы
Добавление платежной системы на примере системы платежей через банк:
1. Необходимо придумать уникальное кодовое обозначение платежной системы, например bank.
2. Добавить классы моделей в папку liveoperator/src/payment_system/bank/model/
3. Добавить таблицу bank_receipt для хранения подробной информации о платеже.
4. В папку liveoperator/src/controller/ добавить файл контролера платежной системы: liteBankPaymentSystemController. class. php.
Контролер используется для формирования платежей из панели пользователя. Может содержать следующие методы:
doPayment() – получение данных от пользователя и формирование платежа;
doPaymentData() – получение предварительной информации о платеже (e-mail пользователя, НДС);
doPayments() – получение списка платежей пользователя по данной платежной системе;
doViewPayment() – получение подробной информации о платеже, как правило, для печати.
5. .Добавить файл роутинга liveoperator/routes/bank/routes. php. Данный файл предназначен для сопоставления путей с экшенами контроллера, а также для указания используемых шаблонов.
6. Добавить необходимые шаблоны в папку liveoperator/templates/payment_system/bank/. Обязательно должен присутствовать шаблон loader. htpl. Он подключает необходимые js-скрипты для панели пользователя.
7. В таблицу payment_system нужно в ручную добавить платежную систему, обязательно указав следующие поля: name (название системы), code (уникальный код платежной системы bank) и class (имя класса модели платежной системы BankPaymentSystem)
Клиентская часть
Клиентская часть написана с использованием javascript-библиотеки ExtJS ( http:// ).
Скрипты платежных систем обычно располагаются в папке liveoperator/shared/liveoperator/js/payment_systems/
Обязательно должна присутствовать панель LiveOperator. PaymentSystems. bank. Panels. Root (‘bank’ здесь – это уникальный код платежной системы). Эта панель будет отображаться после выбора пользователем платежной системы.
Платежные системы в панели оператора
В панели оператора имеется стандартный интерфейс управления платежными системами, и, возможно, менять там ни чего не придется.
Для интерфейса необходимо наличие шаблона квитанции. Он возвращается методом getTemplate() модели квитанции (BankReceipt::getTemplate()).
Также интерфейс ориентирован на подтверждение платежей оператором. Если этого не требуется, то сами платежи можно не создавать (не использовать таблицу payment) или создавать их уже подтвержденными. Могут быть и другие варианты.


