2017-12-03 6 views
0

私はAPIを作成しようとしています。 Laravel Cashierを使用する(ストライプあり)& Laravel Passport。Laravel Cashier&Laravel Passport - 両方の特性を呼び出すことができません

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モデルの特性をユーザーから呼び出すことができません。私のコントローラでは、Billableの代わりにAuthentiableにnewSubscriptionが見つかりません。

マイUserクラス:

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()のように、これらの呼び出しを行うときに、ユーザーが既に認証されていることに慣れています。 –

関連する問題