Страница 1 из 2

API

Добавлено: 2010-10-20 16:47:03
anatooly
Кто может поделиться сведениями от API, в документации о них очень скудно написано.

Как через APi узнать текущий баланс пользователя, его валюту, и как произвести автоматический вычит за услугу?

Выход так правильно делается, или нужно/можно ещё какие-то параметры передать:
http://{Domain}/API/Logout

Re: API

Добавлено: 2010-10-25 12:19:10
anatooly
Для выхода это тоже не работает: http://***/API/Logout?XMLHttpRequest=yes

Re: API

Добавлено: 2010-10-25 12:22:03
anatooly
***

Re: API

Добавлено: 2010-10-25 12:25:29
anatooly
Ура, это подходит:
$request = sprintf('http://***/API/Logout?XMLHttpRequest=yes&SessionID=%s', $_SESSION['SessionID']);

Хотя нет никаких входных параметров в \hosts\billing\comp\www\API\logout.comp

Re: API

Добавлено: 2010-10-25 18:19:55
anatooly

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

$request  = sprintf('http://***/API/UserPersonalDataChange?XMLHttpRequest=yes&SessionID=%s&Email=%s&Name=%s&Sign=%s',
                            $_SESSION['SessionID'],
                            $Email,
                            urlencode($Name),
                            urlencode($Sign) );


Смена некоторых учетных данных пользователя.

Re: API

Добавлено: 2010-10-27 13:09:12
anatooly
Как узнать баланс через АПИ текущего пользователя или стоимость услуги по ее ИД?

Re: API

Добавлено: 2010-10-27 14:51:02
Alex Keda
запросом к базе.
но это от администратора

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

   $Request = SPrintF('http://'.$BillingHost.'/Administrator/API/SelectDB?SessionID=%s&XMLHttpRequest=yes&TableID=%s&ColumnsIDs[]=ID&ColumnsIDs[]=Name&ColumnsIDs[]=CostMonth&ColumnsIDs[]=QuotaDisk&ColumnsIDs[]=QuotaDomains&ColumnsIDs[]=QuotaDBs&ColumnsIDs[]=QuotaFTP&ColumnsIDs[]=QuotaEmail&ColumnsIDs[]=QuotaDisk&ColumnsIDs[]=PackageID&Conditions[]=ServersGroupId=1&Conditions[]=GroupId=1&Conditions[]=IsActive=yes&SortOn=CostMonth',$SessionID,'HostingSchemes');
   $HostingSchemesAnswer1 = GetAnswer ($Request);

Re: API

Добавлено: 2010-11-19 4:37:12
arpscan
Добрый день!
Пробую создать счет через API, но что-то не получается. Регистрация, изменение учеток - все ок, а вот с созданием счета затык. Код по той же схеме, что и в других (работающих) случаях (например регистрация через /API/UserRegister).

Сначала регистрирую юзера через API, затем логинюсь опять через API, так что сессия создается и живет. Затем пытаюсь от имени этого пользователя создать себе новый счет:

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

function make_invoice($contractid, $summ) {
        $Args = Array(
               'ContractID'   => $contractid,
               'XMLHttpRequest' => 'yes',
               'PaymentSystemID'  => $_POST['PSystem'],
               'Summ'  => $summ
               );

   $Query = Http_Build_Query($Args);
   $Answer = @File_Get_Contents("http://testtest.com/API/InvoiceMake?".$Query."");
   if(!$Answer)
     return('Request error');
   #-------------------------------------------------------------------------------
   $Answer = @JSON_Decode($Answer,TRUE);
   if(!$Answer)
     return('Bad answer');
   #-------------------------------------------------------------------------------
   switch($Answer['Status']){
     case 'Error':
      #---------------------------------------------------------------------------
      $Error = $Answer['Error'];
      #---------------------------------------------------------------------------
      return($Error['String']);
     case 'Exception':
      #---------------------------------------------------------------------------
      $Exception = $Answer['Exception'];
      #---------------------------------------------------------------------------
      return($Exception['String']);
     case 'Ok':
      #---------------------------------------------------------------------------
      return "ok";
      #---------------------------------------------------------------------------
     default:
      return('Wrong status');
   }
}

echo make_invoice($contractid, $summ);


Запрос уходит как надо:
127.0.1.1 - - [19/Nov/2010:01:10:36 +0100] "GET /API/InvoiceMake?ContractID=8&XMLHttpRequest=yes&PaymentSystemID=WebMoney+WMR&Summ=500.00 HTTP/1.0" 200 6992 "-" "-"


