我正在尝试使用代答服务安排取件。首先,我发送Pickup Availability请求以获得截止时间,然后使用我在Pickup Request中获得的结果。但在那之后我得到错误“切断时间后的准备时间”显然是在截止时间之前的时间。在我的例子中,返回的截止时间是16:00,但我可以安排取件的最晚时间是11:00。 提货可用性响应的一部分:
<v3:ScheduleDay>SAME_DAY</v3:ScheduleDay>
<v3:Available>true</v3:Available>
<v3:PickupDate>2013-04-02</v3:PickupDate>
<v3:CutOffTime>16:00:00</v3:CutOffTime>
产生错误的计划提取请求的一部分:
<ns1:ReadyTimestamp>2013-04-02T13:00:00</ns1:ReadyTimestamp>
<ns1:CompanyCloseTime>20:00:00</ns1:CompanyCloseTime>
以下是两个请求的完整请求/响应代码:http://pastebin.com/jqtfsRFc
UPD :根据评论中的讨论提供更多详情
这就是关于ReadyTimestamp的内容,时间必须不晚 比CutOffTime,可以发现 PickupAvailabilityRequest。
所以我提出了一个取件可用性请求,并看到答复:
<v3:ScheduleDay>SAME_DAY</v3:ScheduleDay>
<v3:Available>true</v3:Available>
<v3:PickupDate>2013-04-09</v3:PickupDate>
<v3:CutOffTime>16:00:00</v3:CutOffTime>
文档说明,根据本地TZ(取自邮政编码)使用取件可用性的时间戳。本地TZ是PST,其与UTC的偏移为-07:00。提货可用性回复中还有一行表示处理我的提货可用性请求的时间。我检查并发现它也在PST中,所以这一步看起来很好:
<v3:RequestTimestamp>2013-03-26T11:58:37</v3:RequestTimestamp>
因此我得到截止时间为太平洋标准时间16:00,下一步是使用创建分拣请求安排实际取件时间不晚于截止时间。对于此请求,ReadyTimestamp
应包含TZ信息,因此我尝试了不同的日期/时间格式。因此,如果我想在太平洋标准时间14:00创建取件,请尝试2013-04-09T21:00:00
,2013-04-09T21:00:00.000Z
,2013-04-09T21:00:00+00:00
和2013-04-09T14:00:00-07:00
。在所有这些情况下,我收到错误Ready Time after Cutoff Time
。我尝试了很多不同的值,发现最新的工作时间是太平洋标准时间04:00(与UTC时间11:00相同)。因此,04:00给我success
,04:01给Ready Time after Cutoff Time
,它以任何日期/时间格式运行。
答案 0 :(得分:3)
您是否注意到page 76上示例CreatePickupRequest 中的ReadyTimestamp
<q0:ReadyTimestamp>2011-08-02T08:00:18.282Z</q0:ReadyTimestamp>
<q0:CompanyCloseTime>17:00:00</q0:CompanyCloseTime>
给出了timezone code。
UPD。您可以从github检查php fedex api wrapper或从phpclasses检查fedex api wrapper。
答案 1 :(得分:1)
如果要在Web Service请求中传递Date,则WSDL的DateTime
数据类型为
class DateTime2 extends DateTime {
function __toString() {
return $this->format("Y-m-d\TH:i:s.000\Z");
}
}
$date = new DateTime2();
$client = new SoapClient(
"http://www.myos.it/sp/smartphonelayer.asmx?wsdl",
array("trace" => 1)
);
$result = $client->SetReservation(array("RDescription"=>"Giuseppe Silvestri",
"RNumber"=>2,
"RPhoneNumber"=>"3286026817",
"RDate"=>$date.""));
echo "REQUEST:".$client->__getLastRequest()."<br>";
print_r($result);
答案 2 :(得分:1)
createPickup请求中的ReadyTimestamp将时间戳记作为值
示例:&#39; ReadyTimestamp&#39;:&#39; 1404891463&#39;
这将有效
答案 3 :(得分:0)
你必须有以下区别: a-包装准备好了 b-截止时间 c-公司关闭时间。
因此,如果您的邮政编码的截止时间为16:00,那么您的包裹必须在此之前准备就绪,并且您的公司必须在几个小时后开放。
我的建议。公司关闭时间为19:00,联邦快递最新的取件时间通常为17小时,所有邮政编码。那2个你的是因为当你要求提货时,货车快递有2小时到达那个地方,如果你的公司关闭时间距离提货请求只有1小时,你将遇到问题。 希望它有所帮助。