From e1a989b2a676e00ac5a535cf137578313d5253e7 Mon Sep 17 00:00:00 2001 From: Matt Young Date: Thu, 29 Jan 2026 17:29:38 -0600 Subject: [PATCH] Stripe tutorial --- app/Http/Controllers/StripeController.php | 43 ++++++++++++++++ composer.json | 3 +- composer.lock | 61 ++++++++++++++++++++++- config/stripe.php | 6 +++ resources/views/stripe/index.blade.php | 4 ++ routes/web.php | 12 ++--- 6 files changed, 120 insertions(+), 9 deletions(-) create mode 100644 app/Http/Controllers/StripeController.php create mode 100644 config/stripe.php create mode 100644 resources/views/stripe/index.blade.php diff --git a/app/Http/Controllers/StripeController.php b/app/Http/Controllers/StripeController.php new file mode 100644 index 0000000..7c61b4a --- /dev/null +++ b/app/Http/Controllers/StripeController.php @@ -0,0 +1,43 @@ + [ + [ + 'price_data' => [ + 'currency' => 'usd', + 'product_data' => [ + 'name' => 'send me money', + ], + 'unit_amount' => 3250, // in cents + ], + 'quantity' => 1, + ], + ], + 'mode' => 'payment', + 'success_url' => route('stripe.success'), + 'cancel_url' => route('stripe.index'), + ]); + + return redirect()->away($session->url); + } + + public function success() + { + return view('stripe.index'); + } +} diff --git a/composer.json b/composer.json index 956c553..8aa6241 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,8 @@ "laravel/framework": "^12.49", "laravel/tinker": "^2.11.0", "livewire/flux": "^2.11.1", - "livewire/livewire": "^4.1" + "livewire/livewire": "^4.1", + "stripe/stripe-php": "^19.3" }, "require-dev": { "fakerphp/faker": "^1.24.1", diff --git a/composer.lock b/composer.lock index 502d044..631ee18 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "aa16a4acb2dc4a2a7bb2eb1dd04b1907", + "content-hash": "fae50eff8a59cae5ee7908635763dacf", "packages": [ { "name": "bacon/bacon-qr-code", @@ -3721,6 +3721,65 @@ }, "time": "2025-12-14T04:43:48+00:00" }, + { + "name": "stripe/stripe-php", + "version": "v19.3.0", + "source": { + "type": "git", + "url": "https://github.com/stripe/stripe-php.git", + "reference": "462272ae7560ee29bb891763fd0967d5a77784e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/stripe/stripe-php/zipball/462272ae7560ee29bb891763fd0967d5a77784e5", + "reference": "462272ae7560ee29bb891763fd0967d5a77784e5", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "php": ">=5.6.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "3.72.0", + "phpstan/phpstan": "^1.2", + "phpunit/phpunit": "^5.7 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Stripe\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Stripe and contributors", + "homepage": "https://github.com/stripe/stripe-php/contributors" + } + ], + "description": "Stripe PHP Library", + "homepage": "https://stripe.com/", + "keywords": [ + "api", + "payment processing", + "stripe" + ], + "support": { + "issues": "https://github.com/stripe/stripe-php/issues", + "source": "https://github.com/stripe/stripe-php/tree/v19.3.0" + }, + "time": "2026-01-28T21:15:45+00:00" + }, { "name": "symfony/clock", "version": "v8.0.0", diff --git a/config/stripe.php b/config/stripe.php new file mode 100644 index 0000000..d6ac570 --- /dev/null +++ b/config/stripe.php @@ -0,0 +1,6 @@ + env('STRIPE_SK'), + 'pk' => env('STRIPE_PK'), +]; diff --git a/resources/views/stripe/index.blade.php b/resources/views/stripe/index.blade.php new file mode 100644 index 0000000..0d438a4 --- /dev/null +++ b/resources/views/stripe/index.blade.php @@ -0,0 +1,4 @@ +
+ @csrf + +
diff --git a/routes/web.php b/routes/web.php index f1c0c7a..7043873 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,6 +1,7 @@ group(function () { Route::view('payments', 'payments.index')->name('payments'); }); -// Route::view('dashboard', 'dashboard') -// ->middleware(['auth', 'verified']) -// ->name('dashboard'); - -// Route::view('clients', 'clients.index') -// ->middleware(['auth', 'verified']) -// ->name('clients.index'); +// Testing Stripe +Route::get('stripe', [StripeController::class, 'index'])->name('stripe.index'); +Route::post('/checkout ', [StripeController::class, 'checkout'])->name('stripe.checkout'); +Route::get('/success', [StripeController::class, 'success'])->name('stripe.success'); require __DIR__.'/settings.php';