urfaclient на php

Вопросы по сопутствующим продуктам производства партнеров
Ответить
Kayfolom
Сообщения: 746
Зарегистрирован: Вс фев 12, 2006 17:15

Сообщение Kayfolom »

Magnum72 писал(а):
ЗЫ. Могу сделать поддержку сессий пользователя на уровне urfa, sid сохранить в кукисах или как в оригинале ?sid=blablabla
Правда не считаю это лучшим споcобом, т.к. для получения этого sid
сначала нужно залогиниться под системным пользователем, чтобы получить этот sid. На мой взгляд не гуд.

Может есть другие варианты? Просто чтоб унифицировать сразу хотелось бы
А для чего нужно хранить SID? Я за все время пользования офф урфа ни разу не задумался о использовании SID, а SID не более чем костыль для user5
Согласен. SID нафик. Мне пришлось в своем альтернативном утмтрее кучу мусорного кода добавлять - получение и хранения сида, в каждой процедуре проверку на то что сессия еще не истекла, а вдруг истекла, то муторные вызовы повторной авторизации.

Сейчас намного проще - авторизовался, вызвал функции, отвалился - просто праздник какой то ;)

bobr
Сообщения: 29
Зарегистрирован: Ср июл 18, 2007 11:09

Сообщение bobr »

try .. catch работает как часы, просто ошибка может не отображаться из-за настроек пхп (как и другие фатальные ошибки, как вызов несуществующей ф-ии) чтобы включить отображение можно прописать в начале скрипта

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

ini_set("display_errors", "1");
error_reporting(E_ALL);
или включить сие в php.ini, что не рекомендуется на продакшн сервере ессно.

Также, можно создать объект класса URFAClient_Admin (например) передав пустые '' параметры логина и пароля (здесь бы конструктор переопределить, для наглядности и простоты), и залогиниться вручную, вызвав метод login(), который и вернёт true|false в зависимости от "результата" попытки входа.

И вообще проверять существует ли пользак, логинясь под ним - это полнейшая жесть (кто-то так делал).

sid'ы в топку.

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

Сообщение Kayfolom »

Подскажите в чем может быть дело, включил ssl при коннекте, в логах пишет:

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

 Info  &#58; Feb 03 07&#58;51&#58;59 RPCConn&#58; Card user <user@127.0.0.1> is connecting
 Info  &#58; Feb 03 07&#58;51&#58;59 RPCConn&#91;SSL&#93;<user@127.0.0.1>&#58; Access granted to &#91;SSL&#93;<user@127.0.0.1> &#40;UID&#58; 1&#41;
?Debug &#58; Feb 03 07&#58;51&#58;59 RPCConn&#91;SSL&#93;<user@127.0.0.1>&#58; SSL type requested&#58; SSLv3&#40;2&#41;
 ERROR &#58; Feb 03 07&#58;51&#58;59 RPCConn&#91;SSL&#93;<user@127.0.0.1>&#58; SSL connection failed...
?Debug &#58; Feb 03 07&#58;51&#58;59 RPCConn&#91;SSL&#93;<user@127.0.0.1>&#58; Session stored for UID 1 from <127.0.0.1>
?Debug &#58; Feb 03 07&#58;51&#58;59 RPCConn&#91;SSL&#93;<user@127.0.0.1>&#58; Session closed...
Куда копать? В php ssl? У меня "OpenSSL 0.9.8b 04 May 2006" - видимо надо обновлять?

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

Сообщение Kayfolom »

В URFAClient_Packet.php не хватает метода DataSetDouble. Хотел реализовать <function name="rpcf_add_payment_for_account" id="0x3110"> - не вышло. Самому дописать ума не хватает ;)

И написание <function name="rpcf_save_account" id="0x2032"> тоже из за этого застопорилось.

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

Сообщение ds »

