2012-06-07 60 views
3

我在嘗試使用Fedex的Web服務提取跟蹤信息時遇到問題。我正在使用有效的追蹤號碼,並且能夠查看Fedex網站上的詳細信息。但是,我收到錯誤9040「我們的系統尚未收到以下貨件的信息,請重試或聯繫客戶服務部門1.800.Go.FedEx(R)800.463.3339。」我是否留下了一些東西?Fedex網絡服務:錯誤9040 - 無法啓動跟蹤

我的代碼:

<?php 

$path_to_wsdl = "URL_TO_WSDL"; 
ini_set("soap.wsdl_cache_enabled", "0"); 

$client = new SoapClient($path_to_wsdl, array('trace' => 1)); 

$request['WebAuthenticationDetail'] = array(
    'UserCredential' =>array(
     'Key' => 'MY_KEY', 
     'Password' => 'MY_PASSWORD' 
    ) 
); 
$request['ClientDetail'] = array(
    'AccountNumber' => 'MY_ACCT', 
    'MeterNumber' => 'MY_METER' 
); 
$request['TransactionDetail'] = array('CustomerTransactionId' => 'ActiveShipping'); 
$request['Version'] = array(
    'ServiceId' => 'trck', 
    'Major' => '5', 
    'Intermediate' => '0', 
    'Minor' => '0' 
); 
$request['PackageIdentifier'] = array(
    'Value' => 'TRACKING#', 
    'Type' => 'TRACKING_NUMBER_OR_DOORTAG'); 

$response = $client->track($request); 
var_dump($response); 


?> 

回答

3

Got it!

調用Web服務DEPARTEMENT,他們告訴我,從WSDL文件中刪除「測試」。這似乎與我之前對此問題的迴應不同。在WSDL文件的1507行,進行以下更改:

來源:

<s1:address location="https://wsbeta.fedex.com:443/web-services/track"/> 

<s1:address location="https://ws.fedex.com:443/web-services/track"/> 

我改變了我的小幅代碼的其餘部分,但這不應該讓區別。爲了安全起見,這裏是:

<?php 
$path_to_wsdl = "PATH_TO_WSDL_FILE"; 

$client = new SoapClient($path_to_wsdl, array('trace' => 1)); 

$trackRequest = array(
    'WebAuthenticationDetail' => array(
     'UserCredential' => array(
      'Key'  => 'MY_KEY', 
      'Password' => 'MY_PASSWORD' 
     ) 
    ), 
    'ClientDetail' => array(
     'AccountNumber' => 'MY_ACCT_#', 
     'MeterNumber' => 'MY_METER_#' 
    ), 
    'Version' => array(
     'ServiceId' => 'trck', 
     'Major'  => '5', 
     'Intermediate' => '0', 
     'Minor'  => '0' 
    ), 
    'PackageIdentifier' => array(
     'Type' => 'TRACKING_NUMBER_OR_DOORTAG', 
     'Value' => 'THE_TRACKING_#', 
    ), 
    'CustomerTrasactionId', 
    'IncludeDetailedScans' => 1 
); 
$response = $client->track($trackRequest); 
var_dump($response); 

?> 
+0

謝謝。這非常有用 –

0

我也正在對這個同樣的問題。我正在嘗試幾件事情,你可以看看是否有任何東西適合你。嘗試包括ShipDateRangeBegin和End元素,您的測試帳號/付款人號碼或目的地信息。我發現here切換到XML和SSL發佈請求據稱解決問題,但它不是我的選擇。也許它會幫助你?

+0

降級到版本4的wsdl沒有幫助。我認爲就處理傳入請求而言,在聯邦成員端有些問題。 – Robert

0

我在使用xml-request的時候也有同樣的問題。我這樣解決了這個問題:

$endpointurl = "https://gatewaybeta.fedex.com:443/xml"; // remove word "beta" 
$endpointurl = "https://gateway.fedex.com:443/xml"; 

... 
$request = stream_context_create($form); 
$browser = fopen($endpointurl , 'rb' , false , $request); 
$response = stream_get_contents($browser); 
...