パッケージインストール & マイグレーション
- StripeのCashierパッケージをインストール
composer require laravel/cashier
- インストール後、Cashierにより登録されたマイグレーションを実行
php artisan migrate
これにより、usersテーブルにstripe_id
カラムが追加される
他、課金用テーブルなども追加されるけど今回使用するのはこのカラムだけ
APIキーを設定
- .env
STRIPE_KEY= pk_test_XXXXXXXXXXXXX
STRIPE_SECRET=sk_test_XXXXXXXXXXXX
キー情報は、Stripe管理画面の「開発者」→ APIキー → 標準キーで確認ができる
請求ポータルを表示させる
今回は、usersテーブルのstripe_id
カラムに有効な顧客IDが入っている前提で進める
- Userモデルに
Billable
を追加
これがないと、ポータルを開くためのメソッドが使用できないので注意
<?php
namespace App\Models;
// ⭐️ 追加
use Laravel\Cashier\Billable;
class User extends Authenticatable
{
// ⭐️ 追加
use Billable;
}
続いて、ポータル表示用のルーティング設定
- routes/web.php
Route::get('/billing-portal', function (\Illuminate\Http\Request $request) {
return $request->user()->redirectToBillingPortal();
});
ここで使用しているredirectToBillingPortal()
メソッドは
デフォルトではポータルでの作業完了後にはhome
ルートに戻るように設定されている
そのリダイレクト先を変更するには、第一引数にルートを設定してあげる
Route::get('/billing-portal', function (\Illuminate\Http\Request $request) {
return $request->user()->redirectToBillingPortal(route('billing'));
});
これで、ログインした状態で /billing-portal
にアクセスする
ボタンを表示する場合はこんな感じ
<a href="{{ route('billing-portal') }}">ポータルを表示する</a>
ポータルが表示された
Laravelで、Cashierを利用してStripeの請求カスタマーポータルを表示する