urfaclient на php

Вопросы по сопутствующим продуктам производства партнеров
Ответить
artemus
Сообщения: 8
Зарегистрирован: Чт ноя 20, 2008 21:41

Сообщение artemus »

Забыл упоминуть ds-а, тоже откликнулся, большое спасибо.

Аватара пользователя
ds
Сообщения: 380
Зарегистрирован: Пн сен 18, 2006 14:06

Сообщение ds »

На 008 кто нибудь проверял админские функции работают или нет? А то виртуалку ставить неохота пока :(

satspace
Сообщения: 6
Зарегистрирован: Ср июн 02, 2010 14:59

Сообщение satspace »

Ребят, выручайте, ну все голову уже сломали
1. Создали клиента, все ок
2. Пытаемся ему добавить тариф

# Добавляем новый тариф
$newtarif = array (
'user_id' => $user_id,
'account_id' => $account_id,
'tariff_current' => $tariff_id,
'tariff_next' => $tariff_id,
'discount_period_id' => $discount_period_id,
'tariff_link_id' => 0
);


$tp = $utm->rpcf_link_user_tariff( $newtarif );
if ( !$tp['tariff_link_id'] ) {
print "ERROR ADDING TP\n";
print_r( $newtarif );
print_r( $tp );
exit;
}

И ошибка

Error calling function rpcf_link_user_tariff ERROR ADDING TP

Ну где мы буксуем? Выручайте, уже второй день голову ломаем?

Аватара пользователя
Chrst
Сообщения: 370
Зарегистрирован: Пт май 11, 2007 09:28
Откуда: Медиахолдинг "ЛеККС"
Контактная информация:

Сообщение Chrst »

satspace писал(а):Ребят, выручайте, ну все голову уже сломали
1. Создали клиента, все ок
2. Пытаемся ему добавить тариф

# Добавляем новый тариф
$newtarif = array (
'user_id' => $user_id,
'account_id' => $account_id,
'tariff_current' => $tariff_id,
'tariff_next' => $tariff_id,
'discount_period_id' => $discount_period_id,
'tariff_link_id' => 0
);


$tp = $utm->rpcf_link_user_tariff( $newtarif );
if ( !$tp['tariff_link_id'] ) {
print "ERROR ADDING TP\n";
print_r( $newtarif );
print_r( $tp );
exit;
}

И ошибка

Error calling function rpcf_link_user_tariff ERROR ADDING TP

Ну где мы буксуем? Выручайте, уже второй день голову ломаем?
В свое время делал так

Код: Выделить всё

    $tariff_link_id = $urfa_admin->rpcf_link_user_tariff($user_id,$account_id,$tariff_current,$tariff_next,$discount_period_id);
возможно разница в написании функции (передаваемые параметры), но работало на ура.

Код: Выделить всё

function rpcf_link_user_tariff($user_id,$account_id=0,$tariff_current,$tariff_next,$discount_period_id,$tariff_link_id=0) { //0x3018
                $ret=array();
                if (!$this->connection->urfa_call(0x3018)) {
                        print "Error calling function ". __FUNCTION__ ."\n";
                        return FALSE;
                }
                $packet = $this->connection->getPacket();
                $packet->DataSetInt($user_id);
                $packet->DataSetInt($account_id);
                $packet->DataSetInt($tariff_current);
                $packet->DataSetInt($tariff_next);
                $packet->DataSetInt($discount_period_id);
                $packet->DataSetInt($tariff_link_id);
                $this->connection->urfa_send_param($packet);
                if ($x = $this->connection->urfa_get_data()) {
                        $ret['tariff_link_id'] = $x->DataGetInt();
                        $this->connection->urfa_get_data();
                        return $ret;
                }
        }

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

вот именно в этом и разница. На входе же список переменных, а не массив.

satspace
Сообщения: 6
Зарегистрирован: Ср июн 02, 2010 14:59

Сообщение satspace »

mikkey finn писал(а):вот именно в этом и разница. На входе же список переменных, а не массив.
С этим разобрались.
По ходу выяснилась следующая проблема, новый экземпляр класса URFAClient_Admin, позволяет сделать только один запрос любой функции, а следующий запрос выдает ошибку вызова функции. Что бы выполнить последовательно например запрос тарифов, а потом добавить его пользователю, необходимо создавать каждый раз новый класс. С чем это может быть связано?

И еще непонятка на запрос rpcf_get_services_list(), вылазиет

Код: Выделить всё

array(2) {
  ["count"]=>
  int(6)
  ["services"]=>
  array(6) {
    [0]=>
    array(6) {
      ["service_id"]=>
      NULL
      ["service_name"]=>
      NULL
      ["service_type"]=>
      NULL
      ["service_comment"]=>
      NULL
      ["service_status"]=>
      NULL
      ["tariff_name"]=>
      string(0) ""
    }
    [1]=>
    array(6) {
      ["service_id"]=>
      NULL
      ["service_name"]=>
      NULL
      ["service_type"]=>
      NULL
      ["service_comment"]=>
      NULL
      ["service_status"]=>
      NULL
      ["tariff_name"]=>
      string(0) ""
    }
    [2]=>
    array(6) {
      ["service_id"]=>
      NULL
      ["service_name"]=>
      NULL
      ["service_type"]=>
      NULL
      ["service_comment"]=>
      NULL
      ["service_status"]=>
      NULL
      ["tariff_name"]=>
      string(0) ""
    }
    [3]=>
    array(6) {
      ["service_id"]=>
      NULL
      ["service_name"]=>
      NULL
      ["service_type"]=>
      NULL
      ["service_comment"]=>
      NULL
      ["service_status"]=>
      NULL
      ["tariff_name"]=>
      string(0) ""
    }
    [4]=>
    array(6) {
      ["service_id"]=>
      NULL
      ["service_name"]=>
      NULL
      ["service_type"]=>
      NULL
      ["service_comment"]=>
      NULL
      ["service_status"]=>
      NULL
      ["tariff_name"]=>
      string(0) ""
    }
    [5]=>
    array(6) {
      ["service_id"]=>
      NULL
      ["service_name"]=>
      NULL
      ["service_type"]=>
      NULL
      ["service_comment"]=>
      NULL
      ["service_status"]=>
      NULL
      ["tariff_name"]=>
      string(0) ""
    }
  }
}
хотя должны быть реальные названия, и service_id

Аватара пользователя
ds
Сообщения: 380
Зарегистрирован: Пн сен 18, 2006 14:06

Сообщение ds »

satspace писал(а): По ходу выяснилась следующая проблема, новый экземпляр класса URFAClient_Admin, позволяет сделать только один запрос любой функции, а следующий запрос выдает ошибку вызова функции. Что бы выполнить последовательно например запрос тарифов, а потом добавить его пользователю, необходимо создавать каждый раз новый класс. С чем это может быть связано?
viewtopic.php?t=6402&postdays=0&postorder=asc&start=555 начиная с моего поста
Подсказка: проблема в urfa_get_data.
Последний раз редактировалось ds Чт июн 03, 2010 13:07, всего редактировалось 1 раз.

satspace
Сообщения: 6
Зарегистрирован: Ср июн 02, 2010 14:59

Сообщение satspace »

ds писал(а):
satspace писал(а): По ходу выяснилась следующая проблема, новый экземпляр класса URFAClient_Admin, позволяет сделать только один запрос любой функции, а следующий запрос выдает ошибку вызова функции. Что бы выполнить последовательно например запрос тарифов, а потом добавить его пользователю, необходимо создавать каждый раз новый класс. С чем это может быть связано?
viewtopic.php?t=6402&postdays=0&postorder=asc&start=555 начиная с моего поста
Подсказка: проблема в urfa_get_data.
.
Спасибо, с этим разобрались, сейчас проблема по запросу rpcf_get_services_list(), не можем разобраться с присвоением сервисной связки, похоже из за того что у нас пло этому запросу нет описания, а везде NULL

satspace
Сообщения: 6
Зарегистрирован: Ср июн 02, 2010 14:59

Сообщение satspace »

Услуги так и не дергаются, пришлось тарифы подставлять в ручную. Пока все идет по плану:)

