我正在使用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,date('m',$startDate),date('d',date('Y',$startDate))); $endDate = add_date($startDate,1);
但是,根据发送请求的服务器的时区,该日期可能会有所不同.
任何人都对如何确保不会发生任何问题有任何想法?
编辑w / Bounty:
截至12月15日,我们现在遇到这个错误.我们正在使用UTC时间,一旦它在UTC中开启新的一天,付款开始失败.
我在以下地方使用上面的代码:
$preapprovalRequest->startingDate = $startDate; $preapprovalRequest->endingDate = $endDate;
我需要做什么才能做到这一点?
编辑2:
是的时区设置为UTC,我们故意这样做,以便我们的数据库中的所有时间信息都是在没有时区的情况下存储的.
基本上我正在试图弄清楚如何指定我发送给Paypal的日期是UTC,而不是他们恰好在什么时区.
编辑3:
有API,它说如下
The startingDate and endingDate can be in eiter Zulu or GMT offset
formats. as in the following respective examples:
2010-09-10Z
2010-09-10T17:24:03.874-07:00
PHP时间函数基于系统时间(
http://us.php.net/manual/en/intro.datetime.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
– 编辑 –
根据您的编辑,看起来他们期待祖鲁(追加Z)或GMT与偏移(更复杂)的时间,试试这个:
$preapprovalRequest->startingDate = $startDate . 'Z'; $preapprovalRequest->endingDate = $endDate . 'Z';