Download Laravel App
composer create-project --prefer-dist laravel/laravel my-app
C:\xampp\htdocs\laravel>composer create-project --prefer-dist laravel/laravel my-app
Connecting our Database
open .env file root directory.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laraveldb
DB_USERNAME=root
DB_PASSWORD=
Install Stripe Composer
composer require stripe/stripe-php
C:\xampp\htdocs\laravel\my-app>composer require stripe/stripe-php
composer require cartalyst/stripe-laravel
C:\xampp\htdocs\laravel\my-app>composer require cartalyst/stripe-laravel
goto app.php file config/app.php add the following
'providers' => [
.....
Cartalyst\Stripe\Laravel\StripeServiceProvider::class,
],
'aliases' => [
......
'Stripe' => Cartalyst\Stripe\Laravel\Facades\Stripe::class,
],
Login to your stripe account and copy the STRIPE_KEY and STRIPE_SECRET
open .env file add this
STRIPE_KEY=pk_test_xxxxxxxxxxxxxxxxxxx
STRIPE_SECRET=sk_test_xxxxxxxxxxxxxx
Create Controller
php artisan make:controller StripePaymentController
C:\xampp\htdocs\laravel\laravelproject>php artisan make:controller StripePaymentController
change it with the following codes:
laravelproject\app\Http\Controllers\StripePaymentController.php
//laravelproject\app\Http\Controllers\StripePaymentController.php <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Validator; use Stripe; class StripePaymentController extends Controller { public function paymentStripe() { return view('stripe'); } public function postPaymentStripe(Request $request) { $validator = Validator::make($request->all(), [ 'card_no' => 'required', 'ccExpiryMonth' => 'required', 'ccExpiryYear' => 'required', 'cvvNumber' => 'required', // 'amount' => 'required', ]); $input = $request->except('_token'); if ($validator->passes()) { $stripe = Stripe::setApiKey(env('STRIPE_SECRET')); try { $token = $stripe->tokens()->create([ 'card' => [ 'number' => $request->get('card_no'), 'exp_month' => $request->get('ccExpiryMonth'), 'exp_year' => $request->get('ccExpiryYear'), 'cvc' => $request->get('cvvNumber'), ], ]); if (!isset($token['id'])) { return redirect()->route('stripe.add.money'); } $charge = $stripe->charges()->create([ 'card' => $token['id'], 'currency' => 'USD', 'amount' => 20.49, 'description' => 'wallet', ]); if($charge['status'] == 'succeeded') { dd($charge); return redirect()->route('addmoney.paymentstripe'); } else { return redirect()->route('addmoney.paymentstripe')->with('error','Money not add in wallet!'); } } catch (Exception $e) { return redirect()->route('addmoney.paymentstripe')->with('error',$e->getMessage()); } catch(\Cartalyst\Stripe\Exception\CardErrorException $e) { return redirect()->route('addmoney.paymentstripe')->with('error',$e->getMessage()); } catch(\Cartalyst\Stripe\Exception\MissingParameterException $e) { return redirect()->route('addmoney.paymentstripe')->with('error',$e->getMessage()); } } } }View Blade File
Bootstrap 5
https://getbootstrap.com/docs/5.0/getting-started/introduction/
https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css
resources/views/stripe.blade.php
//resources/views/stripe.blade.php <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Laravel 9 How To Integrate Stripe Payment Gateway</title> <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"> </head> <body> <div class="container"> <div class='row'> <h1>Laravel 9 How To Integrate Stripe Payment Gateway</h1> <div class='col-md-12'> <div class="card"> <div class="card-header"> Laravel 9 How To Integrate Stripe Payment Gateway </div> <div class="card-body"> @if (Session::has('error')) <font color="red">{{ Session::get('error') }}</font> @endif <form class="form-horizontal" method="post" id="payment-form" role="form" action="{!!route('addmoney.stripe')!!}" > @csrf <div class="mb-3"> <label class='control-label'>Card Number</label> <input autocomplete='off' class='form-control card-number' size='20' type='text' name="card_no"> </div> <div class="row g-3 align-items-center"> <div class="col-auto"> <label class='control-label'>CVV</label> <input autocomplete='off' class='form-control card-cvc' placeholder='ex. 311' size='4' type='text' name="cvvNumber"> </div> <div class="col-auto"> <label class='control-label'>Expiration</label> <input class='form-control card-expiry-month' placeholder='MM' size='4' type='text' name="ccExpiryMonth"> </div> <div class="col-auto"> <label class='control-label'>Year</label> <input class='form-control card-expiry-year' placeholder='YYYY' size='4' type='text' name="ccExpiryYear"> <input class='form-control card-expiry-year' placeholder='YYYY' size='4' type='hidden' name="amount" value="300"> </div> </div> <div class="mb-3" style="padding-top:20px;"> <h5 class='total' >Total:<span class='amount'>$10</span></h5> </div> <div class="mb-3"> <button class='form-control btn btn-success submit-button' type='submit'>Pay »</button> </div> <div class="mb-3"> <div class='alert-danger alert' style="display:none;"> Please correct the errors and try again. </div> </div> </form> </div> </div> </div> </div> </div> </body> </html>Route Defineroutes/web.php
// <?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\StripePaymentController; Route::get('/', function () { return view('welcome'); }); Route::get('stripe',[StripePaymentController::class,'paymentStripe'])->name('addmoney.paymentstripe'); Route::post('add-money-stripe',[StripePaymentController::class,'postPaymentStripe'])->name('addmoney.stripe');Run C:\xampp\htdocs\laravel\laravelproject>php artisan serve
Starting Laravel development server: http://127.0.0.1:8000