База знаний BILLmanager
Документация — ваш лучший друг?
Поделитесь мнением и пройдите небольшой опрос
Пройти опрос

При перепродаже не обновляется статус услуги

Логика смены статуса услуги в перепродающем биллинге

Checkevent — процесс, с помощью которого услуга в перепродающем биллинге меняет статус в соответствии с продающим. При получении события от checkevent в планировщике Cron формируется задание вида:

/usr/local/mgr5/sbin/mgrctl -m billmgr checkevent >/dev/null 2>&1

Если перепродающий биллинг не получил или некорректно обработал checkevent об успешной активации услуги от продающей платформы, статус услуги останется в состоянии "обрабатывается" или "ожидает выпуска".

Это может произойти при несоблюдении правила перепродажи:

Используйте для каждого перепродающего BILLmanager отдельный аккаунт в продающем BILLmanager. Иначе взаимодействие биллинговых систем может быть нарушено. 

При этом логика работы может быть нарушена даже при выключенном обработчике одного из перепродающих биллингов, если они подключены к продающей системе через одного пользователя.

Подробнее о логике перепродажи см. в статье Шаг 1. Интеграция с продающим BILLmanager документации BILLmanager.

Как происходит процесс checkevent на стороне биллинговых платформ:

  1. Клиент заказывает услугу на стороне перепродающей системы.
  2. Checkevent передает информацию о новом заказе перепродающей системы продающему биллингу.
  3. На стороне продающего биллинга активируется услуга.
  4. Checkevent получает информацию от продающего биллинга о смене статуса на "активен" и передает его перепродающему.

Когда через один аккаунт интегрировано несколько перепродающих платформ, сheckevent получит пустой список событий, поскольку его уже обнулил запрос для другого обработчика.

Таким образом, checkevent может передавать данные о статусе услуги платформе, на которой этих услуг нет. Поэтому на второй платформе статусы не обновятся.

Диагностика

Для диагностики изучите /usr/local/mgr5/var/pmbillmgr.log — лог взаимодействия продающего биллинга с перепродающим. Найдите в логе промежуток времени, когда выпускались сертификаты или активировалась услуга (его можно определить по моменту, когда в продающем биллинге сертификаты приняли статус Выпущен или услуга сменила статус на Активен).

Чтобы проверить логи:

  1. Подключитесь к серверу с перепродающей платформой по SSH.
  2. Определите необходимый для диагностики поток по упоминанию услуги в логе 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')
    
    
    Пояснения
  3. Проверьте лог-файл по найденному потоку:

    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 ' 

    Ошибка сообщает, что для услуги событие не найдено.

Решение

Для предотвращения подобного поведения, необходимо настроить перепродажу в соответствии с правилами и заменить пользователя для интеграции.

Важно

Вмешательство в базу данных предполагает потенциальный риск. Мы не рекомендуем вносить ручные правки в базу, поскольку это может нарушить корректную работу платформы.

Создайте резервную копию платформы перед выполнением любых действий с БД. 

Чтобы изменить статус текущей услуги: 

  1. Подключитесь к серверу с платформой по SSH.
  2. Подключитесь к MySQL:

    mysql billmgr
  3. Переведите услугу на ручной обработчик запросом к базе данных:

    update item set processingmodule=<id_ручного_обработчика> where id=<id_услуги_в_BILLmanager>;
    Пояснения
  4. Перейдите в веб-интерфейс платформы и выполните любую операцию с услугой для смены статуса, например, включите её кнопкой вкл. Создастся задача на выполнение этой операции.
  5.  Перейдите в раздел ИнструментыЗадачи → выберите нужную задачу → нажмите Изменить.
  6. Нажмите кнопку Взять задачу.
  7. Заполните все параметры услуги.
  8. Нажмите кнопки Написать/Сохранить и Закрыть задачу:

Услуга сменит статус. После этого вы можете перевести услугу обратно на ваш обработчик.