Integration of the Stripe payment gateway in Laravel 9; I'll demonstrate how to include Stripe payment gateway into Laravel 9 apps in this tutorial.

For payment deduction in this tutorial's Laravel 9 application, I'll utilize the jQuery, ajax, and stripe JavaScript libraries. Additionally, the Laravel 9 app will make an ajax request to deduct money and store payment details in the database.

Step 1 ? Installing Laravel 9 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

Step 9 ? Start Development Server

Step 10 ? Run This App On Browser

Step 1 ? Installing Laravel 9 Application

Launch your terminal and use the following command to browse to your local web server directory:

//for windows user
cd xampp/htdocs

//for ubuntu user
cd var/www/html

the most recent Laravel application by running the command:

composer create-project --prefer-dist laravel/laravel blog

Step 2 ? Create account in?Stripe?and generate key and secret

Create a Stripe account in step two. then create a secret and key.

Step 3 ? Install Stripe package And Configure

Launch the terminal and enter the following command to install the Stripe package in the Laravel application:

composer require cartalyst/stripe-laravel

Then, in app.php, which is found in the config directory, configure the stripe package:

'providers' => [
 ..........
 Cartalyst\Stripe\Laravel\StripeServiceProvider::class 
],
 
'aliases' => [
 ..........
 'Stripe' => Cartalyst\Stripe\Laravel\Facades\Stripe::class 
],

Step 4 ? Database and Stripe Key Configuration

In step 4, launch the Laravel app you downloaded into any text editor. Then locate the .env file and specify the database information, the stripe key, and the secret as follows:

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 

The Stripe API key needs to be configured next; to do this, edit 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

use the terminal to run the following command to create the model and migration file:

php artisan make:model Payment -m

The aforementioned command will produce two files in the following locations in your laravel stripe payment gateway integration tutorial app:

  • /app/Models/Payment.php
  • /database/migrations/create_payments_table.php

Consequently, locate the create payments table.php file in the migrations directory of your database. Open this file, and then add the following code to the method up().

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();
    });
}

Open your terminal once more, and then type the following command on cmd to create tables in the database of your choice:

php artisan migrate

Step 6 ? Create Routes

Open your web.php file, which may be found in the routes directory, in step 6. Add the following routes to the web.php file after that:

use App\Http\Controllers\StripeController;

Route::get('stripe', [StripeController::class, 'index']);
Route::post('payment-process', [StripeController::class, 'process']);

Step 7 ? Creating Stripe Controller

The command to create a Stripe Payment Controller is:

php artisan make:controller StripeController

The StripeController.php file, which is found in the /app/Http/Controllers/ directory, will be created by the aforementioned command.

Enter the following code into the StripeController.php file by opening 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

Create the directory and blade view file indicated below in step 8.

  • inside of the resources/views directory, establish a directory name stripe.
  • Design a payment blade index.blade.php is the name of the view in the resources/views/stripe directory. Add the subsequent code after that:
<!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 9 Stripe Payment Gateway Integration Example - CodeSolutionStuff.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 9 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

The development server should now be running for your laravel stripe payment gateway integration example. To do this, reopen your command prompt and enter the following line:

php artisan serve

Step 10 ? Run This App On Browser

Step 10 is to launch your browser and type the following URL into it:

http://127.0.0.1:8000/stripe

Recommended Posts

View All

Laravel One to Many Eloquent Relationship


laravel one to many relationship example, laravel one to many sync, one to many relationship laravel 5.6, one to many relationship laravel model

Laravel whereHas and orWhereHas Query Example


laravel whereHas and orWhereHas query example, wherehas and orWhereHas query in laravel, how to use wherehas in laravel

Laravel 9 GEO Chart Example using LavaCharts


Learn how to create interactive GEO charts with Laravel 9 and LavaCharts. Visualize your data on maps and improve data analysis. Check it out now!

Laravel 8 Collection with first() and firstWhere() Methods Example


You'll learn how to use the first() and firstWhere() methods in Laravel 8 Collection. The Laravel collection will make working with arrays much easier

Laravel 9 CKeditor Image Upload With Example


install ckeditor laravel 9, ckeditor image upload not working laravel 9, how to upload image in ckeditor in laravel 9, how to upload image using ckedi...