25.09.2017 10:56
УКМ_эксплуатант_2
 
В браузере - захожу в ЛК, авторизируюсь средствами браузера, потом спокойно получаю данные.
Но вот никак не получается авторизироваться "автоматически"!
В каком формате надо запихивать в POST логин/пароль?
SQL код:
https://MyLogin:MyParol@test-org.1-ofd.ru/api/kkms 
В таком виде не получилось
Как надо?
25.09.2017 10:59
OlegON
 
И не должно получиться, это не FTP, где такой формат.
Где описание API есть?
25.09.2017 11:24
УКМ_эксплуатант_2
 
1-ofd API base_manual_10.03.2017_noauth.doc.7z
закачал в хранилище, но не нашел куда
Нашел!
/supermag/upload/2017/
25.09.2017 11:29
OlegON
 
В этой доке нет ничего про авторизацию. А по URI выше никакой авторизации не требуется.
25.09.2017 11:43
УКМ_эксплуатант_2
 
Вот потому и вопросы задаю, что нету.
А по УРЛ указанному выше - тестовая площадка 1-ОФД. И оно требует авторизацию, так же, как и "боевая". Ввожу свои логин-пароль, вхожу в ЛК, далее в строке адреса прописываю запросы из документа - получаю данные.
А хочу из кода это сделать. Да хоть php, или на Дельфях через Indy. Что-бы получить чеки от ОФД и сравнить их с чеками в ukmserver.
Миниатюры
Нажмите на изображение для увеличения
Название: для OLEGON.jpg
Просмотров: 306
Размер:	15.6 Кб
ID:	8878  
25.09.2017 12:17
OlegON
 
Дык
Цитата:
HTTP/1.1 401 Unauthorized
обычная HTTP-авторизация...
26.09.2017 12:47
УКМ_эксплуатант_2
 
Разобрался. И вправду все несложно.
Вероятно - слишком прямолинейно, но "шлифовать" позже буду.
Это в файл test.php
Потом в консоли запускаем c:\phpukm\php.exe test.php
SQL код:
<?php
   $url 
"https://test-org.1-ofd.ru/api/user/login";
   
$user=array('login'=>'МойЛогин''password'=>'МойПароль' );   
   
$ch curl_init();     
   
curl_setopt($chCURLOPT_RETURNTRANSFER1);  
   
curl_setopt($chCURLOPT_URL$url);  
   
curl_setopt($chCURLOPT_HEADERtrue);
   
curl_setopt($chCURLOPT_HTTPHEADER, array("Content-Type: application/json;charset=utf-8")); 
   
curl_setopt($ch,CURLOPT_POSTFIELDS,json_encode($user));
   
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
   
curl_setopt($chCURLOPT_SSL_VERIFYHOSTfalse); 
   
curl_setopt($ch,CURLOPT_CUSTOMREQUEST,'POST');
   
curl_setopt($chCURLOPT_COOKIEJAR'cookie.txt'); // записываем куки  в файл
   
curl_setopt($chCURLOPT_COOKIEFILE,  'cookie.txt');
   
$result curl_exec($ch);  
   
$code=curl_getinfo($ch,CURLINFO_HTTP_CODE);
   print 
$code;
   print 
"\n";
   
$json=json_decode($result,true);
   
print_r($json);  
   
curl_close($ch);  
   
//***************************************************
   //в эту строку вставляем что хотим от ОФД получить
   
$newurl="https://test-org.1-ofd.ru/api/kkms";
   
//***************************************************
   
$ch1 curl_init($newurl);
   
curl_setopt($ch1CURLOPT_RETURNTRANSFERtrue);
   
curl_setopt($ch1CURLOPT_COOKIEFILE'cookie.txt');
   
curl_setopt($ch,CURLOPT_CUSTOMREQUEST,'GET');   
   
curl_setopt($ch1CURLOPT_SSL_VERIFYPEERfalse);
   
curl_setopt($ch1CURLOPT_SSL_VERIFYHOSTfalse);    
   
$result curl_exec($ch1);  
   
$code=curl_getinfo($ch1,CURLINFO_HTTP_CODE);
   print 
