31.07.2018 14:08
OlegON
 
Цитата:
УКМ_эксплуатант_2 Подключаюсь...
Подключились
Переводится, как
Цитата:
Подключаюсь...
Подключились
неплохо бы еще добавить curl_getinfo, чтобы понимать, что там вернулось, что без куков... Ошибки нет, возвращается неожиданный ответ.
31.07.2018 14:13
KirillHome
 
Я print с каких-то пор разлюбил, попробуй записать это в файл

SQL код:
file_put_contents($file$result); 
где $file - это имя файла, а $result - то, что хотим в этот файл записать.

Ну, и посмотри json_last_error
31.07.2018 14:40
УКМ_эксплуатант_2
 
SQL код:
curl_setopt($chCURLOPT_COOKIEFILE,  'cookie.txt'); 
    
$result curl_exec($ch);
    
file_put_contents("qwqw.txt"$result);  
    
$ddd=curl_getinfo($ch);
    
print_r($ddd);
    
file_put_contents("qwqw1.txt"$ddd);  
    
print_r($result);
    print 
"Подключились \n"
    
$json=json_decode($result,true); 
    
curl_close($ch); 
дало вот такой неожиданный результат:
на экране:
SQL код:
c:\ОПРОС ОФД>c:\phpukm\php.exe MyTest2.php
Подключаюсь
...
Array
(
    [
url] => https://org.1-ofd.ru/api/user/login
    
[http_code] => 0
    
[header_size] => 0
    
[request_size] => 0
    
[filetime] => -1
    
[ssl_verify_result] => 0
    
[redirect_count] => 0
    
[total_time] => 0
    
[namelookup_time] => 0.008
    
[connect_time] => 0
    
[pretransfer_time] => 0
    
[size_upload] => 0
    
[size_download] => 0
    
[speed_download] => 0
    
[speed_upload] => 0
    
[download_content_length] => 0
    
[upload_content_length] => 0
    
[starttransfer_time] => 0
    
[redirect_time] => 0
)
Подключились

 
**************************************** 
А в файлике qwqw1.txt: https://org.1-ofd.ru/api/user/login000-10000.0080000000000
а qwqw.txt -пустой...
31.07.2018 15:39
OlegON
 
А
Код:
telnet org.1-ofd.ru 443
вообще коннектится?
31.07.2018 15:48
УКМ_эксплуатант_2
 
Несколько "пинков" по сисадмину решили проблему:
оказалось, что в настройках был прописан путь на тестовую площадку без прокси, а на боевую - нет.
Из под браузера - все работает, потому что идет через проксю, а из командной строки - напрямую. Поэтому тестовая работала, а "боевая" - нет.
Как-то так.
Все заработало.
31.07.2018 16:30
OlegON
 
Т.е. телнет не работал :)
31.07.2018 17:52
baggio
 
Цитата:
OlegON Т.е. телнет не работал :)
+1 )))
31.07.2018 18:11
OlegON
 
Да, вдогонку... CURL умеет и прокси.

