получить статусы отслеживания DHL

Пожалуйста, помогите мне выяснить, какой PHP API или PHP-скрипт я должен использовать, чтобы получить от DHL the shipment statuses, имея только доступные DHL Tracking Codes, предоставленные логистической компанией, которая осуществляет доставку наших заказов с веб-сайта электронной коммерции. Моя задача - создать код PHP CronJob, который будет проверять и регистрировать статус доставки DHL Tracking для использования их в внутренних отчетах.

Я был бы очень признателен за любое предложение, которое может помочь мне найти правильное направление.


person Sergiu Costas    schedule 07.06.2017    source источник
comment
github.com/jklz/DHL-API-Tracking-PHP   -  person Ahmed Ginani    schedule 07.06.2017
comment
Спасибо за предложение, дорогой @AhmedGinani: я проанализировал этот сценарий. Похоже, что для PHP-кода требуется номер DHL Airbil, который отличается от кода отслеживания DHL. Номер авианакладной - номер длиной 10 символов; Код отслеживания - номер длиной 12 символов;   -  person Sergiu Costas    schedule 07.06.2017


Ответы (1)


Я все еще ищу, чтобы найти правильный путь для достижения моей задачи. Итак, пока я не вижу другого способа, кроме анализа веб-страницы отслеживания DHL, учитывая наличие только доступного номера отслеживания, которого кажется недостаточным для использования их для некоторого API. Для API DHL требуются учетные данные для входа, секретные ключи и т. д. Однако мой текущий код синтаксического анализа может быть полезен для тех, кто ищет подобное решение. Просто включите свои коды отслеживания и запустите код на локальном хосте или даже на http://phpfiddle.org/:

$tracking_array=Array('000000000000', '1111111111111'); // Tracking Codes

function create_track_url($track)
{
    $separator = '%2C+';
    $count = count($track);
    $url = '';
    if ($count < 2 && $count > 0){
       $url =  $track[0];
    }else if ($count >1){
        foreach ($track as $k => $v)
        {
          $sep = ($count-2);
            if ($k > $sep){
                $separator ='';
            }
          $url .=  $v.$separator;
        }
    }


   return $url; 
}
//load the html  
$dom = new DOMDocument(); 
$html = $dom->loadHTMLFile("https://nolp.dhl.de/nextt-online-public/en/search?piececode=".create_track_url($tracking_array));  

  //discard white space   
$dom->preserveWhiteSpace = false;  
  //the table by its tag name  


$xpath = new DOMXpath($dom);

$expression = './/h2[contains(@class, "panel-title")]';

$track_codes =array();
foreach ($xpath->evaluate($expression) as $div) {
  $track_codes[]= preg_replace( '/[^0-9]/', '', $div->nodeValue );
}

$tables = $dom->getElementsByTagName('table'); 
$table = array();
foreach($track_codes as $key => $val)

{
    //get all rows from the table  
$rows = $tables->item($key)->getElementsByTagName('tr');   
  // get each column by tag name  
$cols = $rows->item($key)->getElementsByTagName('th');   
$row_headers = NULL;
foreach ($cols as $node) {
    //print $node->nodeValue."\n";   
    $row_headers[] = $node->nodeValue;
}  

  //get all rows from the table  
$rows = $tables->item(0)->getElementsByTagName('tr');   
foreach ($rows as $row)   
{   
   // get each column by tag name  
    $cols = $row->getElementsByTagName('td');   
    $row = array();
    $i=0;
    foreach ($cols as $node) {
        # code...
        //print $node->nodeValue."\n";   
        if($row_headers==NULL)
            $row[] = $node->nodeValue;
        else
            $row[$row_headers[$i]] = $node->nodeValue;
        $i++;
    }   
    $table[$val][] = $row;
}
}   
print '<pre>';
print_r($table);
person Sergiu Costas    schedule 09.06.2017
comment
Вы нашли решение для получения информации об отслеживании от DHL? Будет очень полезно, если вы поделитесь этим - person Sandeep; 22.07.2019
comment
Я использовал пример, которым поделился выше, настроив его под свои нужды. Поэтому я создал скрипт, который запускается пару раз в день: во-первых, он проверяет все еще не выполненные поставки, во-вторых, обновляет последние изменения, а затем, если клиенты не получают свои заказы в течение 24 часов, то: 1) оповещает отдел продаж; автоматическая отправка электронных писем клиентам с информацией о получении их отправлений. Да, это очень помогло минимизировать дорогостоящие возвраты от DHL. - person Sergiu Costas; 09.08.2019