プルダウンメニューで選択された数量の値をStripeへ渡す

var stripe = Stripe("{{config('services.stripe.pb_key')}}");
var checkoutButton = document.getElementById('checkout-button');
var displayError = document.getElementById('error-message');
var quantitySelect = document.getElementById('quantity');

checkoutButton.addEventListener('click', function() {
    var selectedQuantity = quantitySelect.value;

    // Ajaxを使用してStripeControllerのstartメソッドを呼び出す
    fetch('/path-to-your-start-method', {  // 適切なエンドポイントURLに変更してください
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
            'X-CSRF-TOKEN': '{{ csrf_token() }}'  // LaravelのCSRFトーク
        },
        body: JSON.stringify({ quantity: selectedQuantity })
    })
    .then(response => response.json())
    .then(data => {
        if (data.sessionId) {
            stripe.redirectToCheckout({ sessionId: data.sessionId });
        } else {
            console.error('Session IDが返されませんでした。');
        }
    })
    .catch(error => {
        console.error('エラー:', error);
    });
});

【StripeController.php

public function start(Request $request) {
    $stripe = new \Stripe\StripeClient(config('services.stripe.st_key'));
    $url = 'http://127.0.0.1:8000';
    $id = auth()->user()->id;

    // Ajaxリクエストから数量を取得
    $quantity = $request->input('quantity');

    $session = $stripe->checkout->sessions->create([
        'payment_method_types' => ['card'],
        'line_items' => [[
            'price' => 'price_1NmQgqKtFUY8wKwgHOShsqXn',
            'quantity' => $quantity,  // 使用する数量
        ]],
        'mode' => 'payment',
        'success_url' => $url.'/success/'.$id,
        'cancel_url' => $url.'/cancel',
    ]);

    return response()->json(['sessionId' => $session->id]);
}

【web.php

use App\Http\Controllers\StripeController;

Route::post('/path-to-your-start-method', [StripeController::class, 'start']);