$code;
   print 
"\n";
   
//в этом массиве - чеки, кассы, точки - в зависимости от того, что хотели получить
   
$json=json_decode($result,true);
   
print_r($json);  
   
curl_close($ch1);     
?>
28.09.2017 13:01
УКМ_эксплуатант_2
 
Версия 0.9 - поставил в 2 магазина для тестов. Вывод в документ ОпенОфисКалк. Есть и в консоль, но закоментировал...
Осталось "прикрутить" междумордие по выбору кассы/номера смены, и как-то придумать, что-бы пароль был неявный...
А может вообще - на СГО в вебку этот код запихнуть, и с него раздавать по точкам полученные файлы (тогда отпадет проблема хранения логинов/паролей на точке, да и ай-дишники касс тоже можно в БД прописать и из нее брать). Но то все "свистели и п..лки".
SQL код:
<?php
   
print "PODKLYUCHAYUS... \n";   
   
$url "https://org.1-ofd.ru/api/user/login";
   
$user=array('login'=>'[COLOR="red"][B]МойЛогин[/B][/COLOR]''password'=>'[COLOR="red"][B]МойПароль[/B][/COLOR]' );   
   
$ch curl_init();     
   
curl_setopt($chCURLOPT_RETURNTRANSFER1);  
   
curl_setopt($chCURLOPT_URL$url);  
   
curl_setopt($chCURLOPT_HEADERtrue);
   
curl_setopt($chCURLOPT_HTTPHEADER, array("Content-Type: application/json;charset=utf-8")); 
   
curl_setopt($ch,CURLOPT_POSTFIELDS,json_encode($user));
   
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
   
curl_setopt($chCURLOPT_SSL_VERIFYHOSTfalse); 
   
curl_setopt($ch,CURLOPT_CUSTOMREQUEST,'POST');
   
curl_setopt($chCURLOPT_COOKIEJAR'cookie.txt'); // записываем куки  в файл
   
curl_setopt($chCURLOPT_COOKIEFILE,  'cookie.txt');
   
$result curl_exec($ch);  
   print 
"PODKLYUCHILIS \n";
   
$json=json_decode($result,true);
   
//print_r($json);  
   
curl_close($ch); 
   print 
"\n **************************************** \n";   
   
$newurl="https://org.1-ofd.ru/api/kkms/[COLOR="Red"][B]АйДиКассы[/B][/COLOR]/transactions?shiftNumber=[COLOR="red"][B]НОМЕР_СМЕНЫ[/B][/COLOR]";
   print 
"Poluchaem cheki... \n"
   
$ch1 curl_init($newurl);
   
curl_setopt($ch1CURLOPT_RETURNTRANSFERtrue);
   
curl_setopt($ch1CURLOPT_COOKIEFILE'cookie.txt');
   
curl_setopt($ch1CURLOPT_SSL_VERIFYPEERfalse);
   
curl_setopt($ch1CURLOPT_SSL_VERIFYHOSTfalse);    
   
$result curl_exec($ch1);  
   print 
"Cheki ok\n";
   
$obj=json_decode($result,true);
   
curl_close($ch1); 
   
$KolvoClose=0;
   
$KolvoOpen=0;
   
$KolvoProd=0;
   
$KolvoProdNal=0;
   
$KolvoProdKarta=0;
   
$KolvoVz=0;
   
$KolvoVzNal=0;
   
$KolvoVzKarta=0;
   
$SummaPr=0;
   
$SummaPrNal=0;
   
$SummaPrKarta=0;
   
$SummaVz=0;
   
$SummaVzNal=0;
   
$SummaVzKarta=0;
   print 
