如何立即开始向用户收取PayPal结算协议的费用?
这是我到目前为止所得到的。
这一切似乎都有效,但我希望现在和将来的每个月向用户收费。如果我在步骤3中将start_date
设置为现在,则会出现错误,它必须在将来发生。如果我将来设置它,则不会向用户收费。
我是否需要“设定未付款协议金额”,然后才能支付首期付款的“未付款协议金额”?
此外,每月付款,他们需要采取某些行动,还是按照结算计划中的规定进行?
更新
我正在围绕2014-09-16T20:06:30+0000
如果我发送start_date
作为当前UTC时间,则会在步骤2收到错误,告诉我必须在将来。
如果我发送当前日期+30秒或+2小时,我将进入步骤5,返回400响应:UNKNOWN_ERROR“发生未知错误”
如果我发送当前日期+4小时,一切正常。当前UTC时间是晚上8点,因此增加4小时意味着明天start_date
。
这是否意味着我今天无法向用户收费? start_date
是否必须在第二天甚至是下一个业务日?
答案 0 :(得分:7)
我和PayPal代表谈过,发现start_date
必须是明天或更晚。他们将把这个添加到文档中。
如果您想立即开始每月结算,您可以通过将开始日期设置为一个月的时间并收取设置费用来支付第一个月来完成。我没有测试过这个,因为它不是我想要的。
答案 1 :(得分:2)
协议的第一笔付款将在指定的start_date上开具。随后的金额也由PP自动获取。只有在PP未能在续订日期选择付款时,您才需要使用BillOutstandingAmount调用。
使用RestAPI进行开发时遇到的问题是指定了错误的时区。也许这对你来说是一样的。确保在start_date中指定了正确的时区(实际上所有日期都赋予了PP)
日期应采用以下格式:yyyy-MM-ddTHH:mm:ssZ
离。 start_date = 2014-09-16T09:20:00 -0400
如果您想确保Paypal接受该日期有效,只需添加几秒即可。
让我们说你是Java,你可以这样做:
private String getPaypalDate()
{
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
// Add 30 seconds to make sure Paypal accept the agreement date
Date rightNow = new Date(new Date().getTime() + 30000);
return df.format(rightNow);
}
答案 2 :(得分:0)
moment.now()
,我在收到错误时偶然发现了这个问题。但是将来设置为5秒甚至可以正常工作。我正在使用JavaScript,"start_date": moment().add({seconds:5}).format()
并且检查结果很好。当格式化时,Moment.js会将TZ设置为UTC,所以它必须是你时区的事情吗?
答案 3 :(得分:0)
看起来付款只是根据当前日期07:00 UTC之前或之后的日期进行处理。
例如。当前日期时间是2017-05-04T04:50:00.00Z我将开始日期设置为当前UTC日期时间加上30秒。因为协议日期设置为比API不会引发错误的当前日期时间更大的值,但是它会将您的时间设置为您指定的时间。而是将其设置为2017-05-04T07:00:00Z。
现在,如果你有相同的2017-05-04T04:50:00.00Z的日期时间,而不是添加30秒你添加24小时,你认为你的时间将被设置为2017-05 -05T04:50:00.00Z。但不,时间将设置为2017-05-05T07:00:00Z。
所以看起来这些只是每天07:00 UTC处理,除了日期之外你不能指定任何东西。
答案 4 :(得分:0)
我使用了这种日期格式。
$time = time();
$startDate = date('Y-m-d\\TH:i:s\\Z', $time);