ANBINDUNGSLEITFADEN WARENPOST INTERNATIONAL FÜR SELBSTPROGRAMMIERER (REST-API)

Die Seite wird erstellt Dastin Zahn
 
WEITER LESEN
ANBINDUNGSLEITFADEN WARENPOST INTERNATIONAL FÜR SELBSTPROGRAMMIERER (REST-API)
Anbindungsleitfaden
     Warenpost International für
Selbstprogrammierer (ReST-API)

                     Version 1.0/Stand 3.3.2020
Warenpost International                                         Seite 2 von 65

Anbindungsleitfaden

Information und Identifikation

0.1    Änderungshistorie

Version      Datum          Bearbeitungsart                        Bearbeiter
1.0          3.3.2020       Erstellung                             Jan Henrik Walter,
                                                                   Georg Herrmann,
                                                                   Michael Steets
1.01         18.3.2020      Kleinere Korrekturen                   Michael Steets
1.03         5.6.2020       Feldänderungen für gepl. Release       Michael Steets
                            Mitte Juni 2020 (addressLine1-3,
                            senderPostalCode, contentPieceValue,
                            jobReference)

                                                                                                         2
Warenpost International                                                                                             Seite 3 von 65

 Anbindungsleitfaden

Inhaltsverzeichnis
Information und Identifikation ...................................................................................................... 2
    0.1        Änderungshistorie............................................................................................................................ 2
1      Einleitung ................................................................................................................................. 7
    1.1        Was ist Warenpost International? ................................................................................................ 7
    1.2        Wofür ist dieser Leitfaden? ............................................................................................................ 7
    1.3        Welche Möglichkeiten gibt es sonst noch, Warenpost International zu nutzen?............. 8
    1.4        Wofür ist dieser Leitfaden nicht?.................................................................................................. 9
2      Grundlegende Funktionsprinzipien von Warenpost International .................................. 10
    2.1        Funktionalitäten .............................................................................................................................. 10
    2.2        Zugang zu den Systemen ............................................................................................................. 10
    2.3    Umgebungen ................................................................................................................................... 10
      2.3.1   Sandbox – Ihre Spielwiese ................................................................................................... 10
       2.3.2           Livesystem ............................................................................................................................... 10
    2.4        Einschränkungen der API Warenpost International .............................................................. 10
3      Aufschaltprozess................................................................................................................... 11
    3.1        Dokumentation ............................................................................................................................... 11
    3.2        Account zu Testsystem und Testportokasse erhalten .......................................................... 11
    3.3        Testing............................................................................................................................................... 12
    3.4        Umstellung der Software auf die Liveumgebung .................................................................. 12
4      Workflows der Auftragserstellung (“Logiken”) ................................................................ 14
    4.1        Gemeinsamkeiten der Logiken: .................................................................................................. 14
    4.2        Unterschiede der Logiken ............................................................................................................ 14
    4.3        Logik 1: „Create Order Finalized“ ............................................................................................... 15
    4.4        Logik 2: „Create Order Open“ ...................................................................................................... 15
5      Prozesse der Auftragslogik - Basics .................................................................................... 16
    5.1        Authentizierung .............................................................................................................................. 16
    5.2        Testumgebung (Sandbox) ........................................................................................................... 16
    5.3        Livesystem ....................................................................................................................................... 16
6      Detailprozesse der Auftragslogik - Ordererzeugung ........................................................ 17
    6.1        Prozess/Logik Create Order Finalized....................................................................................... 17
       6.1.1           Request „Get Access Token“ ............................................................................................... 17
       6.1.2           Beispiel: .................................................................................................................................... 17
       6.1.3           Request „Create Order“ ........................................................................................................ 18
       6.1.4           Request „Get Item Labels” ................................................................................................... 19
    6.2        Beschreibung der Logik: Create Order Open........................................................................... 20
       6.2.1           Request „Get Access Token” ............................................................................................... 20
                                                                                                                                                                                 3
Warenpost International                                                                                               Seite 4 von 65

Anbindungsleitfaden

        6.2.2           Request „Create Order” ........................................................................................................ 20
        6.2.3           Request „Add Items to an Order” ....................................................................................... 20
        6.2.4           Request „Get Item Label“ ..................................................................................................... 20
        6.2.5           Request „Finalize Order“ ...................................................................................................... 21
    6.3         Weitere verfügbare Requests...................................................................................................... 21
        6.3.1           Get item .................................................................................................................................... 21
        6.3.2           Get Order.................................................................................................................................. 21
        6.3.3           Get shipments for an order ................................................................................................. 21
        6.3.4           Validate order items .............................................................................................................. 21
7       Umstieg und Einsatz im Produktivsystem .......................................................................... 21
    7.1         Voraussetzungen ............................................................................................................................ 21
8       Beispiel-Requests ................................................................................................................. 23
    8.1         Beispiel „Get Access Token“ in JSON und cURL (Sandbox) ................................................. 23
        JSON ........................................................................................................................................................... 24
        cURL............................................................................................................................................................ 24
        URL.............................................................................................................................................................. 24
        Autorisation .............................................................................................................................................. 24
        Header........................................................................................................................................................ 24
        Body ............................................................................................................................................................ 24
      Request ...................................................................................................................................................... 24
    8.2   Beispiel „Get Access Token“ in JSON und cURL (Livesystem) ............................................ 25
        JSON ........................................................................................................................................................... 25
        cURL............................................................................................................................................................ 25
        URL.............................................................................................................................................................. 25
        Autorisation .............................................................................................................................................. 25
        Header........................................................................................................................................................ 25
        Body ............................................................................................................................................................ 25
        Request ...................................................................................................................................................... 25
    8.3         Beispiel „Create Order Finalized” in Maximalausprägung (Sandbox) ............................... 26
        JSON ........................................................................................................................................................... 26
        cURL............................................................................................................................................................ 26
        URL.............................................................................................................................................................. 26
        Autorisation .............................................................................................................................................. 26
        Header........................................................................................................................................................ 26
        Body ............................................................................................................................................................ 26
        Request ...................................................................................................................................................... 26
    8.4         Beispiel für „Create Order Finalized” in Minimalausprägung (Sandbox) ......................... 28
        8.4.1           URL ............................................................................................................................................ 28
                                                                                                                                                                                     4
