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']);