Throughout Laravel 9 instamojo payment gateway integration example tutorial we are going to share how to integrate the instamojo payment gateway in the php laravel 9 application via the instamojo PHP package.
Here in this article you will learn step by step guide on how to integrate Instamojo payment in laravel app. You can use this example in your laravel 5, laravel 6, laravel 7, laravel 8 or laravel 9 apps.
Laravel 9 Instamojo Payment Gateway Integration Example
- Step 1: Download Laravel App
- Step 2: Connect App to Database
- Step 3: Install Instamojo package
- Step 4: Configure Instamojo Package
- Step 5: Create Model and Migration
- Step 6: Create Controller
- Step 7: Make Routes
- Step 8: Create Blade View file
- Step 9: Start Development Server
Step 1: Install Laravel App
First we need to install fresh Laravel application by executing the following command on the terminal:
composer create-project --prefer-dist laravel/laravel instamojo-payment-gateway
Go inside the app:
cd instamojo-payment-gateway
Step 2: Connect App To Database
Now go to you app root directory and open the .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: Install Instamojo Package
In this step, execute the following command on terminal to install instamojo package:
composer require instamojo/instamojo-php
Step 4: Configure Package
First of all, visit the instamojo.com and create an account on it. Then you will get the client id and secret id from Instamojo.
After that, open the .env file And set the API key, auth-token and URL in the .env file like the following:
IM_API_KEY=api_key
IM_AUTH_TOKEN=auth_token
IM_URL=https://test.instamojo.com/api/1.1/
Next, Open the services.php file and add the following code into it, which is inside the app/config directory. few step in Instamojo payment gateway integration in PHP.
'instamojo' => [
'api_key' => env('IM_API_KEY'),
'auth_token' => env('IM_AUTH_TOKEN'),
'url' => env('IM_URL'),
],
Step 5: Create Model & Migration
Generate the payments table and its model using the following command:
php artisan make:model Payment -m
After successfully run the command go to database/migrations/create_payments_table.php file and replace the function, below here:
public function up()
{
Schema::create('payments', function (Blueprint $table) {
$table->increments('id');
$table->string('i_payment_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 6: Create Controller
In this step, Create the controller name PaymentController using the below command.
php artisan make:controller PaymentController
Then open PaymentController.php and add the following code into it, which is placed on app/Http/Controller/ directory:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PaymentController extends Controller
{
public function index()
{
return view('payments');
}
public function pay(Request $request){
$api = new \Instamojo\Instamojo(
config('services.instamojo.api_key'),
config('services.instamojo.auth_token'),
config('services.instamojo.url')
);
try {
$response = $api->paymentRequestCreate(array(
"purpose" => "For text Php Coding Stuff",
"amount" => $request->amount,
"buyer_name" => "$request->name",
"send_email" => true,
"email" => "$request->email",
"phone" => "$request->mobile_number",
"redirect_url" => "http://127.0.0.1:8000/pay-success"
));
header('Location: ' . $response['longurl']);
exit();
}catch (Exception $e) {
print('Error: ' . $e->getMessage());
}
}
public function success(Request $request){
try {
$api = new \Instamojo\Instamojo(
config('services.instamojo.api_key'),
config('services.instamojo.auth_token'),
config('services.instamojo.url')
);
$response = $api->paymentRequestStatus(request('payment_request_id'));
if( !isset($response['payments'][0]['status']) ) {
dd('payment failed');
} else if($response['payments'][0]['status'] != 'Credit') {
dd('payment failed');
}
}catch (\Exception $e) {
dd('payment failed');
}
dd($response);
}
}
Step 7: Add Routes
In this step, open the web.php file and add the following routes into it, which is placed inside the routes directory:
use App\Http\Controllers\PaymentController;
Route::get('payment', [PaymentController::class, 'index']);
Route::post('pay', [PaymentController::class, 'pay']);
Route::get('pay-success', [PaymentController::class, 'success']);
Step 8: Create Blade View File
In this step, Visit the resources/views directory and create blade view file name payments.blade.php. Then add the following code into payments.blade.php. We learn How to integrate Instamojo payment gateway in laravel.
<!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">
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>Instamojo Payment Gateway </title>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha/css/bootstrap.css" rel="stylesheet">
<style>
.mt40{
margin-top: 40px;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-lg-12 mt40">
<div class="card-header" style="background: #0275D8;">
<h2>Register for Event</h2>
</div>
</div>
</div>
@if ($errors->any())
<div class="alert alert-danger">
<strong>Opps!</strong> Something went wrong<br>
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<form action="{{ url('pay') }}" method="POST" name="laravel_instamojo">
{{ csrf_field() }}
<div class="row">
<div class="col-md-12">
<div class="form-group">
<strong>Name</strong>
<input type="text" name="name" class="form-control" placeholder="Enter Name" required>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<strong>Mobile Number</strong>
<input type="text" name="mobile_number" class="form-control" placeholder="Enter Mobile Number" required>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<strong>Email Id</strong>
<input type="text" name="email" class="form-control" placeholder="Enter Email id" required>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<strong>Event Fees</strong>
<input type="text" name="amount" class="form-control" placeholder="" value="100" readonly="">
</div>
</div>
<div class="col-md-12">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
</div>
</body>
</html>
Step 9: Start you Application
In this step, execute the php artisan serve command on the terminal to start the development server:
php artisan serve
Testing Card Credential
Card No : 4242424242424242
Month : any future month
Year : any future Year
CVV : 111
Password : 1221
So Instamojo payment gateway integration in laravel 9 completed. i hope you like this article.