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.geeksforgeeks.org/">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.geeksforgeeks.org/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.geeksforgeeks.org/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.geeksforgeeks.org/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="//geeksforgeeks.org/"> 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.geeksforgeeks.org/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.geeksforgeeks.org/"> 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.