Что имеем в итоге? Что бы я не послал в InvoiceMake - ответ всегда приходит Status = "Ok", а InvoiceID пустой. => счет не создается, в логи ничего по этому поводу не пишется. Не могу понять почему.
В случае с UserRegister, например, если посылаю какой-то параметр криво или не посылаю, то получаю ошибку в ответ. А InvoiceMake вообще не замечает этого и шлет "Ok"...

Заранее спасибо за помощь)

Re: API

Добавлено: 2010-11-20 12:11:48
Виталий
Положите файл DEBUG в корень системы где и jbs-error.log, посмотрите какие запросы уходят в базу и какие ошибки.

Re: API

Добавлено: 2010-11-20 21:34:30
arpscan
В общем-то дебаг не навел ни на какие мысли... Возможно, какие-то проблемы с авторизацией запроса. Но перед его выполнением я авторизуюсь и получаю SessionID...

Дебаг (то, что касается InvoiceMake):
[20:27:25.03] [JBs core]: система работала: 0.074167013168335
[20:27:25.11] [JBs core]: запуск системы (20.11.10)
[20:27:25.11] [JBs core]: тип интерфейса сервера (apache2handler)
[20:27:25.11] [JBs core]: IP-адрес сервера (127.0.1.1)
[20:27:25.11] [JBs core]: версия PHP интерпретатора (5.3.3-1ubuntu9.1)
[20:27:25.11] [JBs core]: операционная система (Linux axelllap 2.6.35-22-generic #33-Ubuntu SMP Sun Sep 19 20:34:50 UTC 2010 i686)
[20:27:25.11] [JBs core]: система запущена от имени пользователя (www-data)
[20:27:25.11] [JBs core]: осуществлен запрос с адреса (127.0.1.1)
[20:27:25.11] [JBs core]: REQUEST_URI=(/API/InvoiceMake?ContractID=7&XMLHttpRequest=yes&PaymentSystemID=WebMoney+WMR&Summ=500.00)
[20:27:25.11] [JBs core]: PATH=(:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/axell/apache:/home/axell:/home)
[20:27:25.11] [JBs core]: загрузка автозагружаемых классов и библиотек
[20:27:25.11] [JBs core]: загружается системный компонент (/home/axell/apache/hosts/billing/system/libs/auto/Permission.lib)
[20:27:25.11] [JBs core]: загружается системный компонент (/home/axell/apache/hosts/billing/system/libs/auto/Notifies.lib)
[20:27:25.11] [JBs core]: загружается системный компонент (/home/axell/apache/hosts/root/system/libs/auto/DB.lib)
[20:27:25.11] [JBs core]: загружается системный компонент (/home/axell/apache/hosts/root/system/libs/auto/Styles.lib)
[20:27:25.11] [JBs core]: загружается системный компонент (/home/axell/apache/hosts/root/system/libs/auto/String.lib)
[20:27:25.12] [JBs core]: загружается системный компонент (/home/axell/apache/hosts/root/system/libs/auto/IO.lib)
[20:27:25.12] [JBs core]: загружается системный компонент (/home/axell/apache/hosts/root/system/libs/auto/Comp.lib)
[20:27:25.13] [JBs core]: загружается системный компонент (/home/axell/apache/hosts/root/system/libs/auto/System.lib)
[20:27:25.13] [JBs core]: загружается системный компонент (/home/axell/apache/hosts/root/system/libs/auto/Links.lib)
[20:27:25.13] [JBs core]: загружается системный компонент (/home/axell/apache/hosts/root/system/libs/auto/Arrays.lib)
[20:27:25.13] [JBs core]: загружается системный компонент (/home/axell/apache/hosts/root/system/libs/auto/MemoryCache.lib)
[20:27:25.13] [JBs core]: загружается системный компонент (/home/axell/apache/hosts/root/system/libs/auto/Messages.lib)
[20:27:25.13] [JBs core]: загружается системный компонент (/home/axell/apache/hosts/root/system/libs/auto/Config.lib)
[20:27:25.13] [JBs core]: загружается системный компонент (/home/axell/apache/hosts/root/system/libs/auto/Crypt.lib)
[20:27:25.13] [JBs core]: загружается системный компонент (/home/axell/apache/hosts/root/system/libs/auto/Cache.lib)
[20:27:25.13] [JBs core]: загружается системный компонент (/home/axell/apache/hosts/root/system/libs/auto/Standard.lib)
[20:27:25.13] [JBs core]: загружается системный компонент (/home/axell/apache/hosts/root/system/libs/auto/Regulars.lib)
[20:27:25.13] [JBs core]: загружается системный компонент (/home/axell/apache/hosts/root/system/libs/auto/Args.lib)
[20:27:25.13] [JBs core]: загружается системный компонент (/home/axell/apache/hosts/root/system/classes/auto/Exception.class)
[20:27:25.13] [JBs core]: загружается системный компонент (/home/axell/apache/hosts/root/system/classes/auto/Tag.class)
[20:27:25.14] [JBs core]: загружается системный компонент (/home/axell/apache/hosts/root/system/classes/auto/MySQL.class)
[20:27:25.14] [JBs core]: внешний запрос сформирован как (__URI=/API/InvoiceMake)
[20:27:25.14] [JBs core]: загружается модуль (/home/axell/apache/hosts/billing/system/modules/auto/Redirects.mod)
[20:27:25.14] [JBs core]: загружается модуль (/home/axell/apache/hosts/billing/system/modules/auto/SetCookieSessionID.mod)
[20:27:25.14] [JBs core]: загружается модуль (/home/axell/apache/hosts/billing/system/modules/auto/SetCookieOwner.mod)
[20:27:25.14] [JBs core]: загружается модуль (/home/axell/apache/hosts/root/system/modules/auto/Security.mod)
[20:27:25.14] [Security module]: [проверка параметров]
[20:27:25.14] [Security module]: (ContractID) = (7)
[20:27:25.14] [Security module]: (XMLHttpRequest) = (yes)
[20:27:25.14] [Security module]: (PaymentSystemID) = (WebMoney WMR)
[20:27:25.14] [Security module]: (Summ) = (500.00)
[20:27:25.14] [JBs core]: загружается модуль (/home/axell/apache/hosts/root/system/modules/auto/Request.mod)
[20:27:25.14] [Request module]: [замена параметров]
[20:27:25.15] [MemoryCache_Get]: соединение с сервером кеширования установлено версия (1.4.5)
[20:27:25.15] [System_Load]: компонент системы (/home/axell/apache/hosts/root/system/classes/Session.class) был загружен
[20:27:25.16] [MySQL->Open]: связь как (root@localhost:3306) установлена
[20:27:25.16] [MySQL->Query]: SET NAMES `utf8`
[20:27:25.17] [MySQL->Query]: USE `jbs`
[20:27:25.17] [MySQL->Query]: SELECT `ID` FROM `Clauses` WHERE (`Partition` = '/API/InvoiceMake')
[20:27:25.17] [Exception]: [ROWS_NOT_FOUND]=(Записи не найдены)
[20:27:25.17] [!] [8]-Undefined index: SessionID в линии 36 файла /home/axell/apache/hosts/billing/system/modules/Main.mod
[20:27:25.18] [IO_Read]: открытие файла (/home/axell/apache/hosts/root/templates/Window.xml)
[20:27:25.18] [String_XML_Parse]: парсирование строки (245 bytes)
[20:27:25.20] [String_XML_Parse]: парсирование строки (610 bytes)
[20:27:25.21] [String_XML_Parse]: парсирование строки (193 bytes)
[20:27:25.21] [MySQL->Query]: SELECT `Value` FROM `Config` WHERE (`Param` = 'Copyright')
[20:27:25.23] [!] [8]-Undefined index: Email в линии 58 файла /home/axell/apache/core/Load.php(132) : eval()'d code
[20:27:25.26] [!] [1024]-[MemoryCache_Get]: не удалось извлечь объект в линии 93 файла /home/axell/apache/hosts/root/system/libs/auto/MemoryCache.lib
[20:27:25.26] [!] [1024]-[System_HostsIDs]: не удалось найти хосты для элемента (comp/Triggers/DOM/After/Window.comp) в линии 84 файла /home/axell/apache/hosts/root/system/libs/auto/System.lib
[20:27:25.26] [!] [1024]-[System_Element]: список хостов содержащих элемент не найдены в линии 103 файла /home/axell/apache/hosts/root/system/libs/auto/System.lib
[20:27:25.27] [JBs core]: система работала: 0.16612505912781