2017-04-11 13 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 설명서를 찾을 수 없습니다. 또한 base64 인코딩의 출력 파일에서 추적 번호를 읽는 OCR을 찾을 수 없습니다.

이 문제의 해결책이있는 사람이 있습니까? 미리 감사드립니다.

답변

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)는 테스트 용입니다.

  • 변경 DeliveryConfirmationV4.0Request
  • 변경에 DelivConfirmCertifyV4.0Request의 시작과 끝 XML 태그

    $service = 'DelivConfirmCertifyV4';

    $service = 'DeliveryConfirmationV4';

에이 생산 코드를 만들려면,이 두 변경
+0

복사하여 붙여 넣기 만하면됩니다. 파일 예 my folder/filename.php 코드를 실행하면 myfolder 내에 pdf 파일 (trackingcreate.pdf)이 생성됩니다. –