【Laravel × Stripe】サブスクリプション処理を実装する手順3~Webhookで決済処理~
の続きです。
カスタマーポータルを開いて、ユーザーが契約内容を変更できるようにする
カスタマーポータルを開けるようにします。
ユーザーがサブスクプランをキャンセルしたり、クレジット情報を追加することができます。
UIは自動作成され、サブスクキャンセルの処理などもStripe側で行なってくれるのでとても便利です。
カスタマーポータルを開く
ルーティング(シリーズ1のおさらい)
# カスタマーポータル
Route::get('stripe/subscription/customer_portal',
[Controllers\StripSubscriptionController::class, 'customer_portal'])
->name('stripe.subscription.customer_portal');
コントローラー:StripSubscriptionController.php
/**
* カスタマーポータル
*
* @return \Illuminate\Http\Response
*/
public function customer_portal()
{
Stripe::setApiKey( config('stripe.secret_key') );
# 顧客情報
$user = Auth::user();
$customer = $user->createOrGetStripeCustomer();
# Stripeクライアントを初期化
$stripe = new StripeClient(env('STRIPE_SECRET'));
# カスタマーポータルセッションを作成
$session = $stripe->billingPortal->sessions->create([
'customer' => $customer->id,
'return_url' => route('home'), // ポータルを終了した後にリダイレクトするURL
]);
# カスタマーポータルへのリダイレクト
return redirect($session->url);
}
こちらのコードで、カスタマーポータルを開くことができます。
サブスクプランキャンセルのイベントを受け取る
長くなりましたが、LaravelとStripeを利用したサブスクリプションの記述は以上です。