2016-05-06 9 views
1

Ich versuche, das Versandetikett von dpd.com zu bekommen. Dafür muss ich Seife verwenden, um die Aufgabe zu erledigen. Ich habe die Login-Authentifizierung abgeschlossen und das AuthToken erhalten. Hier ist der Code dafür.senden Sie Soap-Anfrage für dpd.com in PHP

Nun, das Problem ist, ich möchte Versandetikett erhalten, indem Sie Anfrage senden und dieses AuthToken verwenden. Das Format der Soap-Anfrage ist so etwas.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
        xmlns="http://dpd.com/common/service/types/Authentication/2.0" 
        xmlns1="https://public-ws-stage.dpd.com/services/ShipmentService/V3_2/?wsdl"> 
    <soapenv:Header> 
     <ns:authentication> 
      <delisId>username</delisId> 
      <authToken>AuthToken From Above</ authToken> 
      <messageLanguage>en-us</messageLanguage> 
     </ns:authentication> 
    </soapenv:Header> 
    <soapenv:Body> 
     <ns1:storeOrders> 
      <paperFormat>A4</paperFormat> 
      <order> 
       <generalShipmentData> 
        <sendingDepot>'.$depot_num.'</sendingDepot> 
        <product>CL</product> 
        <mpsCompleteDeliver>false</mpsCompleteDeliver> 
        <sender> 
         <name1>Fritz</name1> 
         <street>Mustergasse</street> 
         <houseNo>1</houseNo> 
         <state>BY</state> 
         <country>DE</country> 
         <zipCode>53950</zipCode> 
         <city>Maibach</city> 
        </sender> 
        <recipient> 
         <name1></name1> 
         <street></street> 
         <houseNo></houseNo> 
         <state></state> 
         <country></country> 
         <zipCode></zipCode> 
         <city></city> 
         </recipient> 
       </generalShipmentData> 
       <parcels> 
        <parcelLabelNumber></parcelLabelNumber> 
       </parcels> 
       <productAndServiceData> 
        <orderTyp></orderType> 
       </productAndServiceData> 
      </order> 
     </ns1:storeOrdes> 
    </soapenv:Body> 
</soapenv:Envelope> 

Aber ich weiß nicht, wie man diese Anfrage sendet und die Antwort in PDFData-Tag erhalten.

Antwort

0

Ich sehe die Frage ist alt, aber jemand anderes kann auch danach suchen. Antwort von http://labor.99grad.de/2014/10/05/deutscher-paket-dienst-dpd-soap-schnittstelle-mit-php-nutzen-um-versandetikett-als-pdf-zu-generieren/

<?php 

    // Einloggen 

    $c = new SoapClient('https://public-ws-stage.dpd.com/services/LoginService/V2_0?wsdl'); 

    $res = $c->getAuth(array(
     'delisId'   => 'your-Id', 
     'password'   => 'your-Password', 
     'messageLanguage' => 'de_DE' 
    )); 

    // ...und das Token merken 
    $auth = $res->return; 


    // Jetzt das Label generieren: 

    $c = new SoapClient('https://public-ws-stage.dpd.com/services/ShipmentService/V3_1?wsdl'); 

    $token = array(
     'delisId'   => $auth->delisId, 
     'authToken'   => $auth->authToken, 
     'messageLanguage' => 'de_DE' 
    ); 

    // Set the header with the authentication token 
    $header = new SOAPHeader('http://dpd.com/common/service/types/Authentication/2.0', 'authentication', $token); 
    $c->__setSoapHeaders($header); 

    try { 
     $res = $c->storeOrders(array 
     (
      "printOptions" => array(
       "paperFormat" => "A4", 
       "printerLanguage" => "PDF" 
      ), 
      "order" => array(
       "generalShipmentData" => array(
        "sendingDepot" => $auth->depot, 
        "product" => "CL", 
        "mpsCompleteDelivery" => false, 
        "sender" => array(
        "name1" => "Sender Name", 
        "street" => "Sender Street 2", 
        "country" => "DE", 
        "zipCode" => "65189", 
        "city" => "Wiesbaden", 
        "customerNumber" => "123456789" 
       ), 
        "recipient" => array(
        "name1" => "John Malone", 
        "street" => "Johns Street 34", 
        "country" => "DE", 
        "zipCode" => "65201", 
        "city" => "Wiesbaden" 
       ) 
       ), 
       "parcels" => array(
        "parcelLabelNumber" => "09123829120" 
       ), 
       "productAndServiceData" => array(
        "orderType" => "consignment" 
       ) 
      ) 
     ) 
    ); 
    } catch (SoapFault $exception) { 
     echo $exception->getMessage(); 
     die(); 
    } 

    // Et voilà! 

    header('Content-type: application/pdf'); 
    echo $res->orderResult->parcellabelsPDF; 
?>