2017-06-08 36 views
0

我一直在搜索網絡並閱讀FedEx Web服務開發者指南,瞭解它是否可以使用他們的API提交幾個郵政編碼並返回估計的運輸時間爲地面包裹。類似於聯邦快遞的「獲取價格&運輸時間」頁面。有沒有人做過這樣的事情?FexEx API:使用郵政編碼獲取轉運時間

回答

0

爲了做到這一點,您需要使用聯邦快遞的「驗證可用性和承諾服務」。這裏是他們的PDF使用鏈接:https://www.fedex.com/templates/components/apps/wpor/secure/downloads/pdf/201607/FedEx_WebServices_ValidationAvailabilityAndCommitmentServices_WSDLGuide_v2016.pdf

我也一直在努力,並已放在一起快速和骯髒的小塊PHP代碼的作品。

<?php 

    // This is the local path to the FedEx Validation Availability and Commitment Service WSDL 
    $_wsdlPath = '/xxxxxx/xxxxx/xxxxx/ValidationAvailabilityAndCommitmentService_v6.wsdl'; 

    $ship_from_zip = 10001; 
    $ship_to_zip = 90210; 

    // Create the SOAP client 
    try { 
    $client = new SoapClient($_wsdlPath, array('trace' => 1)); 
    } 
    catch(SoapFault $soapFault) { 
    print($soapFault); 
    return; 
    } 

    // Create our request that we will send to FedEx 
    $transit_time_request = createTransitTimeRequest($ship_from_zip, $ship_to_zip); 

    // Send our request to FedEx 
    $transit_time_response = callTransitTimeRequest($client, $transit_time_request); 

    print_r($transit_time_response); 

    function callTransitTimeRequest($client, $transit_time_request) { 
    try { 
     // Call FedEx's serviceAvailability operation 
     $response = $client->serviceAvailability($transit_time_request); 
     return $response; 
    } 
    catch(SoapFault $soapFault) { 
     print($soapFault); 
     return null; 
    } 
    } 

    function createTransitTimeRequest($ship_from_zip, $ship_to_zip) { 
    $_meterNumber = 'xxxxxx'; // Your accounts ClientDetail MeterNumber 
    $_accountNumber = 'xxxxx'; // You accounts ClientDetail AccountNumber 
    $_password = 'xxxxxx'; // Your accounts UserCredential Password 
    $_key = 'xxxxx'; // Your accounts UserCredential Key 
    $_majorVersion = X; // The WSDL version 

    $request['WebAuthenticationDetail'] = array(); 
    $request['WebAuthenticationDetail']['UserCredential'] = array(); 
    $request['WebAuthenticationDetail']['UserCredential']['Key'] = $_key; 
    $request['WebAuthenticationDetail']['UserCredential']['Password'] = $_password; 
    $request['ClientDetail'] = array(); 
    $request['ClientDetail']['AccountNumber'] = $_accountNumber; 
    $request['ClientDetail']['MeterNumber'] = $_meterNumber; 
    $request['TransactionDetail'] = array(); 
    $request['TransactionDetail']['CustomerTransactionId'] = 'ServiceAvailabilityRequest'; 
    $request['Version'] = array(); 
    $request['Version']['ServiceId'] = 'vacs'; 
    $request['Version']['Major'] = $_majorVersion; 
    $request['Version']['Intermediate'] = '0'; 
    $request['Version']['Minor'] = '0'; 
    $request['Origin'] = array(); 
    $request['Origin']['PostalCode'] = $ship_from_zip; 
    $request['Origin']['CountryCode'] = 'US'; 
    $request['Destination'] = array(); 
    $request['Destination']['PostalCode'] = $ship_to_zip; 
    $request['Destination']['CountryCode'] = 'US'; 
    $request['ShipDate'] = date("Y-m-d"); 
    $request['CarrierCode'] = "FDXG"; // FDXG = Ground, FDXE = Express 

    return $request; 
    } 

?> 

此外,這是你可以期望什麼上面的代碼返回什麼:

stdClass Object 
(
    [HighestSeverity] => NOTE 
    [Notifications] => stdClass Object 
     (
      [Severity] => NOTE 
      [Source] => vacs 
      [Code] => 2002 
      [Message] => Your Packaging was assumed. 
      [LocalizedMessage] => Your Packaging was assumed. 
     ) 

    [TransactionDetail] => stdClass Object 
     (
      [CustomerTransactionId] => ServiceAvailabilityRequest 
     ) 

    [Version] => stdClass Object 
     (
      [ServiceId] => vacs 
      [Major] => 6 
      [Intermediate] => 0 
      [Minor] => 0 
     ) 

    [Options] => Array 
     (
      [0] => stdClass Object 
       (
        [Service] => FEDEX_GROUND 
        [TransitTime] => FOUR_DAYS 
       ) 

      [1] => stdClass Object 
       (
        [Service] => GROUND_HOME_DELIVERY 
        [TransitTime] => FOUR_DAYS 
       ) 

     ) 

) 
+0

編輯的預期輸出 – fr0x

相關問題