0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Laravel × Stripe】サブスクリプション処理を実装する手順4~カスタマーポータルを表示する~

Last updated at Posted at 2024-08-12

【Laravel × Stripe】サブスクリプション処理を実装する手順3~Webhookで決済処理~
の続きです。

カスタマーポータルを開いて、ユーザーが契約内容を変更できるようにする

カスタマーポータルを開けるようにします。
ユーザーがサブスクプランをキャンセルしたり、クレジット情報を追加することができます。
UIは自動作成され、サブスクキャンセルの処理などもStripe側で行なってくれるのでとても便利です。

スクリーンショット 2024-08-11 8.10.37.png

カスタマーポータルを開く

ルーティング(シリーズ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を利用したサブスクリプションの記述は以上です。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?