前提条件:
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ページにリダイレクトされ、決済プロセスが始まります。