Системные API

по сравнению с
Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (24)

просмотр истории страницы
В биллинге существуют системные API которые тоже можно использовать.
{toc:maxLevel=3}

1. Необходимо добавить разрешенные IP адреса в список через пробел Настройки->Настройки(в файле)->Network->Список IP для которых разрешено подключаться к системному API
{note}При составлении api запросов к биллингу рекомендуется использовать [API REST v2.0|CarbonBilling:API REST v2.0] {note}

h2. Настройка

1. Необходимо добавить разрешенные IP адреса в список через пробел Настройки->Настройки(в файле)->Network->Список IP для которых разрешено подключаться к системному API и перезапустить веб-сервер в контейнере биллинга выполнив команду:
{code}chroot /app/asr_billing/ service admin_web_server restart{code}
{info}
*Внимание*:адреса должны указываться через пробел.
{info}

2. Узнать пароль для конкретного контекста в /app/asr_billing/cfg/config

{code}network['api.collector.psw']='пароль'{code}

Примеры запросов:
В запросе пароль передаётся в аргументе *psw*, например:
{code}
psw=collectortestpsw
{code}

1. Список заблокированных по балансу абонентов по Nas IP
h2. Примеры запросов

{code}<ип адрес>:8082/system_api/?model=Abonents&method1=collector_manager.users_negbal&arg1={"nas_ip":"<ип адрес Nas>"}&context=collector&psw=<пароль>{code}
# Список заблокированных по балансу абонентов по Nas IP 10.0.0.1, используя пароль приложения Collector
{code}http://169.254.80.82:8082/system_api/?model=Abonents&method1=collector_manager.users_negbal&arg1={"nas_ip":"10.0.0.1"}&context=collector&psw=collectortestpsw{code}
# Список заблокированных администратором абонентов по Nas IP 10.0.0.1
{code}http://169.254.80.82:8082/system_api/?model=Abonents&method1=collector_manager.users_blocked&arg1={"nas_ip":"10.0.0.1"}&context=collector&psw=collectortestpsw{code}
# Список авторизованных абонентов по Nas IP 10.0.0.1
{code}http://169.254.80.82:8082/system_api/?model=Abonents&method1=collector_manager.users_logged&arg1={"nas_ip":"10.0.0.1"}&context=collector&psw=collectortestpsw{code}

2. Список заблокированных администратором абонентов по Nas IP
*Ответ у всех 3 запросов в виде текста где в каждой строке:*
{code}'%(ip)s %(login)s %(snatip)s %(mac)s %(logged)s %(negbal)s %(blocked)s %(rate_in)s %(ceil_in)s %(burst_in)s %(rate_out)s %(ceil_out)s %(burst_out)s %(nas_ip)s %(cburst_in)s %(cburst_out)s'
{code}

{code}<ип адрес>:8082/system_api/?model=Abonents&method1=collector_manager.users_blocked&arg1={"nas_ip":"<ип адрес Nas>"}&context=collector&psw=<пароль>{code}
h3. API платежных систем

3. Список авторизованных абонентов по Nas IP
Провести платеж абоненту на 100р по номеру договора (можно так же подставить логин или IP-адрес) BILL0000003 от имени оператора SBERBANK_OSMP, ID платежа 100
{code}http://169.254.80.82:8082/system_api/?model=Abonents&method1=asr_fiscal_manager.act_pay&arg1={"contract_number":"BILL0000003","sum_in":"100","pay_operator":"SBERBANK_OSMP","pay_id_str":"1238989213892","act":"PAY"}&context=asr_fiscal&psw=fiscalpsw123{code}

{code}<ип адрес>:8082/system_api/?model=Abonents&method1=collector_manager.users_logged&arg1={"nas_ip":"<ип адрес Nas>"}&context=collector&psw=<пароль>{code}
Ответ у всех 3 запросов в виде текста где в каждой строке:
{code}'%(ip)s %(login)s %(snatip)s %(mac)s %(logged)s %(negbal)s %(blocked)s %(rate_in)s %(ceil_in)s %(burst_in)s %(rate_out)s %(ceil_out)s %(burst_out)s %(nas_ip)s %(cburst_in)s %(cburst_out)s'
h3. API 1С

