【Laravel × Stripe】サブスクリプション処理を実装する手順1の続きです。
CheckOutで決済ページの表示
CheckOutを表示して、決済フォームを表示します。
UIは自動で作成されるので、とても便利です。
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による決済処理について記述していきます。