Stripeを使用して、特定の数量分の商品を発注する方法

前提条件:
Stripeアカウントを既に持っていること。
Laravelプロジェクトが既にセットアップされていること。
手順:
1. Stripe PHP SDKのインストール

Laravelプロジェクトのルートディレクトリで以下のコマンドを実行して、Stripe PHP SDKをインストールします。

composer require stripe/stripe-php


2. .envファイルの更新

.envファイルにStripeのAPIキーを追加します。

STRIPE_SECRET=YOUR_SECRET_KEY
STRIPE_PUBLIC=YOUR_PUBLIC_KEY


3. ルートとコントローラーの作成

LaravelでStripeのCheckoutセッションを作成するためのルートとコントローラーを作成します。

まず、コントローラーを作成します:

php artisan make:controller StripeController


その後、StripeController.phpファイルを開き、以下のようにセッションを作成するメソッドを追加します:


use Stripe\Stripe;
use Stripe\Checkout\Session;

public function createSession()
{
    Stripe::setApiKey(env('STRIPE_SECRET'));

    $session = Session::create([
        'payment_method_types' => ['card'],
        'line_items' => [[
            'price_data' => [
                'currency' => 'jpy',
                'product_data' => [
                    'name' => 'あなたの商品名',
                ],
                'unit_amount' => 1000, 
            ],
            'quantity' => 5,
        ]],
        'mode' => 'payment',
        'success_url' => route('stripe.success'),
        'cancel_url' => route('stripe.cancel'),
    ]);

    return $session->id;
}


次に、web.phpルートファイルに新しいルートを追加します:

Route::get('/stripe', [StripeController::class, 'createSession'])->name('stripe.session');
Route::get('/stripe/success', function() {
    return "Payment Successful!";
})->name('stripe.success');
Route::get('/stripe/cancel', function() {
    return "Payment Cancelled!";
})->name('stripe.cancel');


4. フロントエンドの設定

Bladeテンプレートを使用してCheckoutボタンを作成します。そして、StripeのJavaScriptライブラリを利用してCheckoutページにリダイレクトさせます。


<button id="checkout-button">Checkout</button>
<script src="https://js.stripe.com/v3/"></script>
<script>
    var stripe = Stripe('{{ env('STRIPE_PUBLIC') }}');
    
    document.getElementById('checkout-button').addEventListener('click', async function() {
        const sessionId = await fetch('/stripe').then(response => response.text());
        stripe.redirectToCheckout({
            sessionId: sessionId
        });
    });
</script>


これで、ボタンをクリックするとStripeのCheckoutページにリダイレクトされ、決済プロセスが始まります。