繁体   English   中英

Fedex Web服务(SOAP):代答服务

[英]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.000Z2013-04-09T21:00:00+00:002013-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例子CreatePickupRequest76页

<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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM