Paypal Preapproval開始日のタイムゾーン?

私はPaypal Adaptive Paymentsを使ってアプリケーションを設定しています。

私は現在、Preapprovalへの呼び出しを実装しています。この仕様では、StartDateは今日までにはできないと言います。

そのことを念頭に置いて、どのタイムゾーンでこれを検証していますか?

API SDKには次の例があります。

$currDate = getdate();
$startDate = $currDate['year'].'-'.$currDate['mon'].'-'.$currDate['mday'];
$startDate = strtotime($startDate);
$startDate = date('Y-m-d', mktime(0,0,0,date('m',$startDate),date('d',$startDate),date('Y',$startDate)));
$endDate = add_date($startDate, 1);

ただし、その日付は、要求を送信しているサーバーのタイムゾーンによって異なる場合があります。

問題が発生しないようにする方法については、誰でも知っていますか?

バウンスで編集:

12月15日現在、私たちはこれをエラーとして実行しています。私たちはUTC時間を使用しています。そしてUTCで新しい日になったら、支払いは失敗に終わります。

私は次の場所で上記のコードを使用しています:

$preapprovalRequest->startingDate = $startDate;
$preapprovalRequest->endingDate = $endDate;

この仕事をするには何が必要ですか?

編集2:

はい時間帯はUTCとして設定されていますが、データベースのすべての時間情報がタイムゾーンなしで保存されるように意図的に行いました。

基本的には、私がペイパルに送る日付がUTCであることを指定する方法を理解しようとしています。

編集3:

https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_APPreapproval

APIがあり、次のように言います

startingDateとendingDateは、ZuluまたはGMTオフセットで指定できます   フォーマット。次の各例のように。   2010-09-10Z   2010-09-10T17:24:03.874-07:00

基本的に私はUTCを使用しているようなものを出力するために、上記のコードが必要です...

6
追加された 編集された
ビュー: 1

2 答え

The api documentation says it uses GMT or Zulu time over the wire, and expects it to have a final 'Z' to indicate this (consistent with ISO 8601).

PreApproval API操作に関する追加情報

     
      
  1. 事前許可の制約は加法的です。たとえば、金曜日と13日目にのみ支払いを許可する前許可を指定した場合、事前許可は、指定された期間内の金曜日の13日の金曜日にのみ有効になります。
  2.   
  3. startingDateとendingDateは、ZuluまたはGMTオフセット形式で指定できます。次の各例のように:
  4.   
     

2010-09-10Z [注:これはズールです]

     

2010-09-10T17:24:03.874-07:00 [注:これはGMTオフセットです]

おそらく最も安全なものはこれです:

$startingDate = gmdate('Y-m-d\Z', $startingDateTimestamp);

ただし、自分のサーバーのタイムゾーン(および時間!)が正しく設定されているかどうか必ず確認する必要があります。 "> date_default_timezone_set() をクリックします。

Finally, there's another wrinkle--I do not know what SDK you are using. Possibly it tries to be clever and changes the date you pass in to something else. In that case you need to find out what date translation it does and what date it expects. (E.g., perhaps it expects a date in the system-local time, and it changes it to a UTC time.) Assuming it doesn't alter what you supply, however, you should be able to use the code above.

7
追加された
詳細情報をお寄せいただきありがとうございます。他のソリューションをそのまま受け入れられたソリューションとしてマークしましたが、これはおそらくこの質問を見つけたユーザーに最高の答えとなるでしょう。
追加された 著者 Brett Allen,
@AequitarumCustos:一体何ですか?これにソリューションをマークしてください。ひとりに賞金を、他の人に解決策を与えることは理にかなっていません。
追加された 著者 Mike Purcell,

PHPの時間関数はシステム時刻に基づいています( http://us.php.net/ manual/en/intro.datetime.php )。システムがUTC時間を使用するようにセットアップされていますか?以下で確認できます:

[email protected] ~/projects/config $ -> date
Thu Dec 15 23:29:09 UTC 2011

応答のUTCに注意してください。あなたのシステムが他のいくつかのタイムゾーンに設定されている場合は、それが問題になる可能性があります。タイムゾーンをUTCに設定する必要がある場合は、

$ rm -f /etc/localtime
$ ln -s /usr/share/zoneinfo/UTC /etc/localtime

また、Network Time Protocolを使用して、システム時刻が修正されていることを確認してください。

$ ntpdate -b pool.ntp.org

- 編集 -

あなたの編集に基づいて、Zulu(Zを付ける)またはGMTをオフセット(複雑な)のどちらかで時間を待っているように見えます。これを試してみてください:

$preapprovalRequest->startingDate = $startDate . 'Z';
$preapprovalRequest->endingDate = $endDate . 'Z';
2
追加された
はい、私たちのシステムは、すべてのユーザーに適切な時間表示を許可するのを支援するためにUTC時間を使用するように設定されています。
追加された 著者 Brett Allen,
APIドキュメントからタイムゾーンに関するAPIリンクと情報を追加しました。私は彼らがそこに置いたものを使う方法を理解していない。
追加された 著者 Brett Allen,
Zを追加すると完璧に動作しました、ありがとう!
追加された 著者 Brett Allen,
@AequitarumCustos: $ preapprovalRequest-> timezone コールがあるかどうかを確認するためにAPIドキュメントをチェックしましたか?
追加された 著者 Mike Purcell,
@AequitarumCustos:更新された投稿...
追加された 著者 Mike Purcell,
@AequitarumCustos:それは動作しましたか?
追加された 著者 Mike Purcell,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

招待状へのリンク: https://t.me/joinchat/B2gdSlA_dh1-BQtEKA2dfw このグループではPHPについて話します。 パートナー:kotaeta.com