2016-08-20 12 views
0

У нас возникли проблемы с созданием сервиса webhook для оплаты с использованием «Mollie».Laravel - Carbon -> addmonth() дает случайные даты?

Вот код 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()), но даты никогда не совпадают. Это всегда случайная дата, которая на самом деле не является иметь смысл.

Некоторые из дат верны, но большинство из них, кажется, полностью. Любая идея, что это может быть?

+0

Как далеко? Являются ли они согласованными (т. Е. Выполняется несколько вызовов 'Carbon :: now() -> addMonth()' в быстрой последовательности, дают похожие или совершенно разные даты)? Каков тип столбца для поля 'premium_expire_date'? Что делает 'Carbon :: now()' output for you - эта часть точна? – ceejayoz

+0

Нет, они все в течение одного месяца с нужной даты, но на самом деле нет рисунка – Nicolas

+0

Вы действительно ответили на один из моих вопросов. Через CLI запустите 'php artisan tinker' и введите' Carbon \ Carbon :: now() -> addMonth(); 'Он дает вам то, что вы ожидаете? – ceejayoz

ответ

0

Нет проблем с углеродом. Проверьте файл config/app.php на свойство часового пояса.

'timezone' => env('APP_TIMEZONE', 'UTC'), 
+0

Проблема с часовым поясом не приведет к описанным «случайным датам». – ceejayoz

0

Timezone в настоящее время:

'timezone' => 'UTC',

Мы в Бельгии/Брюссель. Так она должна быть:

'timezone' => env('Europe/Brussels', 'UTC')

В качестве альтернативы он может быть:

'timezone' => 'Europe/Brussels',

Спасибо за помощь!