0
1

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】サブスクリプション処理を実装する手順2~CheckOutで決済ページの表示~

Last updated at Posted at 2024-08-11

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

CheckOutで決済ページの表示

CheckOutを表示して、決済フォームを表示します。
UIは自動で作成されるので、とても便利です。

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

Checkoutを開く

ルーティング(前回のおさらい)

# サブスク申請ページ(チェックアウトに進む前のページ)
Route::get('stripe/subscription',
[StripSubscriptionController::class, 'index'])
->name('stripe.subscription');

# チェックアウトページ
Route::get('stripe/subscription/checkout',
[StripSubscriptionController::class, 'checkout'])
->name('stripe.subscription.checkout');

# 支払い完了
Route::get('stripe/subscription/comp',
[StripSubscriptionController::class, 'comp'])
->name('stripe.subscription.comp');

コントローラー:StripSubscriptionController.php

/* ~ */
    /**
     * checkout
     *
     * @return \Illuminate\Http\Response
    */
    public function checkout()
    {
        # シークレットキーの読み込み
        Stripe::setApiKey( config('stripe.secret_key') );


        # 顧客情報
        $user = Auth::user();
        $customer = $user->createOrGetStripeCustomer();


        # 商品情報
        $price_id = config('stripe.price_id');


        $checkout_session = Session::create([

            'customer' => $customer->id, //顧客ID
            'customer_update'=>['address'=> 'auto'],
            'payment_method_types' => [ 'card',],//決済方法

            'line_items' => [[
                'price' => $price_id,//商品情報
                'quantity' => 1,
            ]],

            'payment_method_options' => [
                'card' => [ //3Dセキュア
                    'request_three_d_secure' => 'any' ,
                ],
            ],

            'mode' => 'subscription',
            'success_url' => route('stripe.subscription.comp'),//成功リダイレクトパス
            'cancel_url'  => route('stripe.subscription'),//失敗リダイレクトパス
        ]);


        return redirect()->to($checkout_session->url);
    }


解説

顧客IDの取得

userモデルの'stripe_id'より、Stripe上に保存された顧客情報を取得します。
顧客情報がない(新規顧客)場合、顧客情報を新規生成し、userテーブルにstripe_idの値が更新されます。

$user = Auth::user();
$customer = $user->createOrGetStripeCustomer();

テスト用のカード番号を利用して、決済テストをする

テストモード中では、以下のカード番号で決済のテストをすることができます。

長くなったので、次回はCheckOutによる決済処理について記述していきます。

0
1
0

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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?