The integration of the Razorpay payment gateway with Laravel 9 will be demonstrated in this post. We will assist you by providing an example of a laravel 9 razorpay pay payment. Let’s talk about the integration of Razorpay with Laravel 9. Let’s talk about Laravel 9’s integration of Razorpay. Follow the instructions below for the Laravel 9 integration of the Razorpay api.
They offer many alternatives, including the ability to pay with a credit card, debit card, UPI, phone pay, google pay, and Paytm. So, if you want to integrate Razorpay with your Laravel app, just follow the instructions listed below. You may also see the preview below:
Step 1: Create the application
In order to create Laravel 9 projects, we must run a command.
composer create-project --prefer-dist laravel/laravel l9Razorpay
Step 2: Create Razorpay Account
Register an account at www.razorpay.com.
after successfully registering. Go to the link below to acquire your ID and secret, as shown in the screen photo below:
Visit this page: dashboard.razorpay.com/app/keys.
Step 3: Add key Id and Key Secret id inside of .env file
RAZORPAY_KEY=rzp_test_XXXXXXXXX
RAZORPAY_SECRET=XXXXXXXXXXXXXXXX
Step 4: Install razorpay/razorpay Package
To use the razorpay api, install the razorpay/razorpay composer package. check the command below.
composer require razorpay/razorpay
Step 5: Create Controller
I’m going to make a RazorpayPaymentController right now.
app/Http/Controllers/RazorpayPaymentController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Razorpay\Api\Api;
use Session;
use Exception;
class RazorpayPaymentController extends Controller
{
/**
* Write code on Method
*
* @return response()
*/
public function index()
{
return view('payment');
}
/**
* Write code on Method
*
* @return response()
*/
public function store(Request $request)
{
$input = $request->all();
$api = new Api(env('RAZORPAY_KEY'), env('RAZORPAY_SECRET'));
$payment = $api->payment->fetch($input['razorpay_payment_id']);
if(count($input) && !empty($input['razorpay_payment_id'])) {
try {
$response = $api->payment->fetch($input['razorpay_payment_id'])->capture(array('amount'=>$payment['amount']));
} catch (Exception $e) {
return $e->getMessage();
Session::put('error',$e->getMessage());
return redirect()->back();
}
}
Session::put('success', 'Payment successful');
return redirect()->back();
}
}
Step 6: Create Route
I will now design a route to call the controller and the function.
routes/web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\RazorpayPaymentController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('payment', [RazorpayPaymentController::class, 'index']);
Route::post('payment', [RazorpayPaymentController::class, 'store'])->name('razorpay.payment.store');
Step 6: Create views file
resources/views/payment.blade.php
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>Laravel 9 - Razorpay Payment Gateway Integration</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
</head>
<body>
<div id="app">
<main class="py-4">
<div class="container">
<div class="row">
<div class="col-md-6 offset-3 col-md-offset-6">
@if($message = Session::get('error'))
<div class="alert alert-danger alert-dismissible fade in" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<strong>Error!</strong> {{ $message }}
</div>
@endif
@if($message = Session::get('success'))
<div class="alert alert-success alert-dismissible fade {{ Session::has('success') ? 'show' : 'in' }}"
role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<strong>Success!</strong> {{ $message }}
</div>
@endif
<div class="card card-default">
<div class="card-header">
Laravel 9- Razorpay Payment Gateway Integration
</div>
<div class="card-body text-center">
<form action="{{ route('razorpay.payment.store') }}" method="POST">
@csrf
<script src="https://checkout.razorpay.com/v1/checkout.js"
data-key="{{ env('RAZORPAY_KEY') }}" data-amount="10001" data-currency="INR"
data-buttontext="Pay 100 INR" data-name="codesolutionstuff.com"
data-description="Rozerpay"
data-image="https://codesolutionstuff.com/wp-content/uploads/2020/10/logo.jpg"
data-prefill.name="name" data-prefill.email="email"
data-theme.color="#F37254"></script>
</form>
</div>
</div>
</div>
</div>
</div>
</main>
</div>
</body>
</html>
Migrate project
php artisan migrate
Open URL:
http://127.0.0.1:8000/payment
You can test using both the test and live versions.