我在试图拉起使用联邦快递的网络服务跟踪信息的问题。 我使用的是有效的跟踪号码,我能看到联邦快递的网站的详细信息。 但是,我得到一个错误9040“以下的出货量没有相关信息已经被我们的系统尚未收到,请重试或在1.800.Go.FedEx(R)800.463.3339联系客户服务。” 难道我离开了什么东西出来?
我的代码:
<?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);
?>
得到它了!
调用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);
?>
我也正在对这个同样的问题。 我想几件事情,你可以看到如果有什么对你的作品。 尝试包括ShipDateRangeBegin和结束元素,您的测试帐号/付款人号码或目的地信息。 我发现这里是切换到XML和SSL请求后理应解决这个问题,但它不是我的选择。 也许这会帮助你?
我有同样的问题,当使用XML的请求。 我解决了这个问题是这样的:
$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);
...