Модуль Crossroad

Crossroad — внутренний HTTP API плагина Ufanet для работы с контрагентами, договорами и услугами ABilling. Через него личные кабинеты, мастера ERP и карточки договоров получают единое представление данных из разных версий и экземпляров биллинга.

Его потребителями являются мастер обслуживания, карточка договора, виджеты баланса и услуг, управление интернет-ограничениями и внешние приложения.

Класс HTTP-действия ContractAuthAction помечен как устаревший (Deprecated), но API продолжает использоваться. При разработке новых интеграций следует учитывать этот статус и не расширять контракт без проверки существующих потребителей.

Возможности

Crossroad выполняет следующие задачи:

  • ищет контрагентов и связанные с ними договоры;

  • проверяет договор по логину и паролю статистики;

  • собирает сведения о договоре из ERP и ABilling;

  • по запросу подгружает адрес, баланс, тарифы, услуги, параметры, способы оплаты и другие блоки;

  • возвращает услуги физических и юридических лиц в общей модели;

  • управляет паролем статистики, автоплатежом и ограничениями интернета;

  • создаёт контрагента и процесс онлайн-заявки на подключение;

  • предоставляет специальные операции для SmartHouse, Rentsoft, телеканалов и кешбэка.

Точка входа и права

Все операции доступны по одному пути:

/user/plugin/ufanet/crossroad.do?action=<имя операции>

Запрос выполняется в авторизованной пользовательской сессии ERP. Для каждой операции зарегистрировано отдельное право в дереве «Плагин Ufanet → Пользователь → Информация о договоре». Параметр useServiceUser=true у некоторых операций переключает чтение ABilling на служебного пользователя, но не отменяет проверку права на само действие ERP.

Большинство операций принимает параметры строки запроса. Исключение — updateInetRestriction, которая получает JSON в теле запроса.

Формат ответа

Стандартный JSON-конверт ERP содержит результат в поле data:

{
  "status": "ok",
  "message": "",
  "data": {
    "code": 200,
    "message": "OK"
  },
  "eventList": []
}

HTTP-запрос может завершиться успешно, даже если Crossroad вернул отказ в data.code. Клиент должен проверять именно это поле, а не только HTTP-статус или обработчик ошибки Promise. Некоторые старые операции не используют data.code и при неверных параметрах выбрасывают обычную ошибку ERP; различия отмечены в каталоге операций.

Коды Crossroad

Код Сообщение Значение

200

OK

Операция выполнена.

1

Customer not found

Контрагент не найден.

2

Unknown method

Неизвестный метод. Код сохранён в модели, но напрямую текущим действием не устанавливается.

3

More than one customer has been found

Найдено больше одного подходящего контрагента или договора.

4

Request processing failed

Не удалось обработать запрос.

5

Invalid password

Неверный пароль статистики.

6

Contract not found

Договор не найден.

7

Internal server error

Внутренняя ошибка. К сообщению может быть добавлен текст исключения.

8

Invalid request

Не передан обязательный параметр или значение некорректно.

9

Unknown server response status

Неизвестный статус ответа зависимой системы.

10

Invalid phone number

Телефон не соответствует настроенному регулярному выражению.

11

Action isn’t available

Операция не поддерживается для данного договора, биллинга или версии.

500

Connectivity problem

Ошибка связи с зависимой системой.

Как формируется договор

Сначала Crossroad получает базовые сведения о договоре: идентификаторы, название, тип, статус, период действия, домен и список субдоговоров. Затем параллельно запускает только запрошенные загрузчики свойств. Результат каждого загрузчика добавляется в итоговый договор, а время выполнения, использование кеша и ошибка записываются в meta.

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

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

Разделы документации

  • Операции API — все доступные действия, их параметры и результат.

  • Свойства договора — все значения параметра properties и правила загрузки.

  • Конфигурация — общие настройки, кеш, feature flags, услуги ЮЛ и дополнительные блоки.

Ограничения текущего контракта

  • Идентификатор договора всегда используется вместе с идентификатором биллинга, но названия параметров различаются: contractId/billingId и cid/bid.

  • Часть Java-моделей содержит Gson-аннотации со snake_case, а ответ сериализуется Jackson. Поля без JsonProperty фактически приходят в camelCase.

  • Неизвестное значение properties игнорируется без ошибки.

  • Пустой properties означает загрузку всех свойств, для которых включён признак default; properties=none возвращает только базовые поля.

  • Операции записи выполняются сразу и не имеют режима предварительной проверки.