Kayfolom писал(а):В URFAClient_Packet.php не хватает метода DataSetDouble. Хотел реализовать <function name="rpcf_add_payment_for_account" id="0x3110"> - не вышло. Самому дописать ума не хватает ;)

И написание <function name="rpcf_save_account" id="0x2032"> тоже из за этого застопорилось.

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

    
function DataSetDouble&#40;$param&#41; &#123;
   $this->data&#91;&#93;=strrev&#40;pack&#40;"d",$param&#41;&#41;;
   $this->len += 12;
&#125;

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

function rpcf_save_account&#40;$account_id,$account, $block_start_date, $block_end_date, $block_recalc_abon, $block_recalc_prepaid, $unlimited ,$discount_period_id&#41; &#123; //0x2032
    if &#40;!urfa_call&#40;0x2032&#41;&#41; &#123;
        print "Error calling function ". __FUNCTION__ ."\n";
        return FALSE;
    &#125;
    if &#40;$block_start_date == -1&#41;
       $block_start_date = now&#40;&#41;;
    if &#40;$block_end_date == -1&#41;
        $block_end_date = max_time&#40;&#41;;

    $packet = new Packet&#40;&#41;;
    $packet->DataSetInt&#40;$account_id&#41;;
    $packet->DataSetInt&#40;$discount_period_id&#41;;
    $packet->DataSetDouble&#40;$account&#91;'credit'&#93;&#41;;
    $packet->DataSetInt&#40;$account&#91;'is_blocked'&#93;&#41;;
    if &#40;$account&#91;'is_blocked'&#93;!=0&#41; &#123;
         $packet->DataSetInt&#40;$block_start_date&#41;;
         $packet->DataSetInt&#40;$block_end_date&#41;;
    &#125;
    $packet->DataSetInt&#40;$account&#91;'dealer_account_id'&#93;&#41;;
    $packet->DataSetDouble&#40;$account&#91;'vat_rate'&#93;&#41;;
    $packet->DataSetDouble&#40;$account&#91;'sale_tax_rate'&#93;&#41;;
    $packet->DataSetInt&#40;$account&#91;'int_status'&#93;&#41;;
    $packet->DataSetInt&#40;$block_recalc_abon&#41;;
    $packet->DataSetInt&#40;$block_recalc_prepaid&#41;;
    $packet->DataSetInt&#40;$unlimited&#41;;
    urfa_send_param&#40;$packet&#41;;
    urfa_get_data&#40;&#41;;
&#125;

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

Сообщение Kayfolom »

Спасибо! :)

Вот внесение платежа, протестированно - работает, правда параметров чуток убавил

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

function rpcf_add_payment_for_account&#40;$account_id,$payment,$payment_date,$burn_date,$payment_method,$admin_comment='',$comment='',$payment_ext_number=''&#41; &#123; //0x3110
	    $ret=array&#40;&#41;;
	    if &#40;!$this->connection->urfa_call&#40;0x3110&#41;&#41; &#123; 
		       print "Error calling function ". __FUNCTION__ ."\n";
		       return FALSE;
	    &#125;
        $unused=0;
		$currency_id=810;
		$payment_to_invoice=0;
		$turn_on_inet=0;
		$packet = $this->connection->getPacket&#40;&#41;;
	    $packet->DataSetInt&#40;$account_id&#41;;
	    $packet->DataSetInt&#40;$unused&#41;;
	    $packet->DataSetDouble&#40;$payment&#41;;
	    $packet->DataSetInt&#40;$currency_id&#41;;
	    $packet->DataSetInt&#40;$payment_date&#41;;
	    $packet->DataSetInt&#40;$burn_date&#41;;
	    $packet->DataSetInt&#40;$payment_method&#41;;
	    $packet->DataSetString&#40;$admin_comment&#41;;
	    $packet->DataSetString&#40;$comment&#41;;
	    $packet->DataSetString&#40;$payment_ext_number&#41;;
	    $packet->DataSetInt&#40;$payment_to_invoice&#41;;
	    $packet->DataSetInt&#40;$turn_on_inet&#41;;
	    $this->connection->urfa_send_param&#40;$packet&#41;;
	    if &#40;$x = $this->connection->urfa_get_data&#40;&#41;&#41; &#123;
	        $ret&#91;'payment_transaction_id'&#93;=$x->DataGetInt&#40;&#41;;
	        $this->connection->urfa_get_data&#40;&#41;;
	    &#125;
	    return $ret;
	&#125;

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

