Laravelは、Stripeの決済機能と連携が可能です。
ミドルウェア機能を使って、ユーザーがサブスクリプションに加入しているか判断し、表示や動作を変更できます。
具体的な方法を解説していきますね。
LaravelとStripeを便利に使っていきましょう。
LaravelとStripeの連携:サブスクに加入済みか判定し表示を変える方法
LaravelのプロジェクトとStripeが連携済みであるとして、説明を進めていきます。
Laravelにミドルウェアを設定し、ユーザーがサブスク加入済みかどうかで、次のように処理を振り分けます。
今回実行するステップは、次のとおり。
- ミドルウェアの作成と設定
- ミドルウェアファイルの編集
- ルート設定にミドルウェアを利用
詳しい手順を説明していきます。
① ミドルウェアの作成と設定
下記のコマンドで、ミドルウェアを作成します。
1 |
<span style="font-size: 16px;">php artisan make:middleware StripeMiddleware</span> |
作成後、app/Http の中の Kernel.phpファイルに、作成したミドルウェアを登録しておきます。
protected $routeMiddlewareの一番下あたりに入れておきましょう。
1 |
<span style="font-size: 16px;"> 'StripeMiddleware' => \App\Http\Middleware\StripeMiddleware::class,</span> |
ミドルウェアを作成したら、ここの登録もお忘れなく!
② ミドルウェアファイルの編集
次に、作成した StripeMiddlewareファイルを編集します。
ミドルウェアファイルは、app/Http/Middleware の中に入っています。
Laravel8の公式マニュアルに沿って、次のように入れておきましょう。
1 2 3 4 5 6 7 8 |
<span style="font-size: 16px;"> public function handle(Request $request, Closure $next) { if ($request->user() && ! $request->user()->subscribed('default')) { // このユーザーは支払っていない顧客 return redirect()->route('subscription'); } return $next($request); }</span> |
【subscription】には、サブスク登録ページを設定しておきます。
このミドルウェアを使うと、ユーザーがサブスクに加入しているかどうか判定してくれます。
ユーザーがまだサブスクに加入していない場合、サブスク登録画面が表示されます。
公式マニュアルはこちら。
③ ルート設定にミドルウェアを利用
②で設定した StripeMiddlewareをルート設定で使っていきます。
routes/web.phpファイルを開き、登録情報ページへのルート設定を、次のようにミドルウェアでくくります。
登録情報ページへのルート設定;
});
1 2 3 4 |
<span style="font-size: 16px;">Route::middleware(['StripeMiddleware'])->group(function(){ Route::get('/information/{user}', 'StripeController@information') ->name('stripe.sentsubscription') });</span> |
これでユーザーが登録情報ページにアクセスしようとすると、ミドルウェアがユーザーのサブスク加入をチェックしてくれます。
おまけ:運用例
下記のようなリンクをサイドバーなどに貼っておきます。
1 |
<span style="font-size: 16px;"><a href="{{route('stripe.sentsubscription', auth()->user()->id)}}">ご契約状況</a></span> |
ユーザーがサブスク未加入の場合には、サブスク登録ページが表示されます。
サブスク加入済みの場合は、登録情報ページが表示されます。
さいごに
今回は、ユーザーがサブスクリプションに加入しているかどうかをチェックするミドルウェアを作りました。
ミドルウェアの設定方法は、こちらでも解説しています。
「ミドルウェアってなに?」という方は、下記の記事もおすすめ。
渾身のマンガで解説してます^^
LaravelとStripeを連携させると、色々な操作が可能になります。
LaravelとStripeの連携にご興味があれば、関連記事もチェックしてみてください。