urfaclient на php

Вопросы по сопутствующим продуктам производства партнеров
Ответить
Cmak
Сообщения: 34
Зарегистрирован: Чт мар 26, 2009 07:43

Сообщение Cmak »

Спасибо cjcrazy и Chrst!

Интересно почему именно эти цифры :wink:

Типы блокировок

Cmak
Сообщения: 34
Зарегистрирован: Чт мар 26, 2009 07:43

Сообщение Cmak »

Дальше веселей, добавляю пользователя

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

rpcf_add_user
Далее хочу повесить аккаунт на пользователя

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

rpcf_add_account
Сразу выдает ошибку "Error calling function ... ",
может надо перед этим вызвать ещё какую-нибудь функцию?

Если же сделать выход - вход то работает, но это не нормально :(

ph4n70m_d
Сообщения: 19
Зарегистрирован: Чт май 14, 2009 09:53

Сообщение ph4n70m_d »

приветствую всех.
Народ не могли бы подсказать

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

@ini_set("display_errors", "1");
error_reporting(E_ALL);

require_once("./URFAClient.php");

echo "<pre>";
$urfa_admin = new URFAClient_Admin&#40;"123", "123"&#41;;
$urfa_user5 = $urfa_admin->getURFAClient_User5&#40;"user", "321"&#41;;
$traffic = $urfa_user5->rpcf_user5_traffic_report&#40;mktime&#40;0,0,0,1,1,2009&#41;, date&#40;'U'&#41;&#41;;
print_r &#40;$traffic&#41;;
echo "</pre>";
?>
при выполнении вываливается ошибка
Fatal error: Call to undefined function bcmul() in /usr/www/URFAClient_Packet.php on line 210

хотя по платежам норм работает также сделано

masis
Сообщения: 39
Зарегистрирован: Ср фев 18, 2009 13:30
Откуда: Н.Новгород

Сообщение masis »

ph4n70m_d писал(а):при выполнении вываливается ошибка
Fatal error: Call to undefined function bcmul() in /usr/www/URFAClient_Packet.php on line 210
в php должен быть bcmath

ph4n70m_d
Сообщения: 19
Зарегистрирован: Чт май 14, 2009 09:53

Сообщение ph4n70m_d »

благодарствую :)

ph4n70m_d
Сообщения: 19
Зарегистрирован: Чт май 14, 2009 09:53

Сообщение ph4n70m_d »

И вновь здраствуйте :) подскажите плиз...
о5 фигня...
$payment = $urfa_user5->rpcf_user5_payments_report(mktime(0,0,0,1,1,2009), mktime(0,0,0,15,5,2009));

показывает платежи нормально за этот период

при этом если я выставляю чтоб показал за месяц например за март т.е. с 1,3,2009 по 1,4,2009

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

Такс... с этиму уже разобрался при помощи функции strtotime() :)

integral
Сообщения: 75
Зарегистрирован: Чт авг 14, 2008 14:15

Сообщение integral »

Не могли бы скинуть какую-нибудь рабочую версию на integral_0@mail.ru
Заранее спасибо.

Kayfolom
Сообщения: 746
Зарегистрирован: Вс фев 12, 2006 17:15

Сообщение Kayfolom »

Какая то проблема с вызовом rpcf_add_discount_period //0x2603

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

    <function name="rpcf_add_discount_period" id="0x2603">
      <input>
	 <integer name="id" />
	 <integer name="start" />
	 <integer name="expire" />
	 <integer name="periodic_type_t" />
	 <integer name="cd" />
	 <integer name="di" />
      </input>
      <output>
      </output>
    </function>
Код функции

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

function rpcf_add_discount_period&#40;$id,$start,$expire,$periodic_type_t,$cd,$di&#41; &#123; //0x2603
		$ret=0;
		if &#40;!$this->connection->urfa_call&#40;0x2603&#41;&#41; &#123;
			print "Error calling function ". __FUNCTION__ ."\n";
			return FALSE;
		&#125;
		$packet = $this->connection->getPacket&#40;&#41;;
		$packet->DataSetInt&#40;$id&#41;;
		$packet->DataSetString&#40;$start&#41;;
		$packet->DataSetInt&#40;$expire&#41;;
		$packet->DataSetInt&#40;$periodic_type_t&#41;;
		$packet->DataSetInt&#40;$cd&#41;;
		$packet->DataSetInt&#40;$di&#41;;
		$this->connection->urfa_send_param&#40;$packet&#41;;
		$this->connection->urfa_get_data&#40;&#41;;
	&#125;
