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.


Recommended Posts

View All

Laravel 8 Generate PDF with Graph Tutorial


Laravel 8 generates a graphed pdf. You will understand how to generate a pdf with a graph in the Laravel 8 app in this tutorial

Install and Use Font Awesome Icons in Laravel 9


laravel 9 install font awesome icons example,how to install font awesome icons in laravel 9,install font awesome icons example,how to install font awe...

Laravel 8 Custom 404, 500 Error Page Example


How to create custom error page in Laravel 8 and we will also try to tell you why we required to create the custom error page.

Laravel 9 Socialite Login with LinkedIn Tutorial Example


How to use the Laravel socialite, Livewire, and Jetstream libraries to create a LinkedIn login system from scratch in Laravel

Laravel 9 Autocomplete Search using Typeahead JS Tutorial


Laravel 8 autocomplete search using Typehead JS from MySQL database example