Логика смены статуса услуги в перепродающем биллинге
Checkevent — процесс, с помощью которого услуга в перепродающем биллинге меняет статус в соответствии с продающим. При получении события от checkevent в планировщике Cron формируется задание вида:
/usr/local/mgr5/sbin/mgrctl -m billmgr checkevent >/dev/null 2>&1
Если перепродающий биллинг не получил или некорректно обработал checkevent об успешной активации услуги от продающей платформы, статус услуги останется в состоянии "обрабатывается" или "ожидает выпуска".
Это может произойти при несоблюдении правила перепродажи:
Используйте для каждого перепродающего BILLmanager отдельный аккаунт в продающем BILLmanager. Иначе взаимодействие биллинговых систем может быть нарушено.
При этом логика работы может быть нарушена даже при выключенном обработчике одного из перепродающих биллингов, если они подключены к продающей системе через одного пользователя.
Подробнее о логике перепродажи см. в статье Шаг 1. Интеграция с продающим BILLmanager документации BILLmanager.
Как происходит процесс checkevent на стороне биллинговых платформ:
- Клиент заказывает услугу на стороне перепродающей системы.
- Checkevent передает информацию о новом заказе перепродающей системы продающему биллингу.
- На стороне продающего биллинга активируется услуга.
- Checkevent получает информацию от продающего биллинга о смене статуса на "активен" и передает его перепродающему.
Когда через один аккаунт интегрировано несколько перепродающих платформ, сheckevent получит пустой список событий, поскольку его уже обнулил запрос для другого обработчика.
Таким образом, checkevent может передавать данные о статусе услуги платформе, на которой этих услуг нет. Поэтому на второй платформе статусы не обновятся.
Диагностика
Для диагностики изучите /usr/local/mgr5/var/pmbillmgr.log — лог взаимодействия продающего биллинга с перепродающим. Найдите в логе промежуток времени, когда выпускались сертификаты или активировалась услуга (его можно определить по моменту, когда в продающем биллинге сертификаты приняли статус Выпущен или услуга сменила статус на Активен).
Чтобы проверить логи:
- Подключитесь к серверу с перепродающей платформой по SSH.
-
Определите необходимый для диагностики поток по упоминанию услуги в логе pmbillmgr.log:
grep 'elid=16643' /usr/local/mgr5/var/pmbillmgr.log
ПоясненияПример вывода:
Nov 18 08:15:04 [23241:1] sbin_utils INFO QUERY: func=service.saveparam&sok=ok&elid=62991&name=last%5Fsync%5Fitem&value=2022%2D11%2D18%2005%3A09%3A02&crypted=off Nov 18 08:15:04 [23241:1] sbin_utils NOTE Connect to billmgr Nov 18 08:15:04 [23241:1] rpc EXTINFO Query('func=service.saveparam&sok=ok&elid=62991&name=last%5Fsync%5Fitem&value=2022%2D11%2D18%2005%3A09%3A02&crypted=off')
Пояснения -
Проверьте лог-файл по найденному потоку:
grep '23241:1' /usr/local/mgr5/var/pmbillmgr.log
ПоясненияВ выводе обратите внимание на ошибки и предупреждения. Пример:
Nov 18 08:15:04 [23241:1] libmgr ERROR Error: Type: 'missed' Object: 'itemevent' Value: '1225058' Nov 18 08:15:04 [23241:1] processing WARNING processing event for item '16643' failed: ' with '1225058' does not exist '
Ошибка сообщает, что для услуги событие не найдено.
Решение
Для предотвращения подобного поведения, необходимо настроить перепродажу в соответствии с правилами и заменить пользователя для интеграции.
Вмешательство в базу данных предполагает потенциальный риск. Мы не рекомендуем вносить ручные правки в базу, поскольку это может нарушить корректную работу платформы.
Создайте резервную копию платформы перед выполнением любых действий с БД.
Чтобы изменить статус текущей услуги:
- Подключитесь к серверу с платформой по SSH.
-
Подключитесь к MySQL:
mysql billmgr
-
Переведите услугу на ручной обработчик запросом к базе данных:
update item set processingmodule=<id_ручного_обработчика> where id=<id_услуги_в_BILLmanager>;
Пояснения - Перейдите в веб-интерфейс платформы и выполните любую операцию с услугой для смены статуса, например, включите её кнопкой вкл. Создастся задача на выполнение этой операции.
- Перейдите в раздел Инструменты → Задачи → выберите нужную задачу → нажмите Изменить.
- Нажмите кнопку Взять задачу.
- Заполните все параметры услуги.
- Нажмите кнопки Написать/Сохранить и Закрыть задачу:
Услуга сменит статус. После этого вы можете перевести услугу обратно на ваш обработчик.