我下载了示例代码以从fedex的网站请求一个费率…我把WSDL文件放在正确的位置,我有我的acct号码,密码,米数和密钥.当我运行脚本我得到这个错误:
Error in processing transaction.
ERROR
prof
1000
Authentication Failed
他们给出的脚本如下,是的,我实际上替换了XXX和YYY:
<?PHP
// copyright 2009,FedEx Corporation. All rights reserved.
// Version 7.0.0
require_once('fedex-common.PHP5');
$newline = "<br />";
//The WSDL is not included with the sample code.
//Please include and reference in $path_to_wsdl variable.
$path_to_wsdl = "RateService_v7.wsdl";
ini_set("soap.wsdl_cache_enabled","0");
$client = new SoapClient($path_to_wsdl,array('trace' => 1)); // Refer to http://us3.PHP.net/manual/en/ref.soap.PHP for more information
$request['WebAuthenticationDetail'] = array('UserCredential' =>
array('Key' => 'XXX','Password' => 'YYY')); // Replace 'XXX' and 'YYY' with FedEx provided credentials
$request['ClientDetail'] = array('AccountNumber' => 'XXX','MeterNumber' => 'YYY');// Replace 'XXX' with your account and meter number
$request['TransactionDetail'] = array('CustomerTransactionId' => ' *** Rate Request v7 using PHP ***');
$request['Version'] = array('ServiceId' => 'crs','Major' => '7','Intermediate' => '0','Minor' => '0');
$request['ReturnTransitAndCommit'] = true;
$request['RequestedShipment']['DropoffType'] = 'REGULAR_PICKUP'; // valid values REGULAR_PICKUP,REQUEST_COURIER,...
$request['RequestedShipment']['ShipTimestamp'] = date('c');
$request['RequestedShipment']['ServiceType'] = 'FEDEX_GROUND'; // valid values STANDARD_OVERNIGHT,PRIORITY_OVERNIGHT,FEDEX_GROUND,...
$request['RequestedShipment']['PackagingType'] = 'YOUR_PACKAGING'; // valid values FEDEX_Box,FEDEX_PAK,FEDEX_TUBE,YOUR_PACKAGING,...
$request['RequestedShipment']['Shipper'] = array('Address' => array(
'StreetLines' => array('10 Fed Ex Pkwy'),// Origin details
'City' => 'Memphis','StateOrProvinceCode' => 'TN','PostalCode' => '38115','CountryCode' => 'US'));
$request['RequestedShipment']['Recipient'] = array('Address' => array (
'StreetLines' => array('13450 Farmcrest Ct'),// Destination details
'City' => 'Herndon','StateOrProvinceCode' => 'VA','PostalCode' => '20171','CountryCode' => 'US'));
$request['RequestedShipment']['ShippingChargesPayment'] = array('PaymentType' => 'SENDER','Payor' => array('AccountNumber' => 'XXX',// Replace 'XXX' with payor's account number
'CountryCode' => 'US'));
$request['RequestedShipment']['RateRequestTypes'] = 'ACCOUNT';
$request['RequestedShipment']['RateRequestTypes'] = 'LIST';
$request['RequestedShipment']['PackageCount'] = '2';
$request['RequestedShipment']['PackageDetailSpecified'] = true;
$request['RequestedShipment']['PackageDetail'] = 'INDIVIDUAL_PACKAGES'; // Or PACKAGE_SUMMARY
$request['RequestedShipment']['RequestedPackageLineItems'] = array('0' => array('Weight' => array('Value' => 2.0,'Units' => 'LB'),'Dimensions' => array('Length' => 10,'Width' => 10,'Height' => 3,'Units' => 'IN')),'1' => array('Weight' => array('Value' => 5.0,'Dimensions' => array('Length' => 20,'Width' => 20,'Height' => 10,'Units' => 'IN')));
try
{
$response = $client ->getRates($request);
if ($response -> HighestSeverity != 'FAILURE' && $response -> HighestSeverity != 'ERROR')
{
printRequestResponse($client);
}
else
{
echo 'Error in processing transaction.'. $newline. $newline;
foreach ($response -> Notifications as $notification)
{
if(is_array($response -> Notifications))
{
echo $notification -> Severity;
echo ': ';
echo $notification -> Message . $newline;
}
else
{
echo $notification . $newline;
}
}
}
writetoLog($client); // Write to log file
} catch (SoapFault $exception) {
printFault($exception,$client);
}
?>
我不太清楚为什么它不工作,我已经阅读了关于使用代理,但我不太确定我将如何使用它在这种情况下?不是使用SOAP和WSDL避免使用CURL,Direct Connect类型的东西?
如果您使用SoapUI(
http://www.soapui.org/)联系WSDL,您将获得什么响应?
(SoapUI可以让您无需编程就可以测试SOAP / Wsdl,因此您可以检查调用是否正确,如果是,则代码中出现问题.)