Код:
  curl_setopt($handle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
  curl_setopt($handle, CURLOPT_PROXY, 'tor-proxy:9050');
03.08.2018 10:18
FinSoft
 
Может, не в тему. Кто-нибудь пробовал аналогично работать с Такскомом?
06.09.2018 02:39
KirillHome
 
Пример разбора "до товара"
SQL код:
<?php
      
//Информация по товарам
      //
      //на выходе:
      //Дата/время
      //№ чека
      //Сумма чека
      //Номер товара
      //Товар
      //Сумма
      //
      //Источник
      //https://olegon.ru/showthread.php?t=27917
      
function fullrez($OtdName$fileres$MyKass$DayMinus$MonthMinus$cookfile)
      {
            
//print $OtdName."...\n";   
            //Имя файла, в который мы запишем "сырые данные" из ОФД
            //$file = 'fromofd.txt';
            
$strres "";
            
$strvyv "";

            if (
file_exists($cookfile))
            {
               
curl_setopt($chCURLOPT_COOKIEFILE,  $cookfile);
               
$result curl_exec($ch);  
               
$json=json_decode($result,true);

               
//$CheckDate='';
               //$PredDate='';
               
$Mohtn date("m");
               
$Day date("d");
               
$Year date("y");
               
$StartDate date('U'mktime(100$Mohtn-$MonthMinus$Day-$DayMinus$Year));
               
$StartDate $StartDate."000";

               
//Так как данные идут от более свежих к более старым - то до сегодняшнего дня с указанной даты
               
$newurl="https://org.1-ofd.ru/api/kkms/".$MyKass."/transactions?fromDate=".$StartDate;

               
$ch1 curl_init($newurl);
               
curl_setopt($ch1CURLOPT_RETURNTRANSFERtrue);
               
curl_setopt($ch1CURLOPT_COOKIEFILE$cookfile);
               
curl_setopt($ch1CURLOPT_SSL_VERIFYPEERfalse);
               
curl_setopt($ch1CURLOPT_SSL_VERIFYHOSTfalse);    
               
$result curl_exec($ch1);  

               
//Если интересно - можно записать сырые данные в файл
               //file_put_contents($file, $result);
          
               //поиск строки "<!DOCTYPE html>" (вдруг ошибка?)
               
$posHtml=strripos($result,"<!DOCTYPE html>");
               if (
$posHtml === false)
               {
                  
$obj=json_decode($result,true);
                  
curl_close($ch1); 

                  
$idurl="";
                  
$fullout ="";

                  foreach(
$obj as $item
                  {
                          if (
$item["transactionType"]=="CLOSE_SHIFT")
                          {
                              
//Что бы не так скучно было - выведем информацию о датах и сменах
                              
print "Работаю с датой ".substr($item["transactionDate"],0,10).", смена ".$item["shiftNumber"]."\n";
                          }
                          elseif (
$item["transactionType"]=="TICKET")
                          { 
                             
//Получили имя тикета
                             
$idurl ="https://org.1-ofd.ru/api/ticket/" $item["id"];

                             
//Данные для выходного файла
                             
$fullout .="Чек "$item["id"] ."\n";

                             
//Запросили, получили ответ
                             
$ch2 curl_init($idurl);
                             
curl_setopt($ch2CURLOPT_RETURNTRANSFERtrue);
                             
curl_setopt($ch2CURLOPT_COOKIEFILE$cookfile);
                             
curl_setopt($ch2CURLOPT_SSL_VERIFYPEERfalse);
                             
curl_setopt($ch2CURLOPT_SSL_VERIFYHOSTfalse);    
                             
$resid curl_exec($ch2);

                             
//Пошли разбирать...
                             
$objid=json_decode($resid,true);
                             
curl_close($ch2); 

                             
//Продолжили с выходным файлом (описываем чек)
                             
$fullout .="  Смена "$objid["ticket"]["shiftNumber"] ."\n";
                             
$fullout .="  Чек "$objid["ticket"]["fiscalDocumentNumber"] ."\n";
                             
$fullout .="  Время "$objid["ticket"]["transactionDate"] ."\n";
                             
$fullout .="  Сумма, наличными  "strval($objid["ticket"]["cashTotalSum"]) ."\n";
                             
$fullout .="  Сумма, электронно  "strval($objid["ticket"]["ecashTotalSum"]) ."\n";
                             
$fullout .="  Тип операции (0 - Покупка, 1 - ворзврат покупки, 2 - продажа, 3 - возврат продажи) "strval($objid["ticket"]["operationType"]) ."\n";
                             
//       transactionDate      (Локальное время)
                             //       shiftNumber          (Номер смены)
                             //       fiscalDocumentNumber (Номер чека)
                             //       cashTotalSum         (Сумма, наличными)
                             //       ecashTotalSum        (Сумма, электроно)
                             //       operationType        (Тип операции; 0 - Покупка, 1 - Возврат покупки, 2 - Продажа, 3 - Возрврат продажи

                             //       items                массив товаров чека
                             
$items $objid["ticket"]["items"];
                             foreach(
$items as $itemif
                             {
                                     
//Продолжили с выходным файлом (описываем товары чека)
                                     //По умолчанию - в UTF, переделаем в 866 кодовую страницу
                                     
$fullout .="    Товар "mb_convert_encoding($itemif["name"],"cp866""utf-8") ."\n";
                                     
$fullout .="    Сумма "strval($itemif["sum"]/100.0) ."\n";
                                     
//price         Цена за единицу (в копейках)
                                     //quantity      Количество
                                     //sum           Сумма
                                     //name          Наименование товара
                             
}

                             
//Добавили пустую строку в выходной файл (чек завершён)...
                             
$fullout .="\n";
                          }
                  }

                  
//Вывод детальной информации в файл
                  
file_put_contents($fileres$fullout);
                  
$strres="";
               }
               else
               {
                  print 
"   Сервис недоступен!!!""\n";
               }
            }
            else
            {
               print 
"   Отсутствуют cookies!!!""\n";
            }
      }
      
      
//Имя Юр.лица, отдела
      
$OtdName "Имя отдела (юр.лица)";
      
//Логин к ОФД
      
$MyLogin='ЛогинОФД';
      
//Пароль к ОФД
      
$MyPass='ПарольОФД';
      
//Имя файла, в который мы запишем данные по сменам
      
$fileres 'resultat.txt';
      
//Номер интересующей нас кассы в ОФД
      
$MyKass="КассаОФД";
      
//Вычитаем дней из даты
      
$DayMinus=2;
      
//Вычитаем месяцев из даты
      
$MonthMinus=0;

      
//Имя файла cookies
      
$cookfile 'cookies.txt';
      
//Сделаем (если надо) файл cookies
      
$url "https://org.1-ofd.ru/api/user/login";
      
//В cookies пропишем - "Запоминать нас" ('rememberme'=>true) - а то по умолчанию нет
      
$user=array('login'=>$MyLogin'password'=>$MyPass'rememberme'=>true );
      
$ch curl_init();
      if (!
file_exists($cookfile))
      {
         
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_POSTFIELDSjson_encode($user));
         
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
         
curl_setopt($chCURLOPT_SSL_VERIFYHOSTfalse); 
         
curl_setopt($ch,CURLOPT_CUSTOMREQUEST,'POST');
         
curl_setopt($chCURLOPT_COOKIEJAR$cookfile); // записываем куки  в файл

         
curl_setopt($chCURLOPT_COOKIEFILE,  $cookfile);
         
$result curl_exec($ch);  
         
curl_close($ch); 
      }

      
fullrez($OtdName$fileres$MyKass$DayMinus$MonthMinus$cookfile);
?>

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