[英]Fedex Web Services (SOAP): Pickup Service
我正在尝试使用皮卡服务安排取件。 首先,我发送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
得到错误Ready Time after Cutoff Time
。 我尝试了很多不同的值,发现最新的工作时间是太平洋标准时间04:00(与UTC时间11:00相同)。 所以04:00给了我success
,04:01给了Ready Time after Cutoff Time
,它以任何日期/时间格式运行。
你有没有注意到, ReadyTimestamp
的例子CreatePickupRequest上76页
<q0:ReadyTimestamp>2011-08-02T08:00:18.282Z</q0:ReadyTimestamp>
<q0:CompanyCloseTime>17:00:00</q0:CompanyCloseTime>
是时区代码 。
UPD。 您可以查看PHP联邦快递API包装从GitHub或联邦快递API包装从phpclasses。
如果要在WebService请求中传递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);
createPickup请求中的ReadyTimestamp将时间戳作为值
示例:'ReadyTimestamp':'1404891463'
这会奏效
您必须有以下区别:a-当包装准备好b-截止时间c-公司关闭时间。
因此,如果您的邮政编码的截止时间为16:00,那么您的包裹必须在此之前准备好,并且您的公司必须在几个小时之后开放。
我的建议。 公司关闭时间为19:00,联邦快递最新的取件时间通常为17小时,所有邮政编码。 那2个是你的,因为当你要求提货时,货车快递有2个小时到那个地方,如果你的公司关闭时间距离提货请求只有1小时,你会遇到问题。
希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.