Warenpost International                                                                                               Seite 5 von 65

Anbindungsleitfaden

   8.4.2       Autorisation ............................................................................................................................. 28
   8.4.3       Header ...................................................................................................................................... 28
   8.4.4       Body .......................................................................................................................................... 28
   8.4.5       Response.................................................................................................................................. 29
 8.5    Beispiel für „Get Item Labels” ...................................................................................................... 30
   8.5.1       URL ............................................................................................................................................ 30
   8.5.2       Autorisation ............................................................................................................................. 30
   8.5.3       Header ...................................................................................................................................... 30
   8.5.4       Body .......................................................................................................................................... 30
   8.5.5       Response.................................................................................................................................. 30
 8.6    Beispiel für „Create Order Open” ................................................................................................ 31
   8.6.1       URL ............................................................................................................................................ 31
   8.6.2       Autorisation ............................................................................................................................. 31
   8.6.3       Header ...................................................................................................................................... 31
   8.6.4       Body .......................................................................................................................................... 31
   8.6.5       Response.................................................................................................................................. 31
 8.7    Beispiel für „Add Items to an Order” in Minimalausprägung .............................................. 32
   8.7.1       URL ............................................................................................................................................ 32
   8.7.2       Autorisation ............................................................................................................................. 32
   8.7.3       Header ...................................................................................................................................... 32
   8.7.4       Body .......................................................................................................................................... 32
   8.7.5       Response.................................................................................................................................. 32
 8.8    Beispiel für „Add Items to an Order” in Maximalausprägung.............................................. 34
   8.8.1       URL ............................................................................................................................................ 34
   8.8.2       Autorisation ............................................................................................................................. 34
   8.8.3       Header ...................................................................................................................................... 34
   8.8.4       Body .......................................................................................................................................... 34
   8.8.5       Response.................................................................................................................................. 35
 8.9    Beispiel für ”Get Item Label” ........................................................................................................ 37
   8.9.1       URL ............................................................................................................................................ 37
   8.9.2       Autorisation ............................................................................................................................. 37
   8.9.3       Header ...................................................................................................................................... 37
   8.9.4       Body .......................................................................................................................................... 37
   8.9.5       Response.................................................................................................................................. 37
 8.10       Beispiel für einen „Finalize Order” request (Sandbox): .................................................... 38
   8.10.1      URL ............................................................................................................................................ 38
   8.10.2      Autorisation ............................................................................................................................. 38
   8.10.3      Header ...................................................................................................................................... 38

                                                                                                                                                                           5
Warenpost International                                                                                               Seite 6 von 65

Anbindungsleitfaden

       8.10.4         Body .......................................................................................................................................... 38
       8.10.5         Response.................................................................................................................................. 38
    8.11          Beispiel für einen „Get item“ request (Sandbox) ............................................................... 41
       8.11.1         URL ............................................................................................................................................ 41
       8.11.2         Autorisation ............................................................................................................................. 41
       8.11.3         Header ...................................................................................................................................... 41
       8.11.4         Body .......................................................................................................................................... 41
       8.11.5         Response.................................................................................................................................. 41
    8.12          Beispiel für einen „Get Order“ Request (Sandbox) ............................................................ 43
       8.12.1         URL ............................................................................................................................................ 43
       8.12.2         Autorisation ............................................................................................................................. 43
       8.12.3         Header ...................................................................................................................................... 43
       8.12.4         Body .......................................................................................................................................... 43
      8.12.5 Response.................................................................................................................................. 43
    8.13    Beispiel für einen „Get shipments for an order“ Request ................................................ 46
       8.13.1         URL ............................................................................................................................................ 46
       8.13.2         Autorisation ............................................................................................................................. 46
       8.13.3         Header ...................................................................................................................................... 46
       8.13.4         Body .......................................................................................................................................... 46
      8.13.5 Response.................................................................................................................................. 46
    8.14    Beispiel für einen „validate order item“ Request ............................................................... 48
       8.14.1         URL ............................................................................................................................................ 48
       8.14.2         Autorisation ............................................................................................................................. 48
       8.14.3         Header ...................................................................................................................................... 48
       8.14.4         Body .......................................................................................................................................... 48
       8.14.5         Response.................................................................................................................................. 50
9      Detaillierte Feldbeschreibung ............................................................................................. 51
10         Produktliste Warenpost International ............................................................................ 55
11         Liste der Länder, in die Warenpost International verschickt werden kann ................. 56
12         Support und Ansprechpartner ......................................................................................... 65

                                                                                                                                                                                  6
Warenpost International                                          Seite 7 von 65

Anbindungsleitfaden

1       Einleitung
1.1     Was ist Warenpost International?
Warenpost International ist die Lösung für den Versand kleinteiliger Produkte, Ersatzteile, Warenproben oder
Muster.
       verschiedene Varianten und Tarife
       Nutzung ausschließlich online
       Mehrere Zugangskanäle
       Einlieferung der physischen Sendungen wie gewohnt
       Abrechnung über Internetmarke
       Weitere Details finden Sie im offiziellen Produktblatt:
        https://www.deutschepost.de/content/dam/dpag/images/B_b/Briefe_ins_Ausland/warenpostintern
        ational/dp-warenpost-international-produktblatt-012020.pdf

       Informationen zur Nutzung des Kilotarifs finden Sie unter: https://www.deutschepost.de/de/b/briefe-
        ins-ausland/warenpost-international/warenpost-international-kilotarif.html
       Antworten auf weitere grundsätzliche Fragen finden Sie auch unter
        https://www.deutschepost.de/de/b/briefe-ins-ausland/haeufige-fragen.html

