Php 使用Fedex API RateService指定Fedex One费率的数组结构
我有一个工作请求,要求使用标准联邦快递费率获取我的货物的费率,但我想使用特殊的联邦快递单费率选项,这样我就可以获得他们的统一费率报价 不幸的是,他们的代码示例没有显示如何指定费率请求应该使用Fedex One Rate,而我完全无法通过xml解析WSDL。我尝试了几种不同的数组结构来传递(我假设)正确的变量,但没有任何效果 我使用第三方生成器生成了两个html版本的WSDL(这两个版本都没有太大帮助,但您可能比我读得更好) 第一个包含直接链接到其定义的数据类型的wsdl: 第二个更基本,它只是以更线性的方式提供层次结构,在每个级别上都有有效的值: 据我所知,我可以通过两种方式/地点声明我希望我的费率报价使用一种费率:Php 使用Fedex API RateService指定Fedex One费率的数组结构,php,wsdl,fedex,Php,Wsdl,Fedex,我有一个工作请求,要求使用标准联邦快递费率获取我的货物的费率,但我想使用特殊的联邦快递单费率选项,这样我就可以获得他们的统一费率报价 不幸的是,他们的代码示例没有显示如何指定费率请求应该使用Fedex One Rate,而我完全无法通过xml解析WSDL。我尝试了几种不同的数组结构来传递(我假设)正确的变量,但没有任何效果 我使用第三方生成器生成了两个html版本的WSDL(这两个版本都没有太大帮助,但您可能比我读得更好) 第一个包含直接链接到其定义的数据类型的wsdl: 第二个更基本,它只是以
1) $request['VariableOptions'] = 'FEDEX_ONE_RATE';
及
当我使用(1)时,我会得到一个成功的响应,其中包括一个价格列表,但它们不是一级价格。这是标准价格
当我使用(2)时,我得到一个失败响应:
stdClass Object
(
[HighestSeverity] => WARNING
[Notifications] => stdClass Object
(
[Severity] => WARNING
[Source] => crs
[Code] => 556
[Message] => There are no valid services available.
[LocalizedMessage] => There are no valid services available.
)
[TransactionDetail] => stdClass Object
(
[CustomerTransactionId] => *** Service Availability Request v5.1 using PHP ***
)
[Version] => stdClass Object
(
[ServiceId] => crs
[Major] => 16
[Intermediate] => 0
[Minor] => 0
)
)
如果我同时使用(1)和(2),那么我会得到(2)条错误消息以及一条额外的警告,指出我用两种不同的方式指定了一个速率,(2)将覆盖(1)
这是我的完整请求数组:
array (
'WebAuthenticationDetail' =>
array (
'UserCredential' =>
array (
'Key' => 'xxx',
'Password' => 'xxx',
),
),
'ClientDetail' =>
array (
'AccountNumber' => 'xxx',
'MeterNumber' => 'xxx',
),
'TransactionDetail' =>
array (
'CustomerTransactionId' => ' *** Service Availability Request v5.1 using PHP ***',
),
'Version' =>
array (
'ServiceId' => 'crs',
'Major' => '16',
'Intermediate' => '0',
'Minor' => '0',
),
'ReturnTransitAndCommit' => true,
'RequestedShipment' =>
array (
'DropoffType' => 'STATION',
'ShipTimestamp' => '2015-06-14T14:13:46-07:00',
'Shipper' =>
array (
'Contact' =>
array (
'PersonName' => 'Kenny Wyland',
'CompanyName' => 'K2 Cashflow',
'PhoneNumber' => 'xxxxxxxxxx',
),
'Address' =>
array (
'StreetLines' =>
array (
0 => 'xxxx E xxxxx St',
),
'City' => 'Long Beach',
'StateOrProvinceCode' => 'CA',
'PostalCode' => '90805',
'CountryCode' => 'US',
),
),
'Recipient' =>
array (
'Contact' =>
array (
'PersonName' => 'Bob Smith',
'PhoneNumber' => 'xxx-xxx-xxxx',
),
'Address' =>
array (
'StreetLines' =>
array (
0 => 'xxxxx xxxxxxx Rd',
),
'City' => 'Corona',
'StateOrProvinceCode' => 'CA',
'PostalCode' => '92883',
'CountryCode' => 'US',
'Residential' => true,
),
),
'ShippingChargesPayment' =>
array (
'PaymentType' => 'SENDER',
'Payor' =>
array (
'ResponsibleParty' =>
array (
'AccountNumber' => 'xxxx',
'Contact' => NULL,
'Address' =>
array (
'CountryCode' => 'US',
),
),
),
),
'PackageCount' => '1',
'RequestedPackageLineItems' =>
array (
0 =>
array (
'SequenceNumber' => 1,
'GroupPackageCount' => 1,
'Weight' =>
array (
'Value' => 0.01,
'Units' => 'LB',
),
),
),
'SpecialServicesRequested' =>
array (
'SpecialServiceTypes' =>
array (
0 => 'FEDEX_ONE_RATE',
),
),
),
)
文件第2.4.4点指出,获得单费率定价有几个要求:
$request['RequestedShipment']['PackagingType'] = 'FEDEX_SMALL_BOX';
之后是第三个要求:
$request['RequestedShipment']['ServiceType'] = 'FIRST_OVERNIGHT';
另外,请注意结尾的注释:
*注意:Web服务客户端可以通过指定
在
RateRequest.variableOptions
您是否检查了以下文档:。根据它(第2.4.4点),您还必须指定包装类型和服务类型。这似乎是问题所在。如果你能将此作为一个答案(最好是一个代码片段)发布,我将奖励你。你能给出最终请求数组吗?如何指定“FEDEX_ONE_RATE”ShipmentSpecialService?是$request['requestedshipping']['ShipmentSpecialService']='FEDEX_ONE_RATE';
$request['RequestedShipment']['ServiceType'] = 'FIRST_OVERNIGHT';