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

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

Ну, и посмотри
31.07.2018 14:40
SQL код:
curl_setopt($ch, CURLOPT_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
А
Код:
telnet org.1-ofd.ru 443
вообще коннектится?
31.07.2018 15:48
Несколько "пинков" по сисадмину решили проблему:
оказалось, что в настройках был прописан путь на тестовую площадку без прокси, а на боевую - нет.
Из под браузера - все работает, потому что идет через проксю, а из командной строки - напрямую. Поэтому тестовая работала, а "боевая" - нет.
Как-то так.
Все заработало.
31.07.2018 16:30
Т.е. телнет не работал :)
31.07.2018 17:52
Цитата:
OlegON Т.е. телнет не работал :)
+1 )))
31.07.2018 18:11
Да, вдогонку... CURL умеет и прокси.

Код:
  curl_setopt($handle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
  curl_setopt($handle, CURLOPT_PROXY, 'tor-proxy:9050');
03.08.2018 10:18
Может, не в тему. Кто-нибудь пробовал аналогично работать с Такскомом?
06.09.2018 02:39
Пример разбора "до товара"
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($ch, CURLOPT_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(1, 0, 0, $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($ch1, CURLOPT_RETURNTRANSFER, true);
               curl_setopt($ch1, CURLOPT_COOKIEFILE, $cookfile);
               curl_setopt($ch1, CURLOPT_SSL_VERIFYPEER, false);
               curl_setopt($ch1, CURLOPT_SSL_VERIFYHOST, false);    
               $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($ch2, CURLOPT_RETURNTRANSFER, true);
                             curl_setopt($ch2, CURLOPT_COOKIEFILE, $cookfile);
                             curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, false);
                             curl_setopt($ch2, CURLOPT_SSL_VERIFYHOST, false);    
                             $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($ch, CURLOPT_RETURNTRANSFER, 1);  
         curl_setopt($ch, CURLOPT_URL, $url);  
         curl_setopt($ch, CURLOPT_HEADER, true);
         curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json;charset=utf-8")); 
         curl_setopt($ch,CURLOPT_POSTFIELDS, json_encode($user));
         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
         curl_setopt($ch,CURLOPT_CUSTOMREQUEST,'POST');
         curl_setopt($ch, CURLOPT_COOKIEJAR, $cookfile); // записываем куки  в файл

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

      fullrez($OtdName, $fileres, $MyKass, $DayMinus, $MonthMinus, $cookfile);
?>
Часовой пояс GMT +3, время: 15:00.

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