Home > Programmierung > osCommerce: DHL Paketstatus XML API

osCommerce: DHL Paketstatus XML API

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 , , , , , , ,

  1. Ralf
    5. September 2009, 08:58 | #1

    Hallo Tobias, vielen dank für diese tolle Informationen.
    Ich habe die letzten Tage bereits Stunden danach gesucht.
    Viele Grüße Ralf B.

  2. 3. Februar 2010, 16:00 | #2

    Leider funktioniert dieser Aufruf nicht mehr. Gibt es eine neue URL, die man aufrufen muss?

  3. tabsl
    10. Februar 2010, 08:56 | #3

    Also bei mir funktioniert die Anbindung noch problemlos. Was hast du für ein Problem?

  4. Hummerman
    23. Februar 2010, 17:11 | #4

    Per Browser kommt folgende Meldung:

    Per PHP:

    Warning: simplexml_load_file(http://nolp.dhl.de/…) function.simplexml-load-file]: failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /…/test.php on line 5

  5. tabsl
    23. Februar 2010, 17:31 | #5

    dann muss am request irgendwas falsch sein. bei mir funktioniert die api immernoch problemlos!

  6. Hummerman
    23. Februar 2010, 22:53 | #6

    Was im ersten Kommentar fehlt ist, dass beim Aufruf per Browser auch eine Fehlermeldung kommt.

    data code=”5″ error=”Anmeldung fehlgeschlagen”

  7. David
    5. April 2010, 09:09 | #7

    David :
    es tut mir leid wenn du mich nicht verstehst, meine Mutter Sprache ist Englisch.
    dieses Beispiel funktioniert nicht
    http://nolp.dhl.de/nextt-online-public/direct/nexttjlibpublicservlet?xml=
    Im pdf vom osEcommerce ist z.b. statt zip-code – zipcode oder appname=”nol-public” – appname=”nolpublic”
    heir das Beispiel vom pdf
    http://nolp.dhl.de/nextt-online-public/direct/nexttjlibpublicservlet?xml=
    auf jeden fall egal was ich benutze, bekomme ich
    soweit ich dich verstehe wenn ich eine Kundennummer habe dann kann ich eine anleitung sowei bespiele bekommen und mein XML Ergebnis hat mehre infomationien drin?

  8. tabsl
    5. April 2010, 10:12 | #8

    I´ve made an sample, look here for php-code:
    http://blog.tabsl.eu/public/dhl.php

    but the there ist no status-code available :( i don´t know why.

  9. David
    5. April 2010, 12:21 | #9

    Thanks for that. Here is an example number – 286740718014 you can check here that it works with a normal url (if you blog allows me to put a url here)

    http://nolp.dhl.de/nextt-online-public/set_identcodes.do?lang=en&idc=286740718014

  10. tabsl
    5. April 2010, 12:24 | #10

    of course it works with it.

  11. David
    5. April 2010, 12:27 | #11

    by the way I do not know anything about php I just want the XML response from the DHL server.

  12. David
    5. April 2010, 13:18 | #12

    Following both your suggestion and the pdf supplied at oscommerce a public person can give a browser a url with a packet number a “http get” and receive back in the same browser a XML response.

    The exact form of this http get cannot be posted here as the blog deletes parts of the url.

    i am sorry to say but your http get above does not work and is different to what is in the pdf.

    Secondly when I replace only the piece-code=”286740718014″ with this number which is a currently existing packet number I get an error response.

    Do you have any comments on this or should I post this exact text in the forum?

  13. David Bowen
    6. April 2010, 11:00 | #13

    What a great company DHL is – they offer a service they know nothing about – nor does it appear on their internet page.

    Today I have called 0180 5 00 33 21 from DHL and tried DHL Easylog / Connect/DHL OnlineShipping. These 2 sections of DHL have no idea of the DHL API and only know about the online website where you give your packet number to them. Do you have anymore details on “bekommen DHL-Kunden beim technischen Support.” exactly which technical support department and telephone number this is/might be – or what is the source of your information?

  14. tabsl
    6. April 2010, 11:04 | #14

    you only get the information and descriptions for api, when you are dhl business customer.

  15. David Bowen
    7. April 2010, 10:57 | #15

    dont worry I have solved the problem. In the most polite way possible i would suggest you review the URL above for the aufruf GET.

  16. tabsl
    7. April 2010, 11:22 | #16

    i don´t know what you mean. can you give an example?

  17. Mario
    14. Juni 2010, 09:07 | #17

    Hallo,

    mich würde interessieren, ob eine Schnittstelle zur Sendungsverfolgung auch für die Deutsche Post (Einschreiben) existiert.

    Grüße
    Mario

  18. tabsl
    17. Juni 2010, 12:57 | #18

    Mario, mir ist diesbezüglich nichts bekannt. Da DHL und Deutsche Post ja auch zwei unterschiedliche Unternehmen sind, müsste man dort mal anfragen.

  19. Heiner
    2. November 2010, 08:39 | #19

    Warum geht das Script nicht mehr?

  20. tabsl
    14. November 2010, 10:40 | #20

    Bei mir geht es …

  21. 28. Juni 2011, 17:54 | #21

    Hallo Tobias,
    kannst Du mir vllt. den Ansprechpartner von DHL nennen, von dem Du die Infos hast? Neuerdings wird die öffentliche Api nämlich auch nicht mehr bedient.

  22. tabsl
    28. Juni 2011, 18:46 | #22

    du hast recht, bei uns geht die public-abfage auch nicht mehr. habe gerade kontakt mit dhl aufgenommen und melde mich wieder …

    UPDATE: die offene schnittstelle wird von dhl leider nicht mehr angeboten :(

  23. geeky
    17. Dezember 2012, 11:06 | #23

    Eine Track+Trace API ist seit einer Weile offiziell verfügbar.
    Doku findet man unter: http://entwickler.dhl.de

  1. Bisher keine Trackbacks