Php 贝宝预批准开始日期时区?
我正在使用Paypal自适应支付设置一个应用程序 我目前正在执行对预批准的调用,规范中说启动日期不能早于今天 考虑到这一点。。。他们在哪个时区下进行验证 API SDK在示例中包含以下内容:Php 贝宝预批准开始日期时区?,php,timezone,paypal,Php,Timezone,Paypal,我正在使用Paypal自适应支付设置一个应用程序 我目前正在执行对预批准的调用,规范中说启动日期不能早于今天 考虑到这一点。。。他们在哪个时区下进行验证 API SDK在示例中包含以下内容: $currDate = getdate(); $startDate = $currDate['year'].'-'.$currDate['mon'].'-'.$currDate['mday']; $startDate = strtotime($startDate); $startDate = date('Y
$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,我们有意这样做,以便数据库中的所有时间信息都存储在没有时区的情况下
本质上,我试图弄清楚如何指定我发送给Paypal的日期是UTC,而不是他们碰巧所在的时区
编辑3:
有一个API,它说
开始日期和结束日期可以是eiter Zulu或GMT偏移量
格式。如以下各示例所示:
2010-09-10Z
2010-09-10T17:24:03.874-07:00
基本上,我需要上面的代码,以输出类似于指定我使用UTC…PHP时间函数基于系统时间()。您确定您的系统已设置为使用UTC时间吗?您可以通过以下方式进行检查:
mpurcell@service1 ~/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
--编辑--
根据您的编辑,看起来他们期望的时间是Zulu(附加Z)或GMT带偏移量(更复杂),请尝试以下操作:
$preapprovalRequest->startingDate = $startDate . 'Z';
$preapprovalRequest->endingDate = $endDate . 'Z';
该公司表示,它在线路上使用GMT或Zulu时间,并希望最后有一个“Z”来表示这一点(与ISO 8601一致)
关于预批准API操作的附加说明
2010-09-10Z
[注:我是祖鲁]
2010-09-10T17:24:03.874-07:00
[注意:这是格林尼治标准时间偏移量]
最安全的使用方法可能是:
$startingDate = gmdate('Y-m-d\Z', $startingDateTimestamp);
但是,您必须绝对确保您自己的服务器的时区(和时间!)设置正确您可能还需要在PHP应用程序中使用单独设置时区
最后,还有一个问题——我不知道您使用的是什么SDK。可能它试图变得聪明,并将你传递的日期改为其他日期。在这种情况下,您需要了解它的翻译日期和预期日期。(例如,它可能希望系统本地时间中有一个日期,并将其更改为UTC时间。)但是,假设它不会改变您提供的内容,您应该能够使用上面的代码。是的,我们的系统设置为使用UTC时间来帮助所有用户正确显示时间。@AequitarumCustos:您是否检查API文档以查看是否有
$preapprovalRequest->timezone
调用?从API文档中添加了API链接和时区信息。我不明白如何使用他们放在那里的内容。感谢您提供的详细信息,使用了另一个解决方案,因此将其标记为可接受的解决方案,但对于发现此问题的用户来说,这可能是最好的答案,因此给您奖金@埃奎塔鲁马库斯托斯:怎么回事?那么就把这个标记为解决方案。将赏金授予其中一方,将解决方案授予另一方是没有意义的。