【问题标题】:get DHL tracking statuses获取 DHL 跟踪状态
【发布时间】:2017-11-08 14:09:35
【问题描述】:

请帮我弄清楚我应该使用什么 PHP API 或 PHP 脚本从 DHL the shipment statuses 获取只有物流公司提供的 DHL Tracking Codes 可用,该物流公司负责从电子商务网站运送我们的订单。我的任务是创建一个 PHP CronJob 代码,该代码将检查和注册 DHL 跟踪运输的状态,以便在后端报告中使用它们。

如果有任何建议可以帮助我找到正确的方向,我将不胜感激。

【问题讨论】:

  • 感谢您的建议,亲爱的@AhmedGinani:我已经分析了那个脚本。似乎 PHP 代码需要 DHL Airbil Number,这与 DHL 跟踪代码不同。空运单号码 - 10 个字符长度的号码;跟踪代码 - 12 个字符长度的数字;

标签: php tracking shipping dhl


【解决方案1】:

我仍在寻找正确的方法来完成我的任务。所以,到目前为止,除了解析 DHL 跟踪网页之外,我没有看到其他方法,考虑到只有跟踪号可用,这似乎不足以将它们用于某些 API。 DHL API 需要登录凭据、密钥等...但是,我当前的解析代码可能对寻找类似解决方案的人有用。只需包含您的跟踪代码并在您的本地主机甚至 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);

【讨论】:

  • 您找到从 DHL 获取跟踪详细信息的解决方案了吗?如果你能分享,那将非常有帮助
  • 我使用了上面分享的示例,根据我的需要进行自定义。所以我创建了一个每天运行几次的脚本:首先,它检查所有未完成的货物,其次更新最后更改的更改,然后如果客户在 24 小时内没有收到订单,那么:1)提醒销售部门;自动向客户发送电子邮件,通知他们取货。是的,它有助于最大程度地减少 DHL 的高成本退货。
猜你喜欢
  • 2021-08-21
  • 1970-01-01
  • 2019-12-25
  • 2019-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-16
  • 2011-11-14
相关资源
最近更新 更多