1.2     Wofür ist dieser Leitfaden?
Auf den nachfolgenden Seiten finden Sie eine erste Anleitung zur Erstellung von Aufträgen für Warenpost
International und die Erzeugung der dafür genutzten Sendungsetiketten (Label) über die ReST-basierte
Deutsche Post International Shipping-API (aka PacketPlus-API).
Die API unterstützt Sie dabei besonders in folgenden Aspekten:
       Erfassung von Zollinhaltsdaten
            o Bei Sendungen in Nicht-EU-Länder ist neben Absender und Empfänger auch die Angabe des
               Sendungsinhalts zwingend erforderlich. Diese Daten werden digital an die Zollbehörden des
               jeweiligen Ziellandes übermittelt.

       Nutzung international standardisierter Etiketten
           o Die Nutzung von Warenpost International setzt im Wesentlichen die Nutzung des „Harmonized
              Labels“, einem standardisierten Labelformat für den internationalen Warenversand, voraus.
              (vgl.
              https://www.deutschepost.de/content/dam/dpag/images/B_b/Briefe_ins_Ausland/warenpos
              tinternational/dp-warenpost-international-harmonisiertes-label-01-2020.pdf ).

Lediglich beim Warenversand innerhalb der EU ohne Sendungsverfolgung (EU untracked) kann darauf
verzichtet werden. Jedoch empfehlen wir auch für diese Sendungen, das Harmonized Label zu nutzen. Über
                                                                                                               7
Warenpost International                                          Seite 8 von 65

Anbindungsleitfaden

die PacketPlus-API wird für alle Produkte Warenpost International das Harmonized Label in der jeweils
aktuellen Version erzeugt.
       Nutzung vorhandener Zahlungsart per Internetmarke
           o Die Frankierung auf dem Label wird über die Internetmarke erstellt. Daher ist zur Nutzung von
              Warenpost International über die API auch eine Portokasse zur Bezahlung der erzeugten
              Internetmarken erforderlich. Die API stellt dabei eine (implizite) ReST-Service-Fassade für den
              ihnen evtl. bekannten Internetmarken-SOAP-Webservice bereit.

