Laravel 9 Razorpay Payment Gateway Integration Tutorial with Example

Laravel 9 razorpay payment gateway integration; In this tutorial, we will learn how to integrate a razorpay payment gateway in laravel 9 app.

And as well as, will implement a simple script code for payment deduction and payment success. Before starting Razorpay payment gateway integration in laravel 9 tutorial, you need to create a Razorpay account and get a secret app key from the Razorpay app. So, you can visit this link and create the Razorpay app.

Laravel 9 Razorpay Payment Gateway Integration Tutorial with Example

Use the following steps to implement Razorpay payment gateway in laravel 9 apps:

  • Step 1: Install Laravel 9 App
  • Step 2: Connecting App to Database
  • Step 3: Create Model & Migration
  • Step 4: Make Routes
  • Step 5: Create Controller & Methods
  • Step 6: Create Blade View
  • Step 7: Start Development Server
  • Step 8: Run This App

Step 1: Install Laravel 9 App

In this step, download or install the latest laravel 9 app by using the following command, so open the terminal and execute the following command:

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

Step 2: Connecting App to Database

In this step, visit laravel 9 app root directory and open .env file. Then add the database details:

  DB_CONNECTION=mysql 
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=here your database name here
DB_USERNAME=here database username here
DB_PASSWORD=here database password here

Step 3: Create Model & Migration

In this step, create table name Payment and its migration file. use the below command.

php artisan make:model Payment -m

Its command will create one model name Payment and also create one migration file for the Payment table. After successfully running the command go to the database/migrations/Payments.php file and replace the function, below here :

public function up()
 {
 Schema::create('payments', function (Blueprint $table) {
 $table->increments('id');
 $table->string('r_payment_id');
 $table->string('product_id');
 $table->string('user_id');
 $table->string('amount');
 $table->timestamps();
 });
 }

Next, migrate the table using the below command. It will create two new tables in the database.

php artisan migrate

Step 4: Make Route

In this step, create three routes and add these routes in the web.php file. So, visit /routes/web.php file and add the following routes in web.php:

use App\Http\Controllers\RazorpayController;

Route::get('product', [RazorpayController::class, 'index']);
Route::get('paysuccess', [RazorpayController::class, 'razorPaySuccess']);
Route::get('razor-thank-you', [RazorpayController::class, 'RazorThankYou']);

Step 5: Create Controller

In this step, open a terminal and execute the following command to create a controller name RazorpayController:

php artisan make:controller RazorpayController

After successfully creating controller go to app/controllers/RazorpayController.php and put the below code :

<?php

 namespace App\Http\Controllers;

 use Illuminate\Http\Request;

 use App\Models\Payment;

 use Redirect,Response;

 class RazorpayController extends Controller
 {
     public function razorpayProduct()
     {
       return view('razorpay');
     }

     public function razorPaySuccess(Request $Request){
         $data = [
                   'user_id' => '1',
                   'product_id' => $request->product_id,
                   'r_payment_id' => $request->payment_id,
                   'amount' => $request->amount,
                ];

         $getId = Payment::insertGetId($data);

         $arr = array('msg' => 'Payment successfully credited', 'status' => true);

         return Response()->json($arr);
     }

     public function RazorThankYou()
     {
       return view('thankyou');
     }

 }

Step 6: Create Blade view

In this step, create a blade view file name razorpay.blade.php and add the following code into it.

So, visit resources/views & create razorpay.blade.php file. Then add the following code into it:

