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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | //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()); } } } } |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | //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> |
1 2 3 4 5 6 7 8 9 10 11 12 | // <?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' ); |
Starting Laravel development server: http://127.0.0.1:8000