Интеграция с 24часаТВ (24h.tv) представлена в виде отрытого кода (динамические классы).
При интеграции с данной системой продукты модуля (или, в зависимости от конфигурации, сервисы модуля) являются подключаемыми пакетами MW.
Тарификация выполняется на стороне 24часаТВ - к биллингу просто идут запросы о необходимости снятия суммы со счета и информация о подключении/отключении пакетов.
Добавьте конфигурацию модуля и установите ее активной:
# Активные и приостановленные статусы договора contract.status.active.codes=0 contract.status.suspend.codes=3,4 # Id сущностей (Справочники - Атрибуты) для продукта, сервиса и канала, # для привязки атрибутов к продуктам, сервисам и каналам #productSpec.entitySpecId= #serviceSpec.entitySpecId= #tvChannelSpec.entitySpecId= #Пункты Web - меню web.menuItem1=TV подписки # Параметры автоматической генерации логина для аккаунта. Можно указать в конфигурации модуля, конфигурации устройства, конфигурации типа сервиса # (в последнем случае значения будут главнее): # минимальное значение логина при генерации логина account.login.min=10000001 # максимальное значение логина при генерации логина (т.е. если в базе присутствуют логины 1,2,3 и 10000000, # то при генерации создастся логин 4, а не 10000001) account.login.max=99999999 # форматирование генерируемого логина #account.login.format=0000000 # Парамерты пароля для аккаунта. Можно указать в конфигурации модуля, конфигурации устройства, конфигурации типа сервиса # (в последнем случае значения будут главнее): # минимальная длина пароля account.password.length.min=4 # Максимальная длина пароля account.password.length.max=8 # Разрешенные символы (используются также при генерации пароля) account.password.chars=1234567890 # Описание разрешенных символов, если пользователь ввел другие account.password.chars.description=В пароле допустимы только цифры. # Длина для автоматически генерируемого пароля account.password.length.auto=6 # Используемые символы для автоматически генерируемого пароля (по умолчанию значение берется из параметра account.password.chars) #account.password.chars.auto= # Обработчик webhook-запросов tv.rest.handler.tv24h.class=ru.bitel.bgbilling.modules.tv.dyn.tv24h.Tv24hWebhookHandler # Обработчик событий (платежа) tv.lifecycle.handler.tv24h.class=ru.bitel.bgbilling.modules.tv.dyn.tv24h.Tv24hEventWorker # Тип устройства - 24hTV om.tv24h.deviceTypeIds= # ID шаблона договора om.tv24h.contractPatternId= # ID типа аккаунта om.tv24h.tvAccountSpecId= # ID типа расхода om.tv24h.chargeTypeId= #om.tv24h.paymentTypeId= # ID параметра договора - ФИО #om.tv24h.param.name.id=2 # ID параметра договора - Фамилия om.tv24h.param.lastName.id= # ID параметра договора - Имя om.tv24h.param.firstName.id= # ID параметра договора - Email om.tv24h.param.email.id=9 # ID параметра договора - Телефон om.tv24h.param.phone.id=7
Необходимо создать новый тип устройства, назвать его, например, Access+Accounting - данный тип устройства будет отражать приложения TvAccess и TvAccounting.
Укажите в конфигурации:
# Обработка/обсчет # кол-во потоков в обработчике accounting.worker.1.thread.count=1 # Обработка аккаунтов, отслеживание изменения продуктов-опций # пауза перед следующим выполнением accounting.worker.1.tracking.account.1.delay=60 # максимальное кол-во обработанных аккаунтов в одном выполнении accounting.worker.1.tracking.account.1.batchSize=500 # отслеживание и деактивация продуктов, для которых в текущем тарифе абонента нет цены # по умолчанию такое отслеживание в данном обработчике происходит только при обнаружении смены продуктов-опций #accounting.worker.1.tracking.account.1.deactivateProductsWithoutPrice=1 # пауза перед следующим выполнением # Обработка аккаунтов при различных событиях, отслеживание изменения продуктов-опций accounting.worker.1.tracking.event.1.delay=10 # максимальное кол-во обработанных аккаунтов в одном выполнении accounting.worker.1.tracking.event.1.batchSize=100 # Синхронизация # кол-во выполняемых задач в одном блоке om.batch.size=20 # время ожидания завершения future задач om.batch.pause=0 # время ожидания завершения future задач om.batch.wait=5 # время ожидания следующей задачи перед закрытием соединения om.batch.waitNext=5 # пауза после ошибки om.error.pause=60 # кол-во попыток с ошибкой перед тем как отложить задачу om.error.redelivery.count=5 # кол-во попыток с ошибкой после которого отправить оповещение om.error.alarm.count=20 # таймаут задания, выполняющегося с ошибкой om.error.redelivery.timeout=86400
Далее создайте новый тип устройства, назовите его 24часаТВ и укажите в поле OrderManager класс ru.bitel.bgbilling.modules.tv.dyn.tv24h.Tv24hOrderManager:
У нас получилось два типа устройства:
Заметьте, что у типа устройства 24часаТВ ID получился равным 2. Именно это значение и прописано в конфигурации модуля, в параметре om.deviceTypeIds.
В дереве устройств создайте устройство типа Access+Accounting и укажите конфигурацию:
Создайте дочернее к Access+Accounting устройство типа 24часаТВ, в поле Community/secret укажите ключ доступа к API, созданный в панели администратора 24часаТВ.
Получившееся дерево устройств:
Добавьте тип аккаунта Аккаунт, укажите галочки логин и пароль, в конфигурации укажите:
# ID устройства 24часаТВ const.device.id=2 # Шаблон имени аккаунта title.pattern=Аккаунт: (${login})
Теперь необходимо создать Продукты - они будут отражать пакеты системы 24часаТВ. Поле Название - это название, с которым данный продукт будет отображаться в биллинге. Поле Идентификатор - идентификатор пакета системы 24часаТВ. Поле Продление укажите по планировщику (т.к. продлением и тарификацией занимается сам 24часаТВ).
Чтобы была возможность активировать пакет из биллинга (тем самым активируя подписку в 24часаТВ) необходимо, чтобы в продукте был задан хотя бы один режим активации.
Для удобства в дереве продуктов можно копировать и вставлять копию для последующего изменения (например, чтобы не создавать каждый раз режим активации). Получившееся дерево пакетов-продуктов:
.