【发布时间】:2016-08-21 06:19:50
【问题描述】:
我们在使用“Mollie”为付款创建 webhook 服务时遇到问题。
这是 webhook 代码
public function premiumPaymentCheck(Request $request)
{
$payment = Mollie::api()->payments()->get(Input::get('id'));
$metadata = $payment->metadata;
$user_id = $metadata->user_id;
if ($payment->isPaid()) {
$user = User::find($user_id);
$user->mollie_customerID = $metadata->customerId;
$user->premium = true;
$user->premium_type = "premium";
$user->subscribed = true;
$user->premium_expire_date = Carbon::now()->addMonth();
$user->save();
}
}
一切正常,除了premium_expire_date。据我了解,它应该从付款时间增加 1 个月(付款调用 webhook 的时间,所以 Carbon::now()),但日期永远不会匹配。它总是一个随机日期这真的没有意义。
有些日期是正确的,但大多数似乎完全正确。知道这可能是什么吗?
【问题讨论】:
-
还有多远?它们是否一致(即连续运行多个
Carbon::now()->addMonth()调用是否会给出相似或完全不同的日期)?premium_expire_date字段的列类型是什么?Carbon::now()为您输出了什么 - 那部分准确吗? -
不,它们都在所需日期的一个月内,但确实没有任何规律
-
你只回答了我的一个问题。通过 CLI,运行
php artisan tinker并输入Carbon\Carbon::now()->addMonth();它是否满足您的期望? -
如果您在接近月底时遇到问题(例如
Carbon::now()'2016-07-30'),请注意月份溢出行为和Carbon::addMonthNoOverflow(参见why addMonths() change the day of month? 中的示例)跨度>
标签: php laravel date php-carbon