Ну все победили, все работает, клиенты добавляются, сумма добавляется, тариф на лету меняется, спасибо, кто поддерживал.

ctyz
Сообщения: 30
Зарегистрирован: Пн фев 09, 2009 11:24

Сообщение ctyz »

ds писал(а):На 008 кто нибудь проверял админские функции работают или нет? А то виртуалку ставить неохота пока :(
проверял, кроме тех функций который написаны нетапом у них в utm php интерфейсе(пользовательские) ничего не работает, они там поменяли что-то в протоколе связи между админкой и ядром, по debug я заметил только одно отличие.

при заходе админкой UTM_admin 5.2.008

Код: Выделить всё

SSL type requested: SSLv3(4)
при авторизации через php

Код: Выделить всё

SSL type requested: SSLv3(2)

mf.viper
Сообщения: 59
Зарегистрирован: Ср мар 25, 2009 10:33

Сообщение mf.viper »

Надо удалить у абонента периодическую услугу.
Кто нибудь пробовал такое делать ?

nicol@s
Сообщения: 114
Зарегистрирован: Ср окт 14, 2009 15:52

Сообщение nicol@s »

Я пробовал. Вот кусок кода из php-сценария:

Код: Выделить всё

include("/usr/local/www/apache22/data/test/urfaphp/DBConfig.php");
require_once("/usr/local/www/apache22/data/test/urfaphp/URFAClient.php");
include ("/usr/local/www/apache22/data/test/urfaphp/URFAConfig.php");
try
{
    $urfa_admin = new URFAClient_Admin($UTMCore_Login,$UTMCore_Password);
}
catch (Exception $exception)
{
    echo "Error in line ", $exception->getLine();
    echo $exception->getMessage();
}
mysql_connect($DB_HOST);
mysql_select_db($DB_BASE);
$extip = "SELECT * FROM service_links WHERE tariff_link_id=0 AND is_deleted=0 AND service_id=100 limit 1;";
$query = mysql_query($extip);
$data = mysql_fetch_assoc($query);
//удаляем улугу
$delete = $urfa_admin->rpcf_delete_slink($data['id']);

vobbs
Сообщения: 70
Зарегистрирован: Вт янв 22, 2008 17:02

Сообщение vobbs »

Люди добрые, подскажите, пожалуйста, вот такая ошибка:

Код: Выделить всё

PHP Fatal error:  Uncaught exception 'Exception' with message 'Error code 0' in /usr/home/hicks/utm/urfa/URFAClient_Packet.php:27
Stack trace:
#0 /usr/home/hicks/utm/urfa/URFAClient_Connection.php(42): URFAClient_Packet->read()
#1 /usr/home/hicks/utm/urfa/URFAClient_Connection.php(15): URFAClient_Connection->login('555555', 'errrw', false)
#2 /usr/home/hicks/utm/urfa/URFAClient.php(24): URFAClient_Connection->__construct('127.0.0.1', '11758', '555555', 'errrw', false)
#3 /usr/home/hicks/utm/urfa/example.php(17): URFAClient->__construct('555555', 'errrw', '127.0.0.1', '11758')
#4 {main}
  thrown in /usr/home/hicks/utm/urfa/URFAClient_Packet.php on line 27

Fatal error: Uncaught exception 'Exception' with message 'Error code 0' in /usr/home/hicks/utm/urfa/URFAClient_Packet.php:27
Stack trace:
#0 /usr/home/hicks/utm/urfa/URFAClient_Connection.php(42): URFAClient_Packet->read()
#1 /usr/home/hicks/utm/urfa/URFAClient_Connection.php(15): URFAClient_Connection->login('555555', 'errrw', false)
#2 /usr/home/hicks/utm/urfa/URFAClient.php(24): URFAClient_Connection->__construct('127.0.0.1', '11758', '555555', 'errrw', false)
#3 /usr/home/hicks/utm/urfa/example.php(17): URFAClient->__construct('555555', 'errrw', '127.0.0.1', '11758')
#4 {main}
  thrown in /usr/home/hicks/utm/urfa/URFAClient_Packet.php on line 27

в функции read() не совпадает условие

if ($this->version != ord(fread($this->sock, 1)))

*===
$this->version = 35
ord(fread($this->sock, 1)) = 0

В какую сторону можно подкопать дальше?

PHP 5.2.13
UTM 5.2.1-008

Аватара пользователя
ds
Сообщения: 380
Зарегистрирован: Пн сен 18, 2006 14:06

Сообщение ds »

ctyz писал(а):Люди помогите понять почему utm 008 не хочет выполнять URFAClient_Admin функции через php
в логах ядра пишет

Код: Выделить всё

 Info  &#58; Apr 16 14&#58;55&#58;27 RPCConn&#91;SSL&#93;<init@11.3.3.10>&#58; Access granted to &#91;SSL&#93;<init@11.3.3.10> &#40;UID&#58; -1&#41;
?Debug &#58; Apr 16 14&#58;55&#58;27 RPCConn&#91;SSL&#93;<init@11.3.3.10>&#58; SSL type requested&#58; SSLv3&#40;2&#41;
 Info  &#58; Apr 16 14&#58;55&#58;27 RPCConn&#91;SSL&#93;<init@11.3.3.10>&#58; Request for function <0x3010> not permitted
 Warn  &#58; Apr 16 14&#58;55&#58;27 RPCConn&#91;SSL&#93;<init@11.3.3.10>&#58; Session closed
?Debug &#58; Apr 16 14&#58;55&#58;27 RPCConn&#91;SSL&#93;<init@11.3.3.10>&#58; Session stored for UID -1 from <11.3.3.10>
?Debug &#58; Apr 16 14&#58;55&#58;27 RPCConn&#91;SSL&#93;<init@11.3.3.10>&#58; Session closed...
почему то пишет not permited, хотя права у пользователя полные.
Вот на последней 008rc1 0x3010 (rpcf_get_tariffs_list) все отлично работает

Код: Выделить всё


 ./test.php
Array
&#40;
    &#91;count&#93; => 2
    &#91;tariffs&#93; => Array
        &#40;
            &#91;0&#93; => Array
                &#40;
                    &#91;id&#93; => 1
                    &#91;name&#93; => Новый тариф
                    &#91;create_date&#93; => 1278433810
                    &#91;who_create&#93; => -1
                    &#91;login&#93; => init
                    &#91;change_create&#93; => 1278433810
                    &#91;who_change&#93; => -1
                    &#91;login_change&#93; => init
                    &#91;expire_date&#93; => 2000000000
                    &#91;is_blocked&#93; => 0
                    &#91;balance_rollover&#93; => 0
                &#41;

            &#91;1&#93; => Array
                &#40;
                    &#91;id&#93; => 2
                    &#91;name&#93; => test tariff
                    &#91;create_date&#93; => 1278434070
                    &#91;who_create&#93; => -1
                    &#91;login&#93; => init
                    &#91;change_create&#93; => 1278434070
                    &#91;who_change&#93; => -1
                    &#91;login_change&#93; => init
                    &#91;expire_date&#93; => 2000000000
                    &#91;is_blocked&#93; => 0
                    &#91;balance_rollover&#93; => 0
                &#41;

        &#41;

&#41;
Всет таки права, либо еще где то другой пароль/логин в коде потерялись.

Код: Выделить всё

Array
&#40;
    &#91;core_version&#93; => 5.2.1
&#41;
Array
&#40;
    &#91;core_build&#93; => 008
&#41;
Array
&#40;
    &#91;user_id&#93; => 1
    &#91;accounts_count&#93; => 1
    &#91;accounts&#93; => Array
        &#40;
            &#91;0&#93; => Array
                &#40;
                    &#91;id&#93; => 1
                    &#91;name&#93; => auto create account
                &#41;

        &#41;

    &#91;login&#93; => test
    &#91;password&#93; => d36211b6
    &#91;basic_account&#93; => 1
    &#91;full_name&#93; =>
    &#91;create_date&#93; => 1278434522
    &#91;last_change_date&#93; => 1278434522
    &#91;who_create&#93; => -1
    &#91;who_change&#93; => -1
    &#91;is_juridical&#93; => 0
    &#91;jur_address&#93; =>
    &#91;act_address&#93; =>
    &#91;work_tel&#93; =>
    &#91;home_tel&#93; =>
    &#91;mob_tel&#93; =>
    &#91;web_page&#93; =>
    &#91;icq_number&#93; =>
    &#91;tax_number&#93; =>
    &#91;kpp_number&#93; =>
    &#91;bank_id&#93; => 0
    &#91;bank_account&#93; =>
    &#91;comments&#93; =>
    &#91;personal_manager&#93; =>
    &#91;connect_date&#93; => 1278352800
    &#91;email&#93; =>
    &#91;is_send_invoice&#93; => 0
    &#91;advance_payment&#93; => 0
    &#91;house_id&#93; => 0
    &#91;flat_number&#93; =>
    &#91;entrance&#93; =>
    &#91;floor&#93; =>
    &#91;district&#93; =>
    &#91;building&#93; =>
    &#91;passport&#93; =>
    &#91;parameters_count&#93; => 0
&#41;

vobbs
Сообщения: 70
Зарегистрирован: Вт янв 22, 2008 17:02

Сообщение vobbs »

ds, такая же ошибка

Код: Выделить всё

Info  &#58; Jul 07 12&#58;42&#58;59 RPCConn&#91;SSL&#93;<urfa@127.0.0.1>&#58; Access granted to &#91;SSL&#93;<urfa@127.0.0.1> &#40;UID&#58; -19&#41;
?Debug &#58; Jul 07 12&#58;42&#58;59 RPCConn&#91;SSL&#93;<urfa@127.0.0.1>&#58; SSL type requested&#58; SSLv3&#40;2&#41;
 Info  &#58; Jul 07 12&#58;42&#58;59 RPCConn&#91;SSL&#93;<urfa@127.0.0.1>&#58; Request for function <0x3010> not permitted
 Warn  &#58; Jul 07 12&#58;42&#58;59 RPCConn&#91;SSL&#93;<urfa@127.0.0.1>&#58; Session closed
?Debug &#58; Jul 07 12&#58;42&#58;59 RPCConn&#91;SSL&#93;<urfa@127.0.0.1>&#58; Session stored for UID -19 from <127.0.0.1>
?Debug &#58; Jul 07 12&#58;42&#58;59 StreamManager&#58; connection <30> closed
?Debug &#58; Jul 07 12&#58;42&#58;59 RPCConn&#91;SSL&#93;<urfa@127.0.0.1>&#58; Session closed...
Код $packet->AttrGetInt(3) для любых админских функций ничего не возвращает.

Версия ядра - 5.2.1-008

Не мог бы ты выслать свой экземпляр дистрибутива на pay @ weba.ru ?
Последний раз редактировалось vobbs Ср июл 07, 2010 13:03, всего редактировалось 1 раз.

Ответить