8

我目前正在做一个项目,我必须在其中获取数据包的状态(通过 DHL 发送)。我读到了 DHL API,它返回一个 XML,但不知何故,那里没有很好的例子。我找到了一些代码片段,但我不知道在哪里注册 API 密钥。

有没有人给我一些链接或示例?

最好的问候,卢卡斯

4

4 回答 4

7

还有这个 PHP 客户端可用于使用 DHL XML API。它可以处理 DHL 公开的所有不同服务。

https://github.com/alfallouji/DHL-API

此客户端不依赖或不依赖任何框架,它应该很容易与您自己的代码集成。例如,您可以查看示例文件夹以了解如何使用它。

于 2014-07-27T21:54:58.240 回答
2

https://github.com/jklz/DHL-API-Tracking-PHP

它用于使用 XML-PI 连接到 DHL,以使用空运提单跟踪货件。它可以处理单个跟踪号或您输入的多个跟踪号(已使用 250 进行测试,其他需要一点时间运行没有问题)。自动获取跟踪号码数组并将其分解为块,然后将请求发送到 DHL,确保不传递每个请求可以跟踪的最大数量,然后将结果作为数组返回。

于 2013-02-15T20:43:12.157 回答
1

快速而肮脏,无需任何第三方库并使用官方 API:

<?php
$mode        = 'sandbox'; // sandbox or production
$username    = ''; // dhl developer account name, not email
$password    = ''; // dhl developer account pass
$appname     = 'zt12345'; // sandbox app
$apppass     = 'geheim'; // sandbox app
$endpoint    = 'https://cig.dhl.de/services/' . $mode . '/rest/sendungsverfolgung';
$payload     = simplexml_load_string( '<?xml version="1.0" encoding="UTF-8" standalone="no"?><data appname="' . $appname . '" language-code="de" password="' . $apppass . '" piece-code="" request="d-get-piece-detail"/>' );
$shipmentids = array(
    '00340434161094015902' // in sandbox only special numbers are allowed
);


$opts = array(
    'http' => array(
        'method' => "GET",
        'header' => "Authorization: Basic " . base64_encode( "$username:$password" )
    )
);

$context = stream_context_create( $opts );


foreach ( $shipmentids as $shipmentid ) {
    $payload->attributes()->{'piece-code'} = $shipmentid;
    $response                              = file_get_contents( $endpoint . '?' . http_build_query( array( 'xml' => $payload->saveXML() ) ), false, $context );
    $responseXml                           = simplexml_load_string( $response );
    $status                                = null;

    // get last state
    foreach ( $responseXml->data->data->data as $event ) {
        $status = $event->attributes()->{'event-short-status'};
    }

    echo "Shipment " . $shipmentid . " is in state: " . $status . "\n";
}
于 2019-07-09T16:03:24.703 回答
0

有一个关于这个的不错的博客。不幸的是,它是德语的,但是那里显示的代码对您来说应该仍然有意义。

来源:https ://blog.simlau.net/dhl-tracking-api-php.html

摘抄:

function dhl_tracking($trackingnumber)
{
   $data  = '<?xml version="1.0" encoding="ISO-8859-1" ?>';
   $data .= '<data appname="nol-public" password="anfang" request="get-status-for-public-user" language-code="de">';
   $data .= '  <data piece-code="'.$trackingnumber.'"></data>';
   $data .= '</data>';

   // URL bauen und File hohlen
   $xml = simplexml_load_file(sprintf(
      'http://nolp.dhl.de/nextt-online-public/direct/nexttjlibpublicservlet?xml=%s', $data
   ));

   // FALSE, wenn Syntax oder HTTP Error
   if ($xml === false) return false;

   // Wandelt das SimpleXML Objekt in ein Array um
   foreach ($xml->data->data->attributes() as $key => $value) {
      $return[$key] = (string) $value;
   }
   return $return;
}

// Aufruf der Funktion
print_r(dhl_tracking($tracking_number));

此函数将返回一个包含一些跟踪信息的数组:

Array
(
    [status] => Die Sendung wurde erfolgreich zugestellt.
    [recipient-id-text] => Nachbar
    [product-name] => DHL PAKET
    [pan-recipient-name] => SIMON LAUGER
)

(事实上​​,那里有更多的数据。)

我希望这会以某种方式帮助你。

于 2016-11-18T09:56:33.160 回答