我开始使用条带付款并设置我的测试环境。一切正常,直到订阅即将结束。就像Stripe主页上的教程所说,您应该将订阅结束日期保存在我正在进行的数据库中。
因此,假设用户已取消或其订阅已结束。他正试图再次登录,并提示再次注册订阅的消息。在这里,我将获取日期并重新订阅用户:
//create subscription
$customer = \Stripe\Subscription::create(array(
"customer" => $customer_id,
"plan" => "test"
));
//get curent end period
$end_date = $customer->current_period_end;
//getting something like this 1472625732
$next_payment_date = date('Y-m-d',$end_date);
从条带响应中获取日期。然后我将它转换为我可以在mysql中使用的时间戳,然后我插入它。一切正常,但我认为我的订阅过早取消。
条纹中我看到了:
当前时期:
2016/08/30 to 2016/08/31
在我的数据库中,我看到2016-08-31 00:00:00
,它在午夜取消订阅,但条纹说订阅仍然有效。
在我的登录脚本中,我在数据库中检查该日期,并且它说我的订阅未激活,这是不正确的。
这是我的问题,我该如何防止这种行为?订阅结束时是否有任何方法可以获得时间,或者条带是否设置了默认时间?
答案 0 :(得分:0)
问题是您从条带获得的时间戳1472625732是 GMT:2016年8月31日,星期三,上午6:42:12 ,并且在该时间戳记上的呼叫date('Y-m-d',$end_date);
之后,您丢失了(truncate)时间部分 6:42:12 ,这导致条带侧订阅的结束时间为 2016年8月31日上午6:42:12 ,而根据您的数据库订阅于 2016年8月31日上午00:00:00