Stripe payment gateway integration in laravel 8. In this post, i will show you how to integrate stripe payment geteway in laravel 8 app.
In this post, i will use jQuery, ajax and stripe javascript library for payment deduction in laravel 8 app. And will call ajax request to deduct payment and store payment information into database in laravel 8 app.
And in this post, you will learn step by step on how to integrate stripe payment gateway in laravel 8 app.
Stripe Payment Gateway Integration in Laravel 8
- Step 1 – Installing Laravel 8 Application
- Step 2 – Create account in Stripe and generate key and secret
- Step 3 – Install Stripe package And Configure
- Step 4 – Database and Stripe Key Configuration
- Step 5 – Creating Payment Model & Migration
- Step 6 – Create Routes
- Step 7 – Creating Stripe Controller
- Step 8 – Create Directory and Blade View
- Create Directory Name Stripe
- Create Stripe Payment Blade View
- Step 9 – Start Development Server
- Step 10 – Run This App On Browser
Step 1 – Installing Laravel 8 Application
In step 1, open your terminal and navigate to your local web server directory using the following command:
//for windows user cd xampp/htdocs //for ubuntu user cd var/www/html
Then install laravel 8 latest application using the following command:
composer create-project --prefer-dist laravel/laravel Laravel8Stripe
Step 2 – Create account in Stripe and generate key and secret
In step 2, Create stripe account. Then generate key and secret.
Step 3 – Install Stripe package And Configure
In step 3, open terminal and run the following command on it to install stripe packate in laravel 8 app:
composer require cartalyst/stripe-laravel
Then configure stripe package in app.php, which is located inside config directory:
'providers' => [ .......... Cartalyst\Stripe\Laravel\StripeServiceProvider::class ], 'aliases' => [ .......... 'Stripe' => Cartalyst\Stripe\Laravel\Facades\Stripe::class ],
Step 4 – Database and Stripe Key Configuration
In step 4, open your downloaded laravel 8 app into any text editor. Then find .env file and configure database detail and stripe key and secret like following:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=db name DB_USERNAME=db user name DB_PASSWORD=db password STRIPE_KEY=pk_test_xxxxxxxxxxxxxxxxxxx STRIPE_SECRET=sk_test_xxxxxxxxxxxxxx
Next step, you need to set up the Stripe API key, to do this open or create the config/services.php
file, and add or update the 'stripe'
array:
'stripe' => [ 'secret' => env('STRIPE_SECRET'), ],
Step 5 – Creating Payment Model & Migration
In step 5, run the following command on terminal to create model and migration file by using the following command:
php artisan make:model Payment -m
The above command will create two files into your laravel 8 stripe payment gateway integration tutorial app, which is located inside the following locations:
- Laravel8Stripe/app/Models/Payment.php
- Laravel8Stripe/database/migrations/create_payments_table.php
So, find create_payments_table.php file inside Laravel8Stripe/database/migrations/ directory. Then open this file and add the following code into function up() on this file:
public function up() { Schema::create('payments', function (Blueprint $table) { $table->id(); $table->string('s_payment_id'); // stripe payment id $table->string('user_id'); $table->string('product_id'); $table->string('amount'); $table->timestamps(); }); }
Now, open again your terminal and type the following command on cmd to create tables into your selected database:
php artisan migrate
Step 6 – Create Routes
In step 6, open your web.php file, which is located inside routes directory. Then add the following routes into web.php file:
use App\Http\Controllers\StripeController; Route::get('stripe', [StripeController::class, 'index']); Route::post('payment-process', [StripeController::class, 'process']);
Step 7 – Creating Stripe Controller
In step 7, create stripe payment controller by using the following command:
php artisan make:controller StripeController
The above command will create StripeController.php file, which is located inside Laravel8Stripe/app/Http/Controllers/ directory.
So open StripeController.php file and add the following code into it:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Payment; use Stripe; class StripeController extends Controller { public function index() { return view('stripe.index'); } public function process(Request $request) { $stripe = Stripe::charges()->create([ 'source' => $request->get('tokenId'), 'currency' => 'USD', 'amount' => $request->get('amount') * 100 ]); return $stripe; } }
Step 8 – Create Directory and Blade View
In step 8, create the following directory and blade view file.
- create directory name stripe inside resources/views directory.
- Create Payment Blade View name index.blade.php inside resources/views/stripe directory. Then add the following code into it:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Laravel 8 Stripe Payment Gateway Integration Example - LaraTutorials.com</title> <meta name="csrf-token" content="{{ csrf_token() }}"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"> <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script> <style> .container{ padding: 0.5%; } </style> </head> <body> <div class="container"> <div class="row"> <div class="col-md-12 mt-2 mb-2"> <h3 class="text-center">Laravel 8 Stripe Payment Gateway Integration Example Tutorial</h3><hr> </div> <div class="col-md-12 mt-2 mb-2"> <pre id="res_token"></pre> </div> </div> <div class="row"> <div class="col-md-4"> <button class="btn btn-primary btn-block" onclick="stripePay(10)">Pay $10</button> </div> <div class="col-md-4"> <button class="btn btn-success btn-block" onclick="stripePay(50)">Pay $50</button> </div> <div class="col-md-4"> <button class="btn btn-info btn-block" onclick="stripePay(100)">Pay $100</button> </div> </div> </div> <script src = "https://checkout.stripe.com/checkout.js" > </script> <script type = "text/javascript"> $(document).ready(function() { $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } }); }); function stripePay(amount) { var handler = StripeCheckout.configure({ key: 'pk_test_5f6jfFP2ZV5U9TXQYG0vtqFJ00eFVWNoRX', // your publisher key id locale: 'auto', token: function(token) { // You can access the token ID with `token.id`. // Get the token ID to your server-side code for use. console.log('Token Created!!'); console.log(token) $('#res_token').html(JSON.stringify(token)); $.ajax({ url: '{{ url("payment-process") }}', method: 'post', data: { tokenId: token.id, amount: amount }, success: (response) => { console.log(response) }, error: (error) => { console.log(error); alert('Oops! Something went wrong') } }) } }); handler.open({ name: 'Demo Site', description: '2 widgets', amount: amount * 100 }); } </script> </body> </html>
Step 9 – Start Development Server
Finally, open your command prompt again and run the following command to start development server for your laravel 8 stripe payment gateway integration example:
php artisan serve
Step 10 – Run This App On Browser
In step 10, open your browser and fire the following url into your browser:
http://127.0.0.1:8000/stripe
When you fire the above url on the browser, you will see the image below:


Testing Card Credential
Card No : 4242 4242 4242 4242 Month : any future month Year : any future Year CVV : 123