<!doctype html>
<html lang="en">
   <head>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
      <meta name="csrf-token" content="{{ csrf_token() }}">
      <title>Laravel 9 Razorpay Payment Gateway - Tutsmake.com</title>
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" />
      <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
      <style>
         .card-product .img-wrap {
         border-radius: 3px 3px 0 0;
         overflow: hidden;
         position: relative;
         height: 220px;
         text-align: center;
         }
         .card-product .img-wrap img {
         max-height: 100%;
         max-width: 100%;
         object-fit: cover;
         }
         .card-product .info-wrap {
         overflow: hidden;
         padding: 15px;
         border-top: 1px solid #eee;
         }
         .card-product .bottom-wrap {
         padding: 15px;
         border-top: 1px solid #eee;
         }
         .label-rating { margin-right:10px;
         color: #333;
         display: inline-block;
         vertical-align: middle;
         }
         .card-product .price-old {
         color: #999;
         }
      </style>
   </head>
   <body>
      <div class="container">
         <br>
         <p class="text-center">More article on <a href="https://www.tutsmake.com/">Tutsmake.com</a></p>
         <hr>
         <div class="row">
            <div class="col-md-4">
               <figure class="card card-product">
                  <div class="img-wrap"><img src="//www.tutsmake.com/wp-content/uploads/2019/03/c05917807.png"></div>
                  <figcaption class="info-wrap">
                     <h4 class="title">Mouse</h4>
                     <p class="desc">Some small description goes here</p>
                     <div class="rating-wrap">
                        <div class="label-rating">132 reviews</div>
                        <div class="label-rating">154 orders </div>
                     </div>
                     <!-- rating-wrap.// -->
                  </figcaption>
                  <div class="bottom-wrap">
                     <a href="javascript:void(0)" class="btn btn-sm btn-primary float-right buy_now" data-amount="1000" data-id="1">Order Now</a>
                     <div class="price-wrap h5">
                        <span class="price-new">₹1000</span> <del class="price-old">₹1200</del>
                     </div>
                     <!-- price-wrap.// -->
                  </div>
                  <!-- bottom-wrap.// -->
               </figure>
            </div>
            <!-- col // -->
            <div class="col-md-4">
               <figure class="card card-product">
                  <div class="img-wrap"><img src="//www.tutsmake.com/wp-content/uploads/2019/03/vvjghg.png"> </div>
                  <figcaption class="info-wrap">
                     <h4 class="title">Sony Watch</h4>
                     <p class="desc">Some small description goes here</p>
                     <div class="rating-wrap">
                        <div class="label-rating">132 reviews</div>
                        <div class="label-rating">154 orders </div>
                     </div>
                     <!-- rating-wrap.// -->
                  </figcaption>
                  <div class="bottom-wrap">
                     <a href="javascript:void(0)" class="btn btn-sm btn-primary float-right buy_now" data-amount="1280" data-id="2">Order Now</a>
                     <div class="price-wrap h5">
                        <span class="price-new">₹1280</span> <del class="price-old">₹1400</del>
                     </div>
                     <!-- price-wrap.// -->
                  </div>
                  <!-- bottom-wrap.// -->
               </figure>
            </div>
            <!-- col // -->
            <div class="col-md-4">
               <figure class="card card-product">
                  <div class="img-wrap"><img src="//www.tutsmake.com/wp-content/uploads/2019/03/jhgjhgjg.jpg"></div>
                  <figcaption class="info-wrap">
                     <h4 class="title">Mobile</h4>
                     <p class="desc">Some small description goes here</p>
                     <div class="rating-wrap">
                        <div class="label-rating">132 reviews</div>
                        <div class="label-rating">154 orders </div>
                     </div>
                     <!-- rating-wrap.// -->
                  </figcaption>
                  <div class="bottom-wrap">
                     <a href="javascript:void(0)" class="btn btn-sm btn-primary float-right order_now" data-amount="1280" data-id="3">Order Now</a>
                     <div class="price-wrap h5">
                        <span class="price-new">₹1500</span> <del class="price-old">₹1980</del>
                     </div>
                     <!-- price-wrap.// -->
                  </div>
                  <!-- bottom-wrap.// -->
               </figure>
            </div>
            <!-- col // -->
         </div>
         <!-- row.// -->
      </div>
      <!--container.//-->
      <br><br><br>
      <article class="bg-secondary mb-3">
         <div class="card-body text-center">
            <h4 class="text-white">Welcome to Tutsmake.com<br>  </h4>
            <p class="h5 text-white">Thank you for being here </p>
            <br>
            <p><a class="btn btn-warning" target="_blank" href="//tutsmake.com/"> Tutsmake.com
               <i class="fa fa-window-restore "></i></a>
            </p>
         </div>
         <br><br><br>
      </article>
      <script src="https://checkout.razorpay.com/v1/checkout.js"></script>
      <script>
         var SITEURL = '{{URL::to('')}}';
         $.ajaxSetup({
           headers: {
               'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
           }
         });
         $('body').on('click', '.buy_now', function(e){
           var totalAmount = $(this).attr("data-amount");
           var product_id =  $(this).attr("data-id");
           var options = {
           "key": "rzp_test_SYm5UF3bsPxKKR",
           "amount": (totalAmount*100), // 2000 paise = INR 20
           "name": "Tutsmake",
           "description": "Payment",
           "image": "//www.tutsmake.com/wp-content/uploads/2018/12/cropped-favicon-1024-1-180x180.png",
             "handler": function (response){

               window.location.href = SITEURL +'/'+ 'paysuccess?payment_id='+response.razorpay_payment_id+'&product_id='+product_id+'&amount='+totalAmount;
            },
          "prefill": {
               "contact": '9988665544',
               "email":   '[email protected]',
           },
           "theme": {
               "color": "#528FF0"
           }
         };
         var rzp1 = new Razorpay(options);
         rzp1.open();
         e.preventDefault();
         });
         /*document.getElementsClass('buy_plan1').onclick = function(e){
           rzp1.open();
           e.preventDefault();
         }*/
      </script>
   </body>