"Proverka chekov...\n";
   foreach(
$obj as $item
   {
        if (
$item["transactionType"]=="CLOSE_SHIFT")
            {
$KolvoClose $KolvoClose+1;}
        elseif (
$item["transactionType"]=="OPEN_SHIFT")
            {
$KolvoOpen $KolvoOpen+1;}
        else
        { 
            if (
$item["operationType"]==2)
            {
                
$KolvoProd $KolvoProd 1;
                
$SummaPr $SummaPr $item["sum"];
                
$SummaPrNal $SummaPrNal $item["payments"][0]["sum"];            
                
$SummaPrKarta $SummaPrKarta $item["payments"][1]["sum"];            
            }
            else 
            {
                
$KolvoVz=$KolvoVz+1;
                
$SummaVz $SummaVz $item["sum"];
                
$SummaVzNal $SummaVzNal $item["payments"][0]["sum"];            
                
$SummaVzKarta $SummaVzKarta $item["payments"][1]["sum"];                        
            }              
        };
    }
    
/*print "KolvoClose= " . $KolvoClose . "\n";
    print "KolvoOpen= " . $KolvoOpen . "\n";
    print "KolvoProd= " . $KolvoProd . "\n";
    print "SummaPr= " . $SummaPr . "\n";
    print "KolvoVz= " . $KolvoVz . "\n";
    print "SummaVz= " . $SummaVz . "\n";
    print "\n********************************************\n";
    //     123456789012345678901234567890123456789012345678901234567890
    print "*   Oper      *   Nalom      *     Karta    *\n";
    print "*   Prod      *" . sprintf("%14.2f", $SummaPrNal) . "*" . sprintf("%14.2f", $SummaPrKarta) . "*\n" ;
    print "*   Vzvr      *" . sprintf("%14.2f", $SummaVzNal) . "*" . sprintf("%14.2f", $SummaVzKarta) . "*\n" ;
    print "**********************************************\n";*/

    
$varArr = array();
    
$oo = new COM("com.sun.star.ServiceManager");
    
$desk $oo->CreateInstance("com.sun.star.frame.Desktop");  
    
$oodoc $desk->LoadComponentFromURL('private:factory/scalc','_blank',0,$varArr); 
    
$Sheets $oodoc->getSheets();
    
$Sheet=$Sheets->GetByIndex(0);       
    
$Cell=$Sheet->getCellByPosition(1,0);         
    
$Cell->SetString("Наличные");      
    
$Cell=$Sheet->getCellByPosition(2,0);         
    
$Cell->SetString("По карте");      
    
$Cell=$Sheet->getCellByPosition(3,0);         
    
$Cell->SetString("Колво чеков"); 
    
$Cell=$Sheet->getCellByPosition(4,0);         
    
$Cell->SetString("Итого");    
    
$Cell=$Sheet->getCellByPosition(0,1);
    
$Cell->SetString("Продажи");      
    
$Cell=$Sheet->getCellByPosition(0,2);
    
$Cell->SetString("Возвраты");          
    
$Cell=$Sheet->getCellByPosition(1,1);          
    
$Cell->SetString(sprintf("%14.2f"$SummaPrNal));     
    
$Cell=$Sheet->getCellByPosition(2,1);          
    
$Cell->SetString(sprintf("%14.2f"$SummaPrKarta));     
    
$Cell=$Sheet->getCellByPosition(3,1);          
    
$Cell->SetString(sprintf("%14.2f"$KolvoProd));     
    
$Cell=$Sheet->getCellByPosition(4,1);
    
$Cell->SetString(sprintf("%14.2f"$SummaPr)); 
    
$Cell=$Sheet->getCellByPosition(1,2);          
    
$Cell->SetString(sprintf("%14.2f"$SummaVzNal));     
    
$Cell=$Sheet->getCellByPosition(2,2);          
    
$Cell->SetString(sprintf("%14.2f"$SummaVzKarta)); 
    
$Cell=$Sheet->getCellByPosition(3,2);          
    
$Cell->SetString(sprintf("%14.2f"$KolvoVz));     
    
$Cell=$Sheet->getCellByPosition(4,2);
    
$Cell->SetString(sprintf("%14.2f"$SummaVz));     
    
$oodoc Null;
    
$desk Null;
    echo 
"Ok";
?>
28.09.2017 18:16
KirillHome
 
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 21 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащийся здесь.

Хочу почитать, что бы в следующий раз не искать.
29.09.2017 08:07
УКМ_эксплуатант_2
 
Закачал посвежее описание API (от 17 августа 2017).
https://storage.olegon.ru/supermag/u... 17-08-2017.7z

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.