Существующий РП с сериал_ид 60719, пытаюсь менять дату конца.
Вызов осуществляю так:

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

$urfa_admin = new URFAClient_Admin&#40;$UTMCore_Login, $UTMCore_Password&#41;;
$id = 60719;
$start = 1242504000;
$expire = strtotime&#40;"+1 day"&#41;;
$periodic_type_t = 3;
$cd = 0;
$di = 0;
$urfa_admin->rpcf_add_discount_period&#40;$id,$start,$expire,$periodic_type_t,$cd,$di&#41;; //0x2603
РП не меняется, в дебаге

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

?Debug &#58; May 26 13&#58;23&#58;44 RPCConn<web@127.0.0.1>&#58; Call&#58; 0x2603 &#40;rpcf_add_discount_period&#41;
?Debug &#58; May 26 13&#58;23&#58;44 RPCConn<web@127.0.0.1>&#58; Real Call&#58; 0x2603 &#40;rpcf_add_discount_period&#41;
 ERROR &#58; May 26 13&#58;23&#58;44 RPCServer@0.0.0.0&#58; Exception in rpcf_add_discount_period&#58; #22
?Debug &#58; May 26 13&#58;23&#58;44 RPCConn<web@127.0.0.1>&#58; Call 0x2603 &#40;rpcf_add_discount_period&#41; finished...
Я в тупике. Глянте свежим взглядом, где я накосячил?

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

Сообщение Chrst »

Kayfolom писал(а):Какая то проблема с вызовом
Я в тупике. Глянте свежим взглядом, где я накосячил?
Ну то, что заметил на первый взгляд
в приведенном XML

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

 <integer name="start" />
, а в вызове

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

$packet->DataSetString&#40;$start&#41;;

Kayfolom
Сообщения: 746
Зарегистрирован: Вс фев 12, 2006 17:15

Сообщение Kayfolom »

Chrst, спасибо дорогой!!! Я так и думал что где то тривиальная опечатка, но глаз замылился, никак не мог увидеть. Все заработало, функцию добавил в wiki,

integral
Сообщения: 75
Зарегистрирован: Чт авг 14, 2008 14:15

Сообщение integral »

А где можно почитать как пользоваться этим urfaclient'ом ?

Kayfolom
Сообщения: 746
Зарегистрирован: Вс фев 12, 2006 17:15

Сообщение Kayfolom »

Настраиваю новый сервак. Софт - копия рабочего (билинг 005, php 5.1.6), разница разве что в битности - новая операционка 64бит (CentOS 5.3).

Функции Admin в urfaphp работают преврсходно. А вот функции user5 выдают "Error calling function". После глубокого копания выяснил, что функции всеже корректно работают и возвращают правильные значения. Затык в следующем коде:

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

	function urfa_call&#40;$code&#41;
	&#123;
	    $packet = $this->getPacket&#40;&#41;;
	    $packet->clean&#40;&#41;;
	    $packet->code = 201;
	    $packet->AttrSetInt&#40;$code, 3&#41;;
	    $packet->write&#40;&#41;;
	    
	    if &#40;!feof&#40;$this->socket&#41;&#41; &#123;
			$packet->clean&#40;&#41;;
			$packet->read&#40;&#41;;
			switch &#40;$packet->code&#41; &#123;
			    case 200&#58;
				if &#40;$packet->AttrGetInt&#40;3&#41; == $code&#41; // Вот здесь!!!!
				    return true;
				else 
				    return false;
			&#125;
	    &#125;
	&#125;
