9

我正在尝试使用取件服务安排取件。首先我发送 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:002013-04-09T21:00:00.000Z2013-04-09T21:00:00+00:002013-04-09T14:00:00-07:00。在所有这些情况下,我都会得到 error Ready Time after Cutoff Time。我尝试了许多不同的值,发现它的最新工作时间是 04:00 PST(与 11:00 UTC 相同)。所以 04:00 给了我success,而 04:01 给了我Ready Time after Cutoff Time,它适用于任何日期/时间格式。

4

4 回答 4

3

您是否注意到第 76 页ReadyTimestamp示例CreatePickupRequest中的

<q0:ReadyTimestamp>2011-08-02T08:00:18.282Z</q0:ReadyTimestamp>
<q0:CompanyCloseTime>17:00:00</q0:CompanyCloseTime>

时区代码一起给出。

UPD。您可以检查来自 github 的php fedex api 包装器或来自 phpclasses 的 fedex api 包装器

于 2013-04-02T04:00:24.370 回答
2

createPickup 请求中的 ReadyTimestamp 将时间戳作为值

示例:'ReadyTimestamp':'1404891463'

这将起作用

于 2014-07-09T07:38:31.563 回答
1

如果要在 WebService 请求中传递日期,DateTime则 WSDL 的数据类型为

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);
于 2013-04-05T07:30:08.297 回答
0

您必须有以下区别: a- 包裹准备好时 b- 截止时间 c- 公司关闭时间。

因此,如果您的邮政编码的截止时间是 16:00,那么您的包裹必须在该时间之前准备好,并且您的公司必须在几个小时后开放。

我的建议。公司关门时间为 19:00,fedex 最迟取件时间通常为所有邮政编码的 17hs。那两个是因为当您要求取件时,面包车快递员有 2 个小时去那个地方,如果您的公司关闭时间距离取件请求只有 1 小时,您会遇到问题。

希望能帮助到你。

于 2013-08-31T20:18:46.633 回答