2017-12-03 105 views
0

我正在嘗試創建一個API。使用Laravel收銀員(帶條紋)& Laravel護照。Laravel Cashier&Laravel護照 - 無法調用這兩個特徵

public $successStatus = 200; 
public function index(Request $request) 
{ 
    $validator = Validator::make($request->all(), [ 
     'name' => 'required', 
     'email' => 'required|email', 
     'password' => 'required', 
     'c_password' => 'required|same:password', 
    ]); 
    if ($validator->fails()) { 
     return response()->json(['error' => $validator->errors()], 401); 
    } 
    $input = $request->all(); 
    $input['password'] = bcrypt($input['password']); 
    $user = User::create($input); 
    $user = Auth::user(); 
    $success['token'] = $user->createToken('MyApp')->accessToken; 
    $success['name'] = $user->name; 
    $success['email'] = $user->email; 
    $stripeToken = 'tok_visa'; 
    \Stripe\Stripe::setApiKey(env(STRIPE_SECRET)); 

    try 
    { 
     $user->newSubscription('monthly')->create($stripeToken, [ 
      'email' => $user->email, 'description' => 'Our First Customer' 
     ]); 

     return response()->json(['success' => $success], $this->successStatus); 
    } 
    catch(Exception $e) 
    { 
     return response()->json(['success' => $success], $this->successStatus); 
    } 

"message": "Call to a member function createToken() on null", 
"exception": "Symfony\\Component\\Debug\\Exception\\FatalThrowableError", 
"file": "/Users/Taylor/Documents/Websites/storingcompany/api/app/Http/Controllers/Register.php", 
"line": 32, 
"trace": [ 

有什麼我在這裏失蹤?我無法從用戶調用Billable模型特徵。在我的控制器中,它顯示在Authentiable中沒有找到newSubscription而不是Billable。

我的用戶類別:

namespace App; 

use Laravel\Passport\HasApiTokens; 
use Illuminate\Notifications\Notifiable; 
use Illuminate\Foundation\Auth\User as Authenticatable; 
use Laravel\Cashier\Billable; 



class User extends Authenticatable 
{ 
use Billable; 
use HasApiTokens; 
use Notifiable; 
+0

你得到一個錯誤,什麼是錯誤,如果你做的,什麼是真正發生的事情......你能指望什麼發生,什麼是真正發生 – lagbox

+0

我得到的錯誤如上,我想新的條紋訂閱通過我的用戶模型上的計費特性,但它告訴我它無法在認證下找到 –

回答

1

這不是因爲不是「使用」的性狀,這是因爲$user變量是null

您有一行代碼在數據庫中創建新的用戶記錄。緊接着的下一行,您正嘗試獲取當前經過身份驗證的用戶。我會認爲這是一些註冊或註冊過程,所以不會有經過身份驗證的用戶,因爲他們不存在於系統中。

$user = User::create(...); 
$user = Auth::user(); // what do you expect this to be, besides `null` 

$user->anyMethodEver(); // Call to a member function ... on null. 
+0

謝謝你的答案!我錯過了很愚蠢的事情。我習慣讓用戶在進行諸如$ user = $ request-> user()的調用時已經進行了身份驗證。 –