# *Получить не синхронизированных абонентов*
Данные тоько абонентов группы с ID 1225
{code}http://169.254.80.82:8082/system_api/?model=Abonents&method1=api_1c_manager.api_1c_get_abonents&arg1={"parent_id":"1225"}&context=api_1c&psw=1ctestpsw{code}
# Получить детали финансовой операции
ID финансовой операции 54894
{code}http://169.254.80.82:8082/system_api/?model=FinanceOperations&method1=api_1c_manager.api_1c_get_fin_detail&arg1={"op_id":"54894"}&context=api_1c&psw=1ctestpsw{code}
# Создать абонента с кодом 1С
Абонент с именем "Иванов Иван Иванович", код 1C: code1c_589895403
{code}http://169.254.80.82:8082/system_api/?model=Abonents&method1=api_1c_manager.api_1c_create_abonent&arg1={"code1c":"code1c_589895403","name":"Иванов Иван Иванович"}&context=api_1c&psw=1ctestpsw{code}

h3. API личного кабинета

_Работает только с разрешенного IP_

# Авторизация по логину и паролю учетной записи
Логин testlogin, пароль testpsw
{code}
http://http://169.254.80.82:8082/system_api/?format=json&context=web&model=users&method1=web_cabinet.login&arg1={"login":"testlogin","passwd":"testpsw"}&
{code}
# Авторизация по IP
IP с которого производится авторизация - 10.20.30.41
{code}
http://http://169.254.80.82:8082/system_api/?format=json&context=web&model=users&method1=web_cabinet.try_auto_login&arg1={"src_ip":"10.20.30.41"}&
{code}
# Получить информацию об абоненте
После авторизации будет получен уникальный ID сессии по которому возможно авторизовать все прочие запросы на получение данных и изменение абонента, например Вы получили ID 54ds34jklji8ufds8u945jkl
{code}
http://http://169.254.80.82:8082/system_api/?format=json&context=web&model=users&method1=web_cabinet.user_info&arg1={"suid":"54ds34jklji8ufds8u945jkl"}&
{code}

h5. *API платежных систем.*
h2. Ошибка Context=$x is not defined

1. Провести платеж абоненту
{code}<ип адрес>:8082/system_api/?model=Abonents&method1=asr_fiscal_manager.act_pay&arg1={"contract_number":"<номер договора, логин или ип адрес>","sum_in":"<сумма платежа>","pay_operator":"<код платежного оператора>","pay_id_str":"<уникальный ид платежа со стороны платежной системы>","act":"PAY"}&context=collector&psw=<пароль>{code}
При запросах к api возвращается ошибка, например:

{code}
Context=asr_fiscal is not defined
Context=asr_cabinet is not defined
Context=collector is not defined
{code}

Решение:

Добавить необходимый context в /app/asr_billing/cfg/config в параметр _network\['api.context'\]_

{code}
network['api.context']='web cabinet collector api_1c base webcash asr_fiscal'
{code}

И перезапустить (_/app/asr_billing/service restart_) биллинг, чтобы изменения применились.

h2. Отладка

h3. Логи

API-запросы и ошибки их выполнения логируются в следующие файлы:
{code}/app/asr_billing/var/log/django/error.log
/app/asr_billing/var/log/django/system_api.log{code}

По-умолчанию, уровень логирования установлен в *error*. Для того чтобы логировать все запросы, установите в конфигурационном файле */app/asr_billing/cfg/config* уровень логирования *django* в *info*:
* Откройте конфигурационный файл биллинга в любом удобном текстовом редакторе, например _vim_:
{code}vim /app/asr_billing/cfg/config{code}
* Найдите в файле опцию *app\['django.loglevel'\]=* и установите её в значение *info*:
{code}app['django.loglevel']='info'{code}
* Перезапустите web-сервер биллинга:
{code}chroot /app/asr_billing/ service admin_web_server restart{code}
По окончанию отладки, рекомендуется вернуть уровень логирования в статус *error*.

h3. Отправка запросов из терминала

Отправить запрос к API биллинга в терминале можно командой {{wget}}, например:
{code}
wget -q -O - 'http://169.254.80.82:8082/system_api/?model=FinanceOperations&method1=api_1c_manager.api_1c_get_fin_opers_with_context&arg1={"abonent_id": 1361, "op_type": 2, "sdate": "2023-03-01T00:00:00", "edate": "2023-04-03T00:00:00"}&format=json&context=api_1c&psw=1ctestpsw'
{code}
Опция {{-q}} отключит вывод служебных сообщений wget, опция {{-O -}} выведет ответ API в терминал.