</html>

Get Your secret key from razorpay payment gateway dashboard and put the key in script tag section like this => “key”: “rzp_test_5kdfjkdJFKR”,

Then visit resources/views and Create a new blade view file name thankyou.blade.php. Then add the following code into it:

<!DOCTYPE html>
<html>
<head>
<title>Thank You - Tutsmake</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" />
</head>
<body class="">
<br><br><br><br>
<article class="bg-secondary mb-3">
<div class="card-body text-center">
<h4 class="text-white">Thank you for payment<br></h4>
<br>
<p><a class="btn btn-warning" target="_blank" href="https://www.tutsmake.com/"> Tutsmake.com
 <i class="fa fa-window-restore "></i></a></p>
</div>
<br><br><br>
</article>

</body>
</html>

Step 7: Start Development Server

In this step, open terminal and execute the following command to start the development server:

 php artisan serve

Step 8: Run This App

Now open the browser and fire the following URL on it:

 http://localhost:8000/product

Conclusion

Laravel 9 Razorpay payment gateway integration tutorial, we have learned how to integrate Razorpay payment gateway in laravel 9 app using Razorpay javascript library.

Recommended Laravel Tutorials

If you have any questions or thoughts to share, use the comment form below to reach us.

AuthorDevendra Dode

Greetings, I'm Devendra Dode, a full-stack developer, entrepreneur, and the proud owner of Tutsmake.com. My passion lies in crafting informative tutorials and offering valuable tips to assist fellow developers on their coding journey. Within my content, I cover a spectrum of technologies, including PHP, Python, JavaScript, jQuery, Laravel, Livewire, CodeIgniter, Node.js, Express.js, Vue.js, Angular.js, React.js, MySQL, MongoDB, REST APIs, Windows, XAMPP, Linux, Ubuntu, Amazon AWS, Composer, SEO, WordPress, SSL, and Bootstrap. Whether you're starting out or looking for advanced examples, I provide step-by-step guides and practical demonstrations to make your learning experience seamless. Let's explore the diverse realms of coding together.

Leave a Reply

Your email address will not be published. Required fields are marked *