1.3 Welche Möglichkeiten gibt es sonst noch, Warenpost International zu
nutzen?
Falls die Selbstprogrammierung unter Nutzung der API nicht in Frage kommt, bieten wir zusätzliche, hier nicht
weiter ausgeführte, Möglichkeiten zur Nutzung von Warenpost International an:
Alle Produkte der Kategorie „Warenpost International “ werden über verschiedene elektronische Plattformen
angeboten, aktuell verfügen Sie über drei weitere Möglichkeiten:

   1. Für kleine Versandmengen bieten wir registrierten Geschäftskunden den Abruf über den Shop der
      Deutschen Post an unter https://shop.deutschepost.de/shop/katalog/index.jsp.

        Der Online-Shop der Deutschen Post bietet Ihnen folgende Vorteile:
           a. Einfache Datenerfassung
           b. Erstellung des empfohlenen Harmonized Label (aber eben nur einzeln)
           c. Kein eigener Programmieraufwand

   2.          Für Kunden mit großem Sendungsvolumen steht das elektronische Auftragsmanagement der
               Deutschen Post (AM.exchange) auch für Warenpost International offen. Die Direktanbindung
               finden Sie unter deutschepost.de/am (
               https://www.deutschepost.de/de/e/elektronisches_auftragsmanagement.html)

   3. Darüber hinaus ist Warenpost International in verschiedene Versand- und Logistiksoftwareprodukte
      von Drittanbietern integriert. Den aktuellen Stand erhalten Sie jeweils unter
      https://www.deutschepost.de/de/b/briefe-ins-ausland/warenpost-international.html sowie unter
      https://www.deutschepost.de/de/i/internetmarke-porto-
      drucken/geschaeftskunden/partner.html#partnerfinder

                                                                                                            8
Warenpost International                                             Seite 9 von 65

Anbindungsleitfaden

1.4   Wofür ist dieser Leitfaden nicht?
     Diese Anleitung beschreibt nicht den Versand nationaler Warenpost oder anderer Brief- oder Paketprodukte.
     Sie ersetzt auch nicht die möglicherweise bekannte Beschreibung der SOAP-Schnittstelle für die Nutzung der
      Internetmarke.

                                                                                                              9
Warenpost International                                         Seite 10 von 65

Anbindungsleitfaden

2       Grundlegende Funktionsprinzipien von Warenpost International
2.1     Funktionalitäten
       ReST-API als Ersatz der bekannten Internetmarken-SOAP-Schnittstelle
            o sofern Harmonized Label benötigt
            o sofern Zollinhaltsdaten benötigt
       Integration von Portokassen über Autorisierungsfunktion
       Zusammenstellung von Einzelsendungen zu größeren Einheiten, sog. Orders oder Aufträgen
       Übertragung in die Systeme der Deutschen Post zur Weiterverarbeitung und automatischen
        Übertragung von Zollinhaltsdaten
       Erzeugung von Harmonized Labels/Sendungsetiketten mittels standardisierter ReST-Calls

2.2     Zugang zu den Systemen
Der Einsatz der ReST-API für Warenpost International ist ausschließlich für Geschäftskunden
(Selbstprogrammierer) und Partner vorgesehen. Zugangsdaten können über den zuständigen vertrieblichen
Ansprechpartner oder auch direkt vom technischen Support angefordert werden.

2.3     Umgebungen
2.3.1 Sandbox – Ihre Spielwiese
           Testsystem zur Unterstützung für Partner und Selbstprogrammierer
           Bereitstellung ReST-Schnittstelle zur kompletten Abbildung des Workflows
           Keine Kosten durch Nutzung von Testportokasse
           Geringer Umstellungsaufwand auf Livesystem

2.3.2 Livesystem
           Bereitstellung ReST-Schnittstelle zur kompletten Abbildung des Workflows
           Nutzung existierender Portokassen (Internetmarke) zur Abrechnung der Versände; Kilotarif-
            Abrechnung zusätzlich über AM
           Vollständige Nutzung der Produkte nur für Geschäftskunden mit Kilotarifen

2.4     Einschränkungen der API Warenpost International
           Tracking von Sendungsinformationen über die API ist nicht möglich. Funktionalität nur über die
            bekannten Methoden des Track Event Information Services bzw. Aufruf der Webseite zu Tracking
            Informationen der Deutsche Post DHL.

                                                                                                           10
Warenpost International                                        Seite 11 von 65

Anbindungsleitfaden

3     Aufschaltprozess
3.1   Dokumentation
      Diese Dokumentation soll Ihnen die fachlichen und technischen Prinzipien der ReST-API für
      Warenpost International verdeutlichen und Ihnen die notwendigen Informationen für eine erfolgreiche
      Programmierung bereitstellen.

      Im Bestreben, Ihnen den bestmöglichen Support zu bieten und die Dokumentation laufend zu
      verbessern, nehmen wir Anregungen bzgl. Unklarheiten, Ungenauigkeiten oder Fehlern zur
      Verbesserung dieser Dokumentation unter api@deutschepost.de gerne entgegen.

3.2   Account zu Testsystem und Testportokasse erhalten
      Die Aufschaltung für Warenpost International mittels API (für Selbstprogrammierer) erfolgt im ersten
      Schritt mit einer Aufschaltung für die Testumgebung („Sandbox“) und stellt die hierfür notwendigen
      Zugänge zur Verfügung.

      Minimale Voraussetzungen hierfür sind:
       Ihr Firmenname
       Ihr Name und Ihre Email
       Post-Kundennummer (EKP)
       Falls Sie bereits über eine Partneranbindung (PARTNER_ID) an die Internetmarke (in der
         Liveumgebung) verfügen, wäre eine Information darüber wünschenswert. Für den Test in der
         Sandbox wird sie nicht benötigt, im Vorfeld können wir aber ggfs. bereits „Stolpersteine“
         beseitigen, die sich ggfs. durch unklare Formulierungen in dieser Doku ergeben.

      Das Anlegen der Zugänge auf Seiten der Post beinhaltet:
       Das Anlegen notwendiger Kundenstammdaten zur Nutzung individueller Tarife (Kilotarif).
       die Bereitstellung einer kundenspezifischen Testportokasse in der Sandbox. Die Portokasse stellt
         die erste Autorisierungsebene innerhalb der Requests an die API dar.

      Die Testportokasse in Form einer fiktiven Mailadadresse und das Portokassenpasswort werden vom
      API-Support erzeugt und dem Kunden per E-Mail übermittelt. Diese kundenindividuellen Daten dienen
      als Nutzername und Passwort, um den zur Nutzung aller folgenden Requests jeweils notwendigen
      Usertoken zu erzeugen.

      Bitte beachten Sie, dass in der Sandbox Ihre möglicherweise bereits existierenden Portokassen aus der
      Produktionsumgebung oder eine im Rahmen einer Anbindung an die Internetmarke (SOAP-API)
      existierenden Testportokassen nicht nutzbar sind. Test- und Produktionsumgebung sind strikt
      voneinander getrennt.

      Einschränkungen:

                                                                                                           11
Warenpost International                                          Seite 12 von 65

Anbindungsleitfaden

         Eine Entwicklung gegen die Liveumgebung ist für die Nutzung der PacketPlus-API nicht
          zweckmäßig und wird nur in Ausnahmefällen unterstützt.

3.3   Testing
      Der Kunde kann nun mit den ihm zur Verfügung gestellten Zugangsdaten seine Software für die
      Erzeugung von Aufträgen und Labels mittels der erforderlichen ReST-Calls gegen die Sandbox
      durchführen.
      Nach erfolgreicher Entwicklung erfolgt dann auf Kundenwunsch der Schritt zur Liveumgebung.

3.4   Umstellung der Software auf die Liveumgebung
      Der Wechselzeitpunkt auf die Liveumgebung wird vom Kunden selbst bestimmt. Hierfür sind nur
      wenige Schritte notwendig, die dafür notwendigen Informationen und Zugangsdaten liegen in der
      Regel bereits im Vorfeld vor, können durch den Kunden selbst durchgeführt bzw. angefordert
      werden.

      Notwendige durchzuführende Anpassungen und Voraussetzungen:

  1. Die Aufrufpfade der API ändern sich von https://api-qa.deutschepost.com auf
     https://api.deutschepost.com

  2. Für die Autorisierung muss eine Kunden-Portokasse aus der Liveumgebung genutzt werden. In der
     Regel liegen Nutzername („Mailadresse“ der Portokasse) sowie Passwort dem Kunden bereits vor. Ist
     dies nicht der Fall, kann der Kunde eine individuelle, sich selbst zugeordnete Portokasse unter
     https://portokasse.deutschepost.de/portokasse/#!/ selbst erstellen.

      Hinweis: Nutzernamen und Passwort dürfen kein „&“ enthalten!

  3. Zur Nutzung der Kilotarif-Produkte ist der Abschluss eines entsprechenden Vertrags erforderlich, dies
     kann online unter
     https://www.dhl.de/content/dpks/de/themenauswahl/kundenservice-formulare/warenpost-
     international.html geschehen. Das Vorliegen einer Post-Kundennummer (EKP) wird dabei
     vorausgesetzt.
  4. Stellen Sie sicher, dass bei (geplanter) Nutzung von Kilotarifen die EKP auch in der genutzten
     Kundenportokasse hinterlegt ist. Dies können Sie in den Einstellungen Ihrer Portokasse überprüfen
     bzw. ändern (siehe Screenshot).

                                                                                                          12
Warenpost International                                            Seite 13 von 65

Anbindungsleitfaden

      Beachten Sie, dass es nach Eintragen Ihrer EKP bis zu 24h dauern kann, bis Kilotarife mit Ihrer
      Portokasse nutzbar sind.
      Die Nutzung von Einzeltarifprodukten ist dagegen nicht an eine EKP gebunden.

  5. Sofern noch nicht vorliegend, sollte nun spätestens die Anforderung von PARTNER_ID und
     SCHLUESSEL_DPWN_PARTNER beim Team der Internetmarke (mail: pcf-1click@deutschepost.de)
     erfolgt sein. Falls diese noch nicht vorliegen, können sie über folgenden Link beantragt werden
     https://www.deutschepost.de/content/dam/dpag/images/i_i/Internetmarke/partnerwerden/dp-
     internetmarke-anmeldebogen-api-anbindung.pdf

      Partnern der Deutschen Post, die bereits die Programmierung der Internetmarke nutzen, liegen diese
      Daten in der Regel vor. Diese kundenindividuellen Daten werden in der Liveumgebung für die
      Berechnung eines gültigen Request-Headers zwingend benötigt. Falls erforderlich, können diese beim
      Team Internetmarke erneut angefordert werden.

  6. Anders als in der Sandbox ist die Gültigkeit eines Request-Header durch Verwendung eines
     Timestamps auf vier Minuten begrenzt. Das bedeutet, dass ein gültiger Request-Header jeweils
     zeitnah neu berechnet werden muss. Die genaue Berechnungsvorschrift zur Generierung des Headers
     finden Sie in Kapitel 7.1 (Umstieg aufs Livesystem).

      Zusammenfassend gesagt, sind Ihre Requests gegen das Livesystem also immer durch Ihre
      individuelle Liveportokasse („Internetmarken-Token“) autorisiert und Ihren individuellen, jeweils
      dynamisch erzeugten, Header authentifiziert.

                                                                                                             13
Warenpost International                                            Seite 14 von 65

Anbindungsleitfaden

4      Workflows der Auftragserstellung (“Logiken”)

Um einen Auftrags („order“) für Warenpost International über die API zu erstellen, existieren aktuell zwei
verschiedene Möglichkeiten (im weiteren Verlauf “Logiken“ genannt).
Beiden Logiken liegt ein grundsätzlicher Workflow zur Erstellung von Aufträgen zugrunde. Dieser richtet sich
letzten Endes nach den individuellen Prozessen und Bedürfnissen der sie verwendenden Kunden. Vereinfacht
gesagt, ein Auftrag kann entweder in einem einzigen Schritt vollständig erzeugt werden oder aber eine
Auftragshülle wird sukzessive mit Auftragspositionen gefüllt.

4.1    Gemeinsamkeiten der Logiken:

    1. Authentifizieren
    2. Zusammenstellung eines Auftrags inkl. der Auftragspositionen („items“)
           a. Druck der Versandetiketten („Label“) vor Finalisierung
    3. Finalisierung des Auftrags
           a. alternativ Druck der Versandetiketten nach Finalisierung

Die Finalisierung eines Auftrags sorgt für seine Übertragung und Weiterverarbeitung in die Systeme der
Deutschen Post. Unter anderem wird die notwendige Übertragung der Sendungsdaten in die Zollsysteme der
Empfängerländer sowie (zukünftig (!) auch die Übertragung an das Auftragsmanagement AM der Deutschen
Post) angestoßen. Deshalb kann ein finalisierter Auftrag nicht mehr verändert werden.

Ein finalisierter Auftrag wird als Shipment oder „AWB“ gespeichert und erhält eine AWB-ID (sichtbar in der
Response beim Finalisieren).
Ein AWB entspricht in etwa der möglicherweise aus dem Bereich „Auftragsmanagement“ bereits
bekannten Einlieferungsliste.

4.2    Unterschiede der Logiken

Unterschiede gibt es, wie gesagt, in der zeitlichen Abfolge/Dauer der Auftragserstellung, also letzten Endes im
Workflow.

Ein Auftrag kann

    1. In einem einzigen Vorgang erstellt und abgeschlossen werden („Logik 1“) oder
    2. eröffnet, über einen Zeitraum hinweg mit Items gefüllt und erst am Schluss abgeschlossen/finalisiert
       werden („Logik 2“).

                                                                                                              14
Warenpost International                                         Seite 15 von 65

Anbindungsleitfaden

4.3    Logik 1: „Create Order Finalized“
Diese Logik eignet sich, wenn alle Sendungen („Items“), die zu einem Auftrag zusammengefasst werden
sollen, bereits bekannt/fertig sind. In einem einzigen großen Request wird der Auftrag erstellt, die Sendungen
diesem Auftrag zugeordnet und der Auftrag automatisch abgeschlossen (finalisiert). Daraufhin können dann
alle zu diesem Auftrag gehörenden Label mit einem weiteren Request erstellt werden.
Eine nachträgliche Änderung des Auftrags ist jedoch in dieser Logik nicht mehr möglich.

Aus Performancegründen sollte die Anzahl der Sendungen hier nicht mehr als 300 Sendungen in einem
Auftrag betragen.
Die drei hierfür mindestens zu implementierenden Requests sind:

1. Get Access Token
2. Create Order
3. Get Item Labels

Darüber hinaus existiert eine Reihe weiterer nutzbarer Requests, welche Ihnen im Verlauf dieses Dokumentes
vorgestellt werden.

4.4    Logik 2: „Create Order Open“
Bei dieser Logik wird zunächst eine Auftragshülle angelegt und danach werden einzelne Sendungen
hinzugefügt. Die Item-Label können dann einzeln und direkt nach dem Hinzufügen der Sendungen zum
Auftrag erzeugt werden.
Die maximal einem Auftrag zuordenbare Menge an Sendungen beträgt in dieser Logik 5000.
Aus Performancegründen und zur Erhöhung der Übersichtlichkeit wird jedoch empfohlen, deutlich unter
diesem Maximums zu bleiben.
Alternativ (und wie in Logik 1) können auch hier alle Label nach Finalisierung eines Auftrages erzeugt werden.
In diesem Fall sollte auch hier die Anzahl von Sendungen in einem Auftrag auf maximal 300 Sendungen
beschränkt werden.
Die hierfür mindestens zu implementierenden Requests sind:

1. Get Access Token
2. Create Order
3. Add Items to an Order
4. Get Item Label
5. Finalize Order

Auch hier stehen weitere Requests zur Verfügung, welche ihnen im Verlauf dieses Dokuments vorgestellt
werden.

                                                                                                             15
Warenpost International                                            Seite 16 von 65

Anbindungsleitfaden

5      Prozesse der Auftragslogik - Basics
5.1    Authentizierung
Zur erfolgreichen Ausführung eines Requests ist jeweils das Vorliegen eines (zeitlich begrenzen) gültigen
Zugriffstokens erforderlich.
Die API nutzt das OAuth 2.0-Protokoll, um durch eine Kombination aus Authentifizierung und Autorisierung
durch den „Get Access Token“ API-Call ein „OAuth2 Bearer Token“ zu generieren und Ihnen dadurch den
Zugang zur „Deutschen Post International Shipping API“ zu ermöglichen
Die Autorisierung und damit die Nutzung der API ist durch HTTP Basic Authentifizierung gesichert, bei der Sie
Ihre Portokassen E-Mail und das Portokassenpasswort angeben müssen, da hierüber die Bezahlung durch die
Internetmarke erfolgt.

Vereinfacht gesagt: die Informationen des Headers berechtigt einen Partner zum grundsätzlichen Zugriff auf
das System der Internetmarke. Dieser Zugriff erfolgt implizit durch die Nutzung der entsprechenden API-
Requests. Ein expliziter Aufruf, wie es der Partner ggfs. aus der Internetmarken-(SOAP)-API kennt, findet hier
nicht statt.

In der Sandbox nutzt er die PARTNER_ID (auch bekannt als „Channel“) „DP_LT“ der Deutschen Post (die als
alleiniger Partner in der Sandbox fungiert), in der Liveumgebung nutzt ein Partner oder Eigenentwickler seine
individuelle PARTNER_ID.
Die Nutzung einer spezifischen Portokasse für einen Auftrag (nämlich über den mit der jeweiligen
Autorisierung abgerufenen Token) legt dann zum Beispiel fest, aus welcher Kasse resp. von welchem
Endkunden/Mandanten die jeweiligen Sendungen bezahlt werden (vereinfacht gesagt).

5.2    Testumgebung (Sandbox)
In der Sandbox wird ein vereinfachter Authentifizierungsprozess genutzt, um u.a. Aufwände im Zuge einer
Entwicklung zu minimieren. Die Gültigkeitsdauer eines durch die Internetmarke bereitgestellten Tokens ist
deutlich länger und die Zugangsberechtigung zum System der Internetmarke wird durch einen für alle Nutzer
vereinheitlichten Header sichergestellt.

5.3    Livesystem
Im Livesystem erfolgt der grundsätzliche Zugang über einen firmenspezifischen und jeweils zeitnah neu zu
berechnenden Header (Aktualisierung des Timestamps und der abhängigen Felder), darüber hinaus beträgt
die Gültigkeit eines Tokens lediglich vier Minuten.

                                                                                                              16
Warenpost International                                          Seite 17 von 65

Anbindungsleitfaden

6      Detailprozesse der Auftragslogik - Ordererzeugung
6.1    Prozess/Logik Create Order Finalized
6.1.1 Request „Get Access Token“

Als ersten Schritt müssen Sie sich gegen die API authentifizieren, um Warenpost International nutzen zu
können. Dazu wird ein Token über die Internetmarke abgerufen.

Im Folgenden zur Verdeutlichung ein Beispiel aus der Testumgebung; wie bereits oben erwähnt,
unterscheiden sich die notwendigen Angaben zur Authentifizierung auf dem Testsystem von denen in der
Produktion. Daher wird das folgende Beispiel auch nur in der Testumgebung funktionieren!

6.1.2 Beispiel:

Voraussetzungen/Annahmen:

    1. Für die Testumgebung erhalten Sie ihre Portokassen-Email und -Passwort von der Deutschen Post im
       folgenden beispielhaften Format. Zusammen mit den weiter unten angegeben Headerdaten können
       Sie in unserer Testumgebung ein Access Token erhalten. Das Vorgehen zur Produktivnutzung ist in
       Kapitel 7 beschrieben.

    2. Beispiel für Portokassen-Email: wapo@test.de

    3. Beispiel für Portokassen Passwort: wapoTestPw123

    4. Im HTTPS Request muss die HTTP Basic Authentifizierung genutzt werden.

       Portokassen-Email und Portokassen-Passwort müssen dabei base64 verschlüsselt werden. Bei der
       Verschlüsselung werden E-Mail und das Passwort mit einem Doppelpunkt „:“ getrennt. Weiterhin ist
       UTF-8 als Characterset zu verwenden.

              Authentifizierung: Basic
Warenpost International                                            Seite 18 von 65

Anbindungsleitfaden

                KEY_PHASE: 1
                PARTNER_ID: DP_LT
                REQUEST_TIMESTAMP: 16082018-122210
                PARTNER_SIGNATURE: 9d7c35be

       Diese konkreten vier Header-Informationen sind, wie bereits erwähnt, ausschließlich in der
       Testumgebung nutzbar, da in dieser die dynamische Prüfung von TIMESTAMP und Hashwert
       (PARTNER_SIGNATURE) entfällt.

   6. Sie erhalten daraufhin eine Antwort (Response) im SOAP/XML-Format mit einem gültigen Token, dem
      UserToken für die weiterführenden Requests. Dieses Format wurde gewählt, da es den meisten
      Kunden bereits von den nativen Internetmarken-SOAP-Requests bekannt sein dürfte. Alle weiteren
      Responses sind demgegenüber in JSON gehalten.

       Beispielantwort/-Response:

        yDI0S6akfOJsY7DV6EcKeaAfsCIAlbpGKv1ppielQ6o=
        484440
        false
        
6.1.3 Request „Create Order“
Der nächste Schritt ist die Anlage einer sogenannten „Order“. Dies ist eine Auftragshülle zur Erfassung von 1 –
max. 5000 Einzelsendungen, wobei wir je nach Nutzungskontext empfehlen deutlich weniger Sendungen in
einem Auftrag zusammenzufassen. Für jede Einzelsendung können die folgenden Datenfelder erfasst werden.
Der Content-Part ist dabei nur für Nicht-EU-Sendungen notwendig. Details sowie die Angabe welche Felder
verpflichtend oder optional sind, finden sie in Kap. 7. In Kap. 6 finden sie Beispiel-Requests. Informationen zu
den nutzbaren Länderkürzeln finden sie in Kap. 9.

 -customerEkp          Items (1/2):              Items(2/2):               Contents:
 -orderStatus          -product                  -returnItemWanted         -contentPieceHsCode
                       -serviceLevel             -shipmentAmount           -contentPieceDescription
 Paperwork:                                      -shipmentCurrency         -contentPieceNetweight

                                                                                                               18
Warenpost International                                           Seite 19 von 65

Anbindungsleitfaden

    -contactName         -custRef                 -shipmentGrossWeight     -contentPieceOrigin
    -jobReference        -recipient               -senderName              -contentPieceAmount
    -pickupType          -recipientPhone          -senderAddressLine1      -contentPieceValue
    -awbCopyCount        -recipientFax            -senderAddressLine2
                         -recipientEmail          -senderCountry
                         -addressLine1            -senderCity
                         -addressLine2            -senderPostalCode
                         -addressLine3            -senderPhone
                         -city                    -senderEmail
                         -state                   -shipmentNaturetype
                         -postalCode
                         -destinationCountry

6.1.4 Request „Get Item Labels”
Mit diesem Request rufen sie alle Labels ihrer Sendungen in einer Datei ab und können diese nun ausdrucken.
Dabei stehen ihnen folgende Optionen zur Verfügung:

    “image/png” (A6)
    “image/png+6x4” (6x4 inch)
    “application/pdf” (A6)
    “application/pdf+singlepage” (A6)
    “application/pdf+singlepage+6x4” (6x4 inch)
    “application/zpl” (A6)
    “application/zpl+rotated” (rotated by 90 degrees for label printers)
    “application/zpl+6x4” (6x4 inch)
    “application/zpl+rotated+6x4” (6x4 inch and rotated by 90 degrees for label printers)

Die Festlegung erfolgt im Header-Parameter ACCEPT.

                                                                                                               19
Warenpost International                                             Seite 20 von 65

Anbindungsleitfaden

6.2    Beschreibung der Logik: Create Order Open
6.2.1 Request „Get Access Token”
Als erstes müssen sie einen Token über die Internetmarke abfragen. Siehe Kapitel 3.1.

6.2.2 Request „Create Order”
Nun können sie einen neuen Auftrag erstellen/öffnen, in welchen Sie die Items über den Tag verteilt
hinzufügen können.

Benötigte Felder (required fields):

      customerEkp
      orderStatus

6.2.3 Request „Add Items to an Order”
Nach der Erstellung eines Auftrags werden nun die Sendungen einzeln oder max. 2500 mit diesem Request
hinzugefügt. Details zu den einzelnen Feldern finden sie in Kap. 7. In Kap. 6 finden sie Beispiele. Informationen
zu den nutzbaren Länderkürzeln finden sie in Kap. 9

 Items (1/2):                    Items(2/2):                  Contents:
 -product                        -returnItemWanted            -contentPieceHsCode
 -serviceLevel                   -shipmentAmount              -contentPieceDescription
 -custRef                        -shipmentCurrency            -contentPieceNetweight
 -recipient                      -shipmentGrossWeight         -contentPieceOrigin
 -recipientPhone                 -senderName                  -contentPieceAmount
 -recipientFax                   -senderAddressLine1          -contentPieceValue
 -recipientEmail                 -senderAddressLine2
 -addressLine1                   -senderCountry
 -addressLine2                   -senderCity
 -addressLine3                   -senderPostalCode
 -city                           -senderPhone
 -state                          -senderEmail
 -postalCode                     -shipmentNaturetype
 -destinationCountry

6.2.4 Request „Get Item Label“
Mit diesem Request rufen sie jeweils genau ein Label in einer Datei ab und können dieses nun ausdrucken.
Dabei stehen ihnen folgende Optionen zur Verfügung:

 “image/png” (A6)
                                                                                                                20
Warenpost International                                           Seite 21 von 65

Anbindungsleitfaden

   “image/png+6x4” (6x4 inch)
   “application/pdf” (A6)
   “application/pdf+singlepage” (A6)
   “application/pdf+singlepage+6x4” (6x4 inch)
   “application/zpl” (A6)
   “application/zpl+rotated” (rotated by 90 degrees for label printers)
   “application/zpl+6x4” (6x4 inch)
   “application/zpl+rotated+6x4” (6x4 inch and rotated by 90 degrees for label printers)

Die Festlegung erfolgt im Header-Parameter ACCEPT

6.2.5 Request „Finalize Order“
Den erstellten Auftrag müssen sie nun noch abschließen/finalisieren. Dies können sie einmalig am Ende eines
Tages machen oder nach Bedarf über den Tag verteilt. Z.B. um mehrere Label mit einem Request zu erzeugen
oder um die Anzahl der Sendungen pro Auftrag zu begrenzen.

6.3     Weitere verfügbare Requests

6.3.1 Get item
Sie erhalten alle Information über das angegebene Item.

6.3.2 Get Order
Sie erhalten die Auftragsdaten (den „Auftragskopf“) für die angegebenen orderID.

6.3.3 Get shipments for an order
Sucht nach Sendungen, die an eine bestimmte Bestellung angehängt sind. Antworten mit dem Status
"Nicht gefunden" (404) erscheinen, wenn keine Bestellung vorhanden ist oder wenn dieser
Bestellung keine Sendungen beigefügt sind.

6.3.4 Validate order items
Vorabprüfung eines create-order Auftrages.
Beispiele für diese Requests finden sie in Kap. 8

7       Umstieg und Einsatz im Produktivsystem
7.1     Voraussetzungen

                                                                                                              21
Warenpost International                                         Seite 22 von 65

Anbindungsleitfaden

Jeder Request für Warenpost International wird daraufhin geprüft, ob die Anfrage von einem zugelassenen
System stammt. Dazu übermittelt das anfragende System im Header folgende
Authentifizierungsinformationen:

 Header Element         Kurzbeschreibung           notwendig   Typ       Länge   Hash   Beispiel-   Default
                                                   (JA/NEIN)                            Werte
 PARTNER_ID             Die mit dem Partner        JA          STRING    5       Y      IMPAR
                        vereinbarte ID.
 REQUEST_TIMESTAMP      Absendezeitpunkt           JA          DDMMYYY   15      Y      02022020-
                        (Datum und Uhrzeit)                    Y-                       0135500
                        des Requests. Darf bei                 HHMMSS
                        Absetzten des
                        Requests nicht älter als
                        vier Minuten sein,
                        ansonsten wird der
                        Request abgewiesen.
 KEY_PHASE              vereinbarte Version des    JA          NUMBER    3       Y      1           1
                        Geheimnisses (Default:
                        1).
 SIGNATURE_ALGORIT      Verwendeter                NEIN        STRING    16      Y      md5         Md5
 HM                     Signaturalgorithmus
                                                                                        sha-256
                        (entfällt bei Warenpost
                        International; nur für                                          sha-384
                        Internetmarken-API
                                                                                        sha-512
                        relevant)
 PARTNER_SIGNATURE      Signatur (Hash) des        JA          ALPHANU   8       Y      a0b1c2d3
                        Requests über die                      M-
                        zwischen DPAG und
                                                               ERISCH
                        Drittanbieter
                        definierten Felder.
                        Stimmt der Hash nicht
                        überein, so wird der
                        Request abgewiesen.
                        Die genaue
                        Zusammensetzung der
                        Signatur ist
                        nachfolgend
                        beschrieben.
Die Signatur/Prüfsumme wird als MD5-Hash, basierend auf den Inhalten der folgenden Felder berechnet:

      PARTNER_ID
      REQUEST_TIMESTAMP
      KEY_PHASE
      SCHLUESSEL_DPWN_PARTNER

                                                                                                          22
Warenpost International                                             Seite 23 von 65

Anbindungsleitfaden

Für die Prüfsummenbildung werden die Inhalte der o. g. Felder aneinandergehängt.
Alle Feldinhalte werden rechts und links um Blanks bereinigt und mit dem Trenner „::“ versehen konkateniert.
Wenn ein Feld leer oder im Request nicht vorhanden ist, werden folgende Trennzeichen angewendet „::::“

Das Ergebnis wird als Eingabe für die HASH Erstellung verwendet, das Ergebnis ist ein MD5-Hashwert. Die
Bytes werden in ihrer hexadezimalen Darstellung (mit a–f in Kleinbuchstaben) in einen Text umgewandelt.
Hexadezimale Darstellungen von Bytes, die nur über eine Stelle verfügen (0–f) werden um eine führende Null
erweitert (00–0f).
Die ersten 8 Zeichen des daraus resultierenden Textes werden im Feld PARTNER_SIGNATURE abgelegt.

Auf der Empfängerseite (also der Post) werden dieselben Schritte zur Verifizierung der
PARTNER_SIGNATURE durchgeführt. Zusätzlich wird geprüft, ob zwischen dem Wert REQUEST_TIMESTAMP
und dem aktuellen Systemdatum nicht mehr als vier Minuten vergangen sind.

Berechnungsbeispiel:

PARTNER_ID, SCHLUESSEL_DPWN_PARTNER: statisch je Partner
KEY_PHASE: immer = „1“
TIMESTAMP: aktuelle Zeit

Ergebnis: PARTNER_SIGNATURE

POST-Parameter                    Wert
URL                               https://internetmarke.deutschepost.de/OneClickForApp/V3 (nur z.K.)
PARTNER_ID                        XXXXX
REQUEST_TIMESTAMP                 15012020-102200
KEY_PHASE                         1
SCHLUESSEL_DPWN_PARTNER           5q6gTCuKgrgoAEbH47Wtvh6mtYEWZKEZ
     Concat PARTNER_ID::REQUEST_TIMESTAMP::KEY_PHASE::SCHLUESSEL_DPWN_PARTNER
                                XXXXX::15012020-
Signatur-String                 102200::1::5q6gTCuKgrgoAEbH47Wtvh6mtYEWZKEZ
     md5-Hash
MD5-Hash                        5038e6461d37943a5b852a41f9961a9b
     Zeichen 1-8
PARTNER_SIGNATURE               5038e646

8      Beispiel-Requests
8.1    Beispiel „Get Access Token“ in JSON und cURL (Sandbox)

                                                                                                               23
Warenpost International                                      Seite 24 von 65

Anbindungsleitfaden

JSON                                            cURL

URL                                             Request
GET https://api-                                curl --location --request GET 'https://api-
qa.deutschepost.com/v1/auth/accesstoken         qa.deutschepost.com/v1/auth/accesstoken' \
                                                --header 'KEY_PHASE: 1' \
Autorisation
Basic                                           --header 'PARTNER_ID: DP_LT' \
d2Fwb0B0ZXN0LmRlOndhcG9UZXN0UHcxMjM             --header 'REQUEST_TIMESTAMP: 16082018-
=                                               122210' \

Header                                          --header 'PARTNER_SIGNATURE: 9d7c35be' \

KEY_PHASE: 1                                    --header 'Authorization: Basic
PARTNER_ID: DP_LT                               d2Fwb0B0ZXN0LmRlOndhcG9UZXN0UHcxMjM='
REQUEST_TIMESTAMP: 16082018-122210
PARTNER_SIGNATURE: 9d7c35be

Body
Keiner

                                                                                                     24
Warenpost International                                        Seite 25 von 65

Anbindungsleitfaden

8.2    Beispiel „Get Access Token“ in JSON und cURL (Livesystem)

JSON                                             cURL

URL                                              Request
GET                                              curl --location --request GET
https://api.deutschepost.com/v1/auth/accesstok   'https://api.deutschepost.com/v1/auth/accesstoken' \
en
                                                 --header 'KEY_PHASE: 1' \
Autorisation                                     --header 'PARTNER_ID: XXXXX' \
Basic                                            --header 'REQUEST_TIMESTAMP: 15012020-
ZWNodGVwb3J0b2thc3NlQGt1bmRlbmRvbWFp             102200' \
bjplY2h0ZXNwYXNzd29ydA==
                                                 --header 'PARTNER_SIGNATURE: 5038e646' \
Header                                           --header 'Authorization: Basic
KEY_PHASE: 1                                     ZWNodGVwb3J0b2thc3NlQGt1bmRlbmRvbWFpbjplY
PARTNER_ID: XXXXX                                2h0ZXNwYXNzd29ydA=='
REQUEST_TIMESTAMP: 15012020-102200
PARTNER_SIGNATURE: 5038e646

Body
Keiner

Response:

 nBI2fcUsyE9VztC8MnnjvXBECzmHk_qNA_srfCNvFLY=
 968101
 false
 
                                                                                                        25
Sie können auch lesen