php-Fedex Webサービス(SOAP):ピックアップサービス
ピックアップサービスを使用してピックアップをスケジュールしようとしています。まず、集荷利用可能リクエストを送信してカットオフ時間を取得し、次に集荷リクエストで取得した結果を使用します。しかし、その後、明らかにカットオフ時間より前の時間にエラー「Ready Time after Cutoff Time」が発生します。私の例では、返されるカットオフ時間は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>
2つのリクエストの完全なリクエスト/レスポンスコードは次のとおりです: 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オフセットされています。 Pickup Availability応答には、PickupAvailabilityリクエストが処理された時刻を示す行もあります。 PSTにも含まれていることを確認したので、この手順は正常に機能しているように見えます。
<v3:RequestTimestamp>2013-03-26T11:58:37</v3:RequestTimestamp>
それで、カットオフ時間16:00 PSTを取得しました。次のステップは、Create Pickupリクエストを使用して、カットオフ時間より遅くならない時間に実際のピックアップをスケジュールすることです。このリクエストでは、
ReadyTimestamp
にTZ情報が含まれている必要があるため、さまざまな日付/時刻形式を試しました。したがって、14:00 PSTのピックアップを作成する場合は、2013-04-09T21:00:00
、2013-04-09T21:00:00 .000Z
、{-codeを試してください。 -6} + 00:00
、および2013-04-09T14:00:00-07:00
。これらすべての場合で、エラーReady Time after Cutoff Time
が発生します。私は多くの異なる値を試しましたが、それが機能する最新の時刻は04:00 PST(11:00 UTCと同じ)であることがわかりました。したがって、04:00はsuccess
を提供し、04:01はReady Time after Cutoff Time
を提供し、任意の日付/時刻形式でこのように機能します。< / p>
答え :
解決策:
76ページCreatePickupRequestの例のReadyTimestamp
に気づきましたか。 >
2011-08-02T08:00:18.282Z
17:00:00
タイムゾーンコードで指定されます。
UPD。 githubのphpfedexapiラッパーまたはphpclassesのfedexapiラッパーを確認できます。
答え :
解決策:
createPickupリクエストのReadyTimestampはタイムスタンプを値として受け取ります
例:'ReadyTimestamp': '1404891463'
これは機能します
答え :
解決策:
WebServiceリクエストでDateを渡す場合、WSDLの DateTime
データ型は
class DateTime 2 extends DateTime {
関数__toString(){
$ this-> format( "Y-m-d \ TH:i:s.000 \ Z");を返します。
}
}
$ date = new DateTime 2();
$ 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()。 "
";
print_r($ result);
答え :
解決策:
次の違いが必要です: a-パッケージの準備ができたら b-カットオフ時間 c-会社の休業時間。
したがって、郵便番号の締め切り時刻が16:00の場合、パッケージはその時刻より前に準備ができている必要があり、会社は数時間後に営業を開始する必要があります。
私の提案。会社の営業時間を19:00に設定します。フェデックスの最新の集荷時間は、通常、すべての郵便番号で17時間です。これらの2つは、集荷をリクエストしたときに、バンの宅配便がその場所に行くのに2時間かかるためです。会社の閉店時間が、集荷のリクエストから1時間しかない場合、問題が発生します。
お役に立てば幸いです。
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。