Если закоментить проверку if ($packet->AttrGetInt(3) == $code), то все работает отлично.
Может я как то криво php собрал?
Но функция AttrGetInt вроде ничего экстраординарного не использует:

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

    function AttrGetInt&#40;$code&#41;
    &#123;
		if &#40;isset&#40;$this->attr&#91;$code&#93;&#91;'data'&#93;&#41;&#41; &#123;
	    	    $x = unpack&#40;"N", $this->attr&#91;$code&#93;&#91;'data'&#93;&#41;;
		    return $x&#91;1&#93;;
		&#125; else &#123;
			return FALSE;
		&#125;
    &#125;
В чем может быть дело?

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

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

разная длина int на разных по разрядности платформах?

Systemnick
Сообщения: 14
Зарегистрирован: Пт янв 30, 2009 16:10
Откуда: Россия

Сообщение Systemnick »

Не должно быть.
h Hex-строка, сначала нижний разряд
H Hex-строка, сначала высший разряд
c знаковый char
C беззнаковый char
s знаковый short (всегда 16 бит, машинный байтовый порядок)
S беззнаковый short (всегда 16 бит, машинный байтовый порядок)
n беззнаковый short (всегда 16 бит, байтовый порядок big endian)
v беззнаковый short (всегда 16 бит, байтовый порядок little endian)
i signed integer (машиннозависимый размер и байтовый порядок)
I беззнаковый integer (машиннозависимый размер и байтовый порядок)
l signed long (всегда 32 бита, машинный байтовый порядок)
L беззнаковый long (всегда 32 бита, машинный байтовый порядок)
N беззнаковый long (всегда 32 бита, байтовый порядок big endian)
V беззнаковый long (всегда 32 бита, байтовый порядок little endian)
f float (машиннозависимый размер и представление)
d double (машиннозависимый размер и представление)
x NUL байт
X обратно на один байт
@ NUL-заполнение до абсолютной позиции
N не зависит от машины.
Хотя проверь на обоих машинах чё выдаст:

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

    function AttrGetInt&#40;$code&#41;
    &#123;
      if &#40;isset&#40;$this->attr&#91;$code&#93;&#91;'data'&#93;&#41;&#41; &#123;
              $x = unpack&#40;"N", $this->attr&#91;$code&#93;&#91;'data'&#93;&#41;;
              echo bin2hex&#40;$this->attr&#91;$code&#93;&#91;'data'&#93;&#41;;
          return $x&#91;1&#93;;
      &#125; else &#123;
         return FALSE;
      &#125;
    &#125;

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

Сообщение ds »

Kayfolom писал(а):Настраиваю новый сервак. Софт - копия рабочего (билинг 005, php 5.1.6), разница разве что в битности - новая операционка 64бит (CentOS 5.3).

Функции Admin в urfaphp работают преврсходно. А вот функции user5 выдают "Error calling function". После глубокого копания выяснил, что функции всеже корректно работают и возвращают правильные значения. Затык в следующем коде:

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

	function urfa_call&#40;$code&#41;
	&#123;
	    $packet = $this->getPacket&#40;&#41;;
	    $packet->clean&#40;&#41;;
	    $packet->code = 201;
	    $packet->AttrSetInt&#40;$code, 3&#41;;
	    $packet->write&#40;&#41;;
	    
	    if &#40;!feof&#40;$this->socket&#41;&#41; &#123;
			$packet->clean&#40;&#41;;
			$packet->read&#40;&#41;;
			switch &#40;$packet->code&#41; &#123;
			    case 200&#58;
				if &#40;$packet->AttrGetInt&#40;3&#41; == $code&#41; // Вот здесь!!!!
				    return true;
				else 
				    return false;
			&#125;
	    &#125;
	&#125;
Если закоментить проверку if ($packet->AttrGetInt(3) == $code), то все работает отлично.
Может я как то криво php собрал?
Но функция AttrGetInt вроде ничего экстраординарного не использует:

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

    function AttrGetInt&#40;$code&#41;
    &#123;
		if &#40;isset&#40;$this->attr&#91;$code&#93;&#91;'data'&#93;&#41;&#41; &#123;
	    	    $x = unpack&#40;"N", $this->attr&#91;$code&#93;&#91;'data'&#93;&#41;;
		    return $x&#91;1&#93;;
		&#125; else &#123;
			return FALSE;
		&#125;
    &#125;
В чем может быть дело?
Я проверю в понедельник. На Fedora 8 64bit работало вроде.

Ответить