2012-06-07 68 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); 
...