2016-08-20 96 views
0

我們在使用「Mollie」爲付款創建webhook服務時遇到問題。Laravel - Carbon - > addmonth()給出隨機日期?

這裏的網絡掛接代碼

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。根據我的理解,它應該從付款時間(支付呼叫webhook的時間,即Carbon :: now())增加1個月,但日期永遠不會匹配。它總是一個隨機日期,並不是真的合理。

一些日期是正確的,但其中大部分似乎完全是。任何想法這可能是什麼?

+0

多遠?它們是否一致(即,連續快速運行幾個'Carbon :: now() - > addMonth()'調用給出類似的或非常不同的日期)? 'premium_expire_date'字段的列類型是什麼? 「Carbon :: now()」爲您輸出的是什麼 - 該部分是否準確? – 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' => 'UTC',

我們在比利時/布魯塞爾。所以它應該是:

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

或者它可能是:

'timezone' => 'Europe/Brussels',

感謝您的幫助!