Laravel Cashier の実装中に大きな頭痛の種になりました。サブスクリプションを正常に作成し、カードに請求し、トークンを受け取り、すべての情報をサブスクリプション テーブルに保存しました。
次のコードを使用してこれを行っていますが、何らかの理由で標準的な方法が機能していません。
public function createSubscription(Request $request) {
\Stripe\Stripe::setApiKey('sk_test_XXXXXXXXXXXXXXXXX');
Auth::user('id')->newSubscription('monthly', 'basic')->trialDays(30)->create($request->stripeToken);
Session::flash('message', 'Your subscription has been updated, thank you.');
return view('pages.packages')->with('user', Auth::user());
}
これは、使用するように言われている標準コードとは異なりますが、機能します! 先に進むと、データがテーブルに入ったら、次のレジ係に電話して、ユーザーが購読しているかどうかを確認できるはずです。
$user->subscribed();
もちろん、その前にコードを構造化する必要があったとすれば、最終的には次のようになります。
Auth::user('id')->subscribed();
これは機能していません。エラーが発生していません。毎回 false を返すだけなので、ビューなどを避けるためにこれを行いました。
dd(Auth::user('id')->subscribed());
そして、ユーザーやパッケージに関係なく、表示されるものはすべて誤りです!
User モデルの一部としてキャッシャーをアタッチした User.php に何か欠けているような気がします! そのようです;
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravel\Cashier\Billable;
class User extends Authenticatable
{
use Billable;
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $dates = [
'trial_ends_at', 'subscription_ends_at',
];
}
ここで私は本当に明らかな間違いを犯している可能性がありますが、このアプリケーションはここで私の存在を飲み込んでいるので、どんな助けも大歓迎です!
ありがとう