Archiv

Artikel Tagged ‘paketstatus’

osCommerce: DHL Paketstatus XML API

4. September 2009

DHL Es schaut doch wesentlich schöner aus, wenn der Paketstatus in die eigene Website und somit ins eigene Design integriert werden kann, als immer nur auf den DHL-Link zu verweisen.

Jedoch habe ich nach gründlicher Recherche keine Informationen zu einer Schnittstelle gefunden. Nachdem wir beruflich selbst über DHL versenden, habe ich dort einmal eine Anfrage gestellt.

Das Ergebnis: Prinzipiell gibt es eine API, basierend auf XML, mit zwei unterschiedlichen Zugriffsmöglichkeiten.

Einen gesicherten Zugang für Geschäftskunden und einen offenen für Privatkunden. Die sogenannte “Track & Trace DASS – Online Direktaufrufschnittstelle” bekommen DHL-Kunden beim technischen Support. Dies ist ein mehrseitiges PDF mit genauer Anleitung und Beispielen. Neben der aktuellen Statusabfrage umfasst diese auch noch den kompletten Sendungslauf, sowie Zustellinformationen und -nachweis.

Aber widmen wir uns nun der public API. Mit dieser kann man sich den aktuellen Paketstatus und ein paar zusätzliche Details holen kann. Folgend ein Beispiel anhand der Paketnummer 258263342319. Die Postleitzahl muss nicht mehr zwingend übergeben werden.

Aufruf (GET)

http://nolp.dhl.de/nextt-online-public/direct/nexttjlibpublicservlet?xml=<?xml version=”1.0″ encoding=”ISO-8859-1″?><data  appname=”nol-public” password=”anfang” request=”get-status-for-public-user” language-code=”de”><data piece-code=”258263342319″ zip-code=”71287″></data></data>

Antwort (XML)

<?xml version=”1.0″ encoding=”ISO-8859-1″ ?>
<data>
<data name=”piece-status-public-list” _piece-code=”726510758012″ _zip-code=”27472″ code=”0″>
<data _build-time=”2007-02-01 13:30:15.000899″ name=”piece-status-public” piece-id=”0″ leitcode=”258263334332″ piece-identifier=”72651075801″ piece-code=”726510758012″ identifier-type=”1″ recipient-name=”Appiarius” street-name=”Nordersteinstr.” house-number=”36″ postal-code=”27472″ city-name=”Cuxhaven” last-event-timestamp=”11.01.07 09:42″ shipment-type=”" status-next=”" status=”Die Sendung wurde ausgeliefert.” error-status=”" delivery-event-flag=”1″ />
</data>
</data>

Beispiel (PHP)

$dhlpaketnr = “xxx”;
if(!empty($dhlpaketnr)) {
$dhlxml = simplexml_load_file(“http://nolp.dhl.de/nextt-online-public/direct/nexttjlibpublicservlet?xml=%3C?xml%20version=%221.0%22%20encoding=%22ISO-8859-1%22?%3E%3Cdata%20%20appname=%22nol-public%22%20password=%22anfang%22%20request=%22get-status-for-public-user%22%20language-code=%     22de%22%3E%3Cdata%20piece-code=%22%20″.$dhlpaketnr.”%22%20zip-code=%22%22%3E%3C/data%3E%3C/data%3E”);
if($dhlxml->data->data["piece-status"] == 0) {
echo ‘<br />’;
echo ‘Paketnummer: ‘.$dhlpaketnr.’<br />’;
echo ‘Empfänger: ‘.$dhlxml->data->data["recipient-name"].’<br />’;
echo ‘Status: ‘.$dhlxml->data->data["status"];
echo ‘Datum: ‘.$dhlxml->data->data["last-event-timestamp"].’<br />’;
} else {
echo ‘<br />’;
echo ‘<i>Es konnten keine zu diesem Paket ermittelt werden!</i>’;
}
// alle informationen
// print_r($dhlxml);
}

Sollte der  piece-status nicht 0 sein, gab es ein Problem mit der Anfrage. Jedoch gibt es hier eine Fehlerliste mit ca. 30 Codes, diese ist aber jedoch wieder nur für DHL-Kunden.

Nachdem ich diese Schnittstelle als erstes in einen osCommerce-Shop integriert habe, gibt´s diese dort auch nochmal zum Download, bzw. Support im Forum. Andere Contribs und Erweiterung zu osCommerce von mir kann man hier einsehen. In Kürze wird auch noch ein Modul für den OXID eShop folgen.

Programmierung , , , , , , ,