2011-11-12 9 views
6

私はPaypal Adaptive Paymentsを使用してアプリケーションを設定しています。Paypal Preapproval開始日タイムゾーン?

私は現在、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); 

を。

問題が発生しないようにする方法はありますか?バウンティ/ W

編集:

12月15日の時点で、我々は今、エラーとして本に遭遇してきました。私たちはUTC時間を使用しています。そしてUTCで新しい日になったら、支払いは失敗に終わります。

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

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

私はこの仕事をするために必要なのですか?

編集2:

はいタイムゾーンはUTCとして設定され、我々は我々のデータベース内のすべての時刻情報がタイムゾーンなしで保存されている意図的になるようにこれをしませんでした。

基本的に私はPayPalに送信しています日付がUTCであること、ではない彼らはであることが起こるものは何でもタイムゾーンを指定する方法を把握しようとしている

編集3:

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

はAPIがあり、そしてそれはstartingDateとendingDateがeiterズールーまたはGMTにすることができ

次 フォームをオフセットと言いats。 2010-09-10Z 2010-09-10T17:24:03.874から07:以下の各実施例のように00

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

答えて

2

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 

はまた、あなたのシステム時刻がネットワークタイムプロトコルを用いて補正することを確認してください。

$ ntpdate -b pool.ntp.org 

- 編集 - 編集内容に基づいて

、オフセット(より複雑な)と、彼らはズールー(Zを追加)またはGMTのどちらかで時間を期待しているように見える、この試してみてください。

+0

はいシステムは、すべてのユーザーに適切な表示を許可するのを支援するためにUTC時間を使用するように設定されています。 –

+0

@AequitarumCustos: '$ preapprovalRequest-> timezone'呼び出しがあるかどうか確認するためにAPIドキュメントをチェックしましたか? –

+0

APIドキュメントからタイムゾーンに関するAPIリンクと情報を追加しました。私は彼らがそこに置いたものを使う方法を理解していない。 –

7

api documentationは、GMTまたはZulu時間を使用しており、これを示すために最終的な 'Z'を持つことを期待しています(ISO 8601と一致します)。

事前承認API操作に関する

追加の注意事項

  1. 事前承認制約が添加されています。たとえば、金曜日と13日にのみ支払いを許可する前許可を指定した場合、事前許可は、指定された期間内の金曜日の13日の金曜日にのみ有効になります。
  2. startingDateとendingDateは、ZuluまたはGMTオフセット形式で指定できます。

2010-09-10Z[注:これは、ZULU IS]

2010-09-10T17:24:03.874-07:00[注:これは、GMTオフセットされている]を使用する最も安全なものがある

を、以下の各実施例のように、おそらくこの:

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

は、自分のサーバーのタイムゾーン(および時刻!)が正しく設定されていることを確実に確認する必要があります。date_default_timezone_set()を使用して、PHPアプリケーションで別途タイムゾーンを設定する必要がある場合もあります。

最後に、に別のしわがあります。使用しているSDKがわかりません。おそらくそれは巧みになり、あなたが何かに渡す日付を変えようとします。その場合、日付の翻訳と期待する日付を調べる必要があります。 (たとえば、おそらくシステムのローカル時刻の日付が必要ですが、UTC時刻に変更されます)。しかし、あなたが提供するものを変更しないとすれば、上のコードを使用できるはずです。

+0

詳細情報をお寄せいただきありがとうございます。他のソリューションを使用して解決策を提示しましたが、これはおそらくこの質問を見つけたユーザーのために最善の答えとなります。 –

+1

@AequitarumCustos:一体何ですか?これにソリューションをマークしてください。ひとりに賞金を、他の人に解決策を与えることは理にかなっていません。 –

関連する問題