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
