2017-04-11 103 views
1

我已經能夠成功使用USPS API創建運輸標籤。返回的XML給了我一個傳遞確認號碼,但它不返回跟蹤號碼。追蹤號碼是我真正需要的。我已經使用(https://www.usps.com/business/web-tools-apis/delivery-confirmation-domestic-shipping-label-api.pdf)作爲我如何成功創建標籤的基礎,但沒有提到如何獲取跟蹤編號。USPS API - 創建標籤後檢索跟蹤編號C#

跟蹤編號位於標籤中,該標籤可以通過它們在XML輸出中向您發送的base64代碼創建。因此,爲了解決我的問題,我嘗試將標籤保存爲圖像文件,並使用OCR閱讀器(MODI & Tesseract)讀取跟蹤編號。這沒有用。我收到的只是亂碼。

那麼我試着將輸出保存爲PDF格式,並使用iTextSharp來讀取PDF。結果是它沒有從文件中讀取任何內容。

所以現在我在一堵磚牆上。我找不到任何來自USPS的API文檔,它們允許我使用傳送確認號碼來檢索跟蹤號碼。我也無法找到一個OCR,它將從base64編碼的輸出文件中讀取跟蹤編號。

有沒有人可以解決這個問題?提前致謝。

回答

0

事實證明,通過XML返回的傳遞確認號碼可以用作追蹤號碼。只是在API創建的交付確認號出現在USPS網站上之前存在一點點滯後時間。

1

我也在尋找追蹤號碼。我成功創建了PDF,並且有一個條形碼號碼,但沒有跟蹤號碼。

下面是我的代碼,它工作正常。

 $devurl = "https://secure.shippingapis.com/ShippingAPI.dll"; 
     $xml = rawurlencode('<DelivConfirmCertifyV4.0Request USERID="your User id"> 
     <Option>1</Option> 
     <ImageParameters> 
      <LabelSequence> 
       <PackageNumber>1</PackageNumber> 
       <TotalPackages>99</TotalPackages> 
      </LabelSequence> 
     </ImageParameters> 
     <FromName>Joe Smith</FromName> 
     <FromFirm>ABC Corp.</FromFirm> 
     <FromAddress1>Apt. 3C</FromAddress1> 
     <FromAddress2>6406 Ivy Lane</FromAddress2> 
     <FromCity>Greenbelt</FromCity> 
     <FromState>MD</FromState> 
     <FromZip5>20770</FromZip5> 
     <FromZip4>1234</FromZip4> 
     <ToName>Tom XofY</ToName> 
     <ToFirm>XYZ Corp.</ToFirm> 
     <ToAddress1>Suite 4D</ToAddress1> 
     <ToAddress2>8 Wildwood Drive</ToAddress2> 
     <ToCity>Old Lyme</ToCity> 
     <ToState>CT</ToState> 
     <ToZip5>06371</ToZip5> 
     <ToZip4></ToZip4> 
     <WeightInOunces>2</WeightInOunces> 
     <ServiceType>Priority</ServiceType> 
     <InsuredAmount></InsuredAmount> 
     <SeparateReceiptPage></SeparateReceiptPage> 
     <POZipCode></POZipCode> 
     <ImageType>PDF</ImageType> 
     <LabelDate></LabelDate> 
     <CustomerRefNo></CustomerRefNo> 
     <AddressServiceRequested></AddressServiceRequested> 
     <SenderName> Imtiyaz</SenderName> 
     <SenderEMail>[email protected]</SenderEMail> 
     <RecipientName></RecipientName> 
     <RecipientEMail></RecipientEMail> 
     <Container>Variable</Container> 
     <Size>Regular</Size> 
     <CommercialPrice>True</CommercialPrice> 
     <Content> 
      <ContentType>LIVES</ContentType> 
      <ContentDescription>Bees</ContentDescription> 
     </Content> 
    </DelivConfirmCertifyV4.0Request>'); 

    $service = 'DelivConfirmCertifyV4'; 
    $request = $devurl . "?API=" . $service . "&xml=" . $xml; 
    $response = SendRequest($request); 
    //print_r($response); 
    $xml = new SimpleXMLElement($response); 
    $myfile = fopen("trackingcreate.pdf", "w") or die("Unable to open file!"); 
    fwrite($myfile, base64_decode($xml->DeliveryConfirmationLabel)); 
    $json =json_encode($xml); 
    $resarray = json_decode($json); 
    echo "<br><b>DeliveryConfirmationNumber :</b> ".$resarray->DeliveryConfirmationNumber; 
    echo "<br><br><b>ToName : </b> ".$resarray->ToName; 
    echo " <br><br><b>ToFirm : </b> ".$resarray->ToFirm; 
    echo "<br><br><b>ToAddress1 : </b> ".$resarray->ToAddress1; 
    echo "<br><br><b>ToCity : </b> ".$resarray->ToCity; 
    echo "<br><br><b>Postnet : </b> ".$resarray->Postnet; 
    echo "<br><br><b>RDC : </b> ".$resarray->RDC; 
    echo "<br><br><b>InsuranceFee : </b> ".$resarray->InsuranceFee; 
    echo "<br><br><b>Postage : </b> ".$resarray->Postage; 
    echo "<br><br><b>CarrierRoute : </b> ". $resarray->CarrierRoute; 

    function SendRequest($request){ 
    $session = curl_init(); 
    curl_setopt($session, CURLOPT_URL, $request); 
    curl_setopt($session, CURLOPT_HTTPGET, 1); 
    curl_setopt($session, CURLOPT_HEADER, false); 
    curl_setopt($session, CURLOPT_SSL_VERIFYPEER , false); 
    curl_setopt($session, CURLOPT_SSL_VERIFYHOST , false); 
    curl_setopt($session, CURLOPT_HTTPHEADER, array('Accept: application/xml', 'Content-Type: application/xml')); 
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true); 
    $response = curl_exec($session); 
    curl_close($session); 
    return $response; 
} 

注意顯示的API(DelivConfirmCertifyV4.0Request)僅用於測試。爲了使這種生產代碼,使這兩個變化:

  • 變化從DelivConfirmCertifyV4.0Request開始和結束XML標籤DeliveryConfirmationV4.0Request
  • 變化

    $service = 'DelivConfirmCertifyV4';

    $service = 'DeliveryConfirmationV4';

+0

只需複製並粘貼到任何文件示例我的文件夾/ filename.php 運行代碼,您將在我的文件夾中獲得pdf文件(trackingcreate.pdf) –