Сообщение Kayfolom »

Вопрос по логике установки поля Кредит:
1. Вызываем "rpcf_get_accountinfo" id="0x2030"
2. Меняем double name="credit" на нужное значение
3. Вызываем "rpcf_save_account" id="0x2032", передавая все параметры полученные ранее и изменный Кредит.

Все верно? Проще способа нет?

ЗЫ. Видимо единственный способ. Проверил логи - и консольная админка и родная делает именно так.

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

Сообщение Kayfolom »

Хм, обнаружил багофичу.
rpcf_get_accountinfo($account_id) //0x2030 возвращает
<integer name="block_recalc_abon"/>
<integer name="block_recalc_prepaid"/>
в инвертированном состоянии.
Т.е. следующий код установит вам флажки "Не списывать абон. плату" и "Уменьшать предоплаченный трафик"

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

$accountinfo = $urfa_admin->rpcf_get_accountinfo&#40;2&#41;;  //0x2030
$urfa_admin->rpcf_save_account&#40;2,$accountinfo, 0, 0, 0, 0, 0, 0&#41;;  //0x2032 
Добавлено позже - сорри, это я протупил, не заметил что эти параметры отдельно передаются в функцию. Кстати зачем, они же имеются в массиве аккаунт?

Аватара пользователя
BlackJack
Сообщения: 35
Зарегистрирован: Чт янв 29, 2009 08:56
Откуда: Voskresensk

Сообщение BlackJack »

можно на мыло плиз скинуть Урфу со всеми реализованными функциями .please. a.kislov(@)ncv.ru

bobr
Сообщения: 29
Зарегистрирован: Ср июл 18, 2007 11:09

Сообщение bobr »

упс, а дид ит эгейн %) ... нельзя посты удалять :\
Последний раз редактировалось bobr Ср фев 04, 2009 13:54, всего редактировалось 1 раз.

Аватара пользователя
BlackJack
Сообщения: 35
Зарегистрирован: Чт янв 29, 2009 08:56
Откуда: Voskresensk

Сообщение BlackJack »

bobr писал(а):упс, %)
О_о что это?

Аватара пользователя
BlackJack
Сообщения: 35
Зарегистрирован: Чт янв 29, 2009 08:56
Откуда: Voskresensk

Re: urfaclient на php

Сообщение BlackJack »

ds писал(а): Последняя версия http://62.168.232.78/cli/urfaclient-1.0b4.tar.gz
скинь мне на мыло пожалуйста . . . a.kislov@ncv.ru

Аватара пользователя
detx
Сообщения: 346
Зарегистрирован: Вт мар 11, 2008 12:00
Откуда: Нижний Новгород

Re: urfaclient на php

Сообщение detx »

BlackJack писал(а):
ds писал(а): Последняя версия http://62.168.232.78/cli/urfaclient-1.0b4.tar.gz
скинь мне на мыло пожалуйста . . . a.kislov@ncv.ru
И мне скиньте пожалуйста
detx@list.ru

Аватара пользователя
BlackJack
Сообщения: 35
Зарегистрирован: Чт янв 29, 2009 08:56
Откуда: Voskresensk

Re: urfaclient на php

Сообщение BlackJack »

detx писал(а): И мне скиньте пожалуйста
detx@list.ru
щас пришлю

starchik
Сообщения: 461
Зарегистрирован: Сб ноя 22, 2008 22:07

Сообщение starchik »

намыль и мне плз djstarchik@mail.ru

Ответить