У меня сейчас стоит задача написать страницу регистрации абонентов для монтажников и я столкнулся с непониманием, как добавить сервисную связку с IP-адресом и MAC-адресом абонента.
Сборка: 5.3-001
Работаю с помощью: https://github.com/k-shym/URFAClient
API.XML взял с самого сервера
На текущий момент у меня сделано так:
создаю пользователя:
Код: Выделить всё
rpcf_add_user_new=0x2125
Код: Выделить всё
rpcf_add_group_to_user=0x2552
Код: Выделить всё
rpcf_link_user_tariff=0x3018
Код: Выделить всё
rpcf_add_ip_slink_ex=0x2928
rpcf_add_iptraffic_service_link_ipv6=0x292c
На текущий момент функция из api.xml выглядит следующим образом:
Код: Выделить всё
<function name="rpcf_add_ip_slink_ex" id="0x2928">
<input>
<integer name="user_id"/>
<integer name="account_id" default="basic_account"/>
<integer name="service_id"/>
<integer name="tariff_link_id" default="0"/>
<integer name="discount_period_id"/>
<integer name="start_date" default="now()"/>
<integer name="expire_date" default="max_time()"/>
<integer name="unabon" default="0"/>
<integer name="unprepay" default="0"/>
<integer name="ip_groups_count" default="size(ip_address)"/>
<for name="i" from="0" count="size(ip_address)">
<ip_address name="ip" array_index="i"/>
<integer name="mask" array_index="i" default="-1"/>
<string name="mac" array_index="i" default=""/>
<string name="iptraffic_login" array_index="i" default=""/>
<string name="iptraffic_allowed_cid" array_index="i" default=""/>
<string name="iptraffic_password" array_index="i" default=""/>
<integer name="ip_not_vpn" array_index="i" default="0"/>
<integer name="dont_use_fw" array_index="i" default="0"/>
<integer name="router_id" array_index="i" default="0"/>
</for>
<integer name="quotas_count" default="size(quota)"/>
<for name="i" from="0" count="size(quota)">
<integer name="tclass_id" array_index="i"/>
<long name="quota" array_index="i"/>
</for>
</input>
<output>
<integer name="slink_id" />
</output>
</function>
Код: Выделить всё
$data['rpcf_add_ip_slink_ex'] = [
'user_id' => $userResponse['user_id'],
'account_id' => $userResponse['basic_account'],
'service_id' => $service_id,
'tariff_link_id' => $tariff_link_id['tariff_link_id'],
'discount_period_id' => $discount_periods['id'],
'unprepay' => 1,
'ip_address' => [
[
'ip' => $ip_address,
'mask' => $mask,
'mac' => $mac,
'ip_not_vpn' => $ip_not_vpn,
]
]
];
Код: Выделить всё
slink_id=0
Код: Выделить всё
Feb 17 16:15:24 ?Debug : bc9b4700 RPCConn[SSL]<init@127.0.0.1>: Call: 0x2928 (rpcf_add_iptraffic_service_link_ex)
Feb 17 16:15:24 ?Debug : bc9b4700 RPCConn[SSL]<init@127.0.0.1>: Real Call: 0x2928 (rpcf_add_iptraffic_service_link_ex)
Feb 17 16:15:24 ?Debug : bc9b4700 RPCServer@0.0.0.0: unabon=<1> unprepay=<0> recalc_type=<0> recalc_traffic=<0>
Feb 17 16:15:24 ERROR : bc9b4700 RPCServer@0.0.0.0: Exception in void* rpcf_add_iptraffic_service_link_ex(void*): #22
Feb 17 16:15:24 ?Debug : bc9b4700 RPCConn[SSL]<init@127.0.0.1>: Call 0x2928 (rpcf_add_iptraffic_service_link_ex) finished in 0.04 sec
- либо я использую не ту функцию
- либо помимо этого всего мне нужно сделать ещё что-то
- либо неправильно отправляю переменные API-Серверу