Codeigniter 4 Razorpay Payment Gateway Integration Tutorial

Razorpay is a payment gateway that allows you to accept payments from customers in India. It is a secure and reliable payment gateway that is used by many businesses in India. In this tutorial, we will show you how to integrate Razorpay into your Codeigniter 4 application.

Step 1 – Install Codeigniter 4

First, you need to install Codeigniter 4 on your server. You can find the installation instructions here.

Step 2 – Install Razorpay Library

Next, you need to install the Razorpay library for Codeigniter 4. You can find the library here.

Step 3 – Configure Razorpay

Once you have installed the library, you need to configure it. To do this, open the config.php file located in the config folder of your Codeigniter 4 application.

In the config.php file, add the following code:

$config[‘razorpay_key_id’] = ‘YOUR_RAZORPAY_KEY_ID’;
$config[‘razorpay_key_secret’] = ‘YOUR_RAZORPAY_KEY_SECRET’;

Replace YOUR_RAZORPAY_KEY_ID and YOUR_RAZORPAY_KEY_SECRET with your own Razorpay key ID and secret.

Step 4 – Create a Controller

Next, you need to create a controller for your application. To do this, create a file called Payment.php in the Controllers folder of your Codeigniter 4 application.

In the Payment.php file, add the following code:

load->library(‘razorpay’);

// Get the Razorpay key ID and secret
$key_id = $this->config->item(‘razorpay_key_id’);
$key_secret = $this->config->item(‘razorpay_key_secret’);

// Create an instance of the Razorpay library
$razorpay = new Razorpay($key_id, $key_secret);

// Set the payment parameters
$payment_data = array(
‘amount’ => 1000, // Amount in paise
‘currency’ => ‘INR’,
‘description’ => ‘Test Payment’,
‘receipt’ => ‘12345’
);

// Create the payment
$payment = $razorpay->payment->create($payment_data);

// Get the payment ID
$payment_id = $payment->id;

// Redirect the user to the payment page
$razorpay->payment->fetch($payment_id)->capture();
}

}

Step 5 – Create a View

Next, you need to create a view for your application. To do this, create a file called payment.php in the Views folder of your Codeigniter 4 application.

In the payment.php file, add the following code:



Razorpay Payment

Razorpay Payment



Step 6 – Test the Payment

Now, you can test the payment by visiting the payment page in your browser. When you click the “Pay Now” button, you will be redirected to the Razorpay payment page.

Conclusion

In this tutorial, we have shown you how to integrate Razorpay into your Codeigniter 4 application. We have also shown you how to create a controller and view for your application. We hope you have found this tutorial helpful.

Codeigniter 4 razorpay payment gateway integration tutorial. In this tutorial, you will learn how to integrate razorpay payment gateway into codeignitor 4 app.

This tutorial will guide you step by step on how to integrate the razorpay payment gateway in CodeIgniter 4 app with live demo.

Razorpay Payment Gateway Integration In PHP Codeigniter 4

Follow the below given steps and integrate razorpay payment gateway in php codeigniter 4 app:

  • Step 1 – Setup Codeigniter 4 Project
  • Step 2 – Basic Configurations
  • Step 3 – Setup Database Credentials
  • Step 4 – Create Controller
  • Step 5 – Create Views
  • Step 6 – Start Development server

Step 1 – Setup Codeigniter 4 Project

In this step, you will download the latest version of Codeigniter 4, Go to this link https://codeigniter.com/download Download Codeigniter 4 fresh new setup and unzip the setup in your local system xampp/htdocs/ . And change the download folder name “demo”

Step 2 – Basic Configurations

Next, you will set some basic configuration on the app/config/app.php file, so let’s go to application/config/config.php and open this file on text editor.

Set Base URL like this

public $baseURL = 'http://localhost:8080';
To
public $baseURL = 'http://localhost/demo/';

Step 3 – Setup Database Credentials

In this step, you need to connect our project to database. you need to go application/config/ and open database.php file in text editor. After open the file in text editor, you need to setup database credential in this file like below.

$db['default'] = array(
	'dsn'	=> '',
	'hostname' => 'localhost',
	'username' => 'root',
	'password' => '',
	'database' => 'demo',
	'dbdriver' => 'mysqli',
	'dbprefix' => '',
	'pconnect' => FALSE,
	'db_debug' => (ENVIRONMENT !== 'production'),
	'cache_on' => FALSE,
	'cachedir' => '',
	'char_set' => 'utf8',
	'dbcollat' => 'utf8_general_ci',
	'swap_pre' => '',
	'encrypt' => FALSE,
	'compress' => FALSE,
	'stricton' => FALSE,
	'failover' => array(),
	'save_queries' => TRUE
);

Step 4 – Create Controller

In this step, you need to create a controller name Payment.php. And add the following code into it:

<?php namespace App\Controllers;
class Razorpay extends BaseController {
public function __construct() {
$this->session 	= \Config\Services::session();
}
public function index() {
$data = [];
$data['title']              = 'Checkout payment | Tutsmake.com';  
$data['callback_url']       = base_url().'/razorpay/callback';
$data['surl']               = base_url().'/razorpay/success';;
$data['furl']               = base_url().'/razorpay/failed';;
$data['currency_code']      = 'INR';
echo view("checkout", $data);
}
// initialized cURL Request
private function curl_handler($payment_id, $amount)  {
$url            = 'https://api.razorpay.com/v1/payments/'.$payment_id.'/capture';
$key_id         = "YOUR_KEY_ID";
$key_secret     = "YOUR_SECRET";
$fields_string  = "amount=$amount";
//cURL Request
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, $key_id.':'.$key_secret);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
return $ch;
}   
// callback method
public function callback() {   
if (!empty($this->request->getPost('razorpay_payment_id')) && !empty($this->request->getPost('merchant_order_id'))) {
$razorpay_payment_id 	= $this->request->getPost('razorpay_payment_id');
$merchant_order_id 		= $this->request->getPost('merchant_order_id');
$this->session->set('razorpay_payment_id', $this->request->getPost('razorpay_payment_id'));
$this->session->set('merchant_order_id', $this->request->getPost('merchant_order_id'));
$currency_code = 'INR';
$amount = $this->request->getPost('merchant_total');
$success = false;
$error = '';
try {                
$ch = $this->curl_handler($razorpay_payment_id, $amount);
//execute post
$result = curl_exec($ch);
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($result === false) {
$success = false;
$error = 'Curl error: '.curl_error($ch);
} else {
$response_array = json_decode($result, true);
//Check success response
if ($http_status === 200 and isset($response_array['error']) === false) {
$success = true;
} else {
$success = false;
if (!empty($response_array['error']['code'])) {
$error = $response_array['error']['code'].':'.$response_array['error']['description'];
} else {
$error = 'RAZORPAY_ERROR:Invalid Response <br/>'.$result;
}
}
}
//close curl connection
curl_close($ch);
} catch (Exception $e) {
$success = false;
$error = 'Request to Razorpay Failed';
}
if ($success === true) {
if(!empty($this->session->get('ci_subscription_keys'))) {
$this->session->unset('ci_subscription_keys');
}
if (!$order_info['order_status_id']) {
return redirect()->to($this->request->getPost('merchant_surl_id'));
} else {
return redirect()->to($this->request->getPost('merchant_surl_id'));
}
} else {
return redirect()->to($this->request->getPost('merchant_furl_id'));
}
} else {
echo 'An error occured. Contact site administrator, please!';
}
}
public function success() {
$data['title'] = 'Razorpay Success | Tutsmake.com';
echo "<h4>Your transaction is successful</h4>";  
echo "<br/>";
echo "Transaction ID: ".$this->session->get('razorpay_payment_id');
echo "<br/>";
echo "Order ID: ".$this->session->get('merchant_order_id');
}  
public function failed() {
$data['title'] = 'Razorpay Failed | Tutsmake.com';  
echo "<h4>Your transaction got Failed</h4>";            
echo "<br/>";
echo "Transaction ID: ".$this->session->get('razorpay_payment_id');
echo "<br/>";
echo "Order ID: ".$this->session->get('merchant_order_id');
}
}

Step 5 – Create Views

Now you need to create checkout.php. So visit application/views/ folder and create checkout.php file. And add the following code into it:

<!DOCTYPE html>
<html>
<head>
<title>Codeigniter 4 Razorpay Payment Gateway - Tutsmake.com</title>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="">
<meta name="author" content="">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous">
</head>
<body>
<?php
$description        = "Product Description";
$txnid              = date("YmdHis");     
$key_id             = "YOUR_KEY_ID";
$currency_code      = $currency_code;            
$total              = (1* 100); // 100 = 1 indian rupees
$amount             = 1;
$merchant_order_id  = "ABC-".date("YmdHis");
$card_holder_name   = 'David Chase';
$email              = '[email protected]';
$phone              = '9158876092';
$name               = "RazorPay Infovistar";
?>
<div class="container">
<div class="page-header">
<h1>Pay with Razorpay</h1>
</div>
<div class="page-body">
<form name="razorpay-form" id="razorpay-form" action="<?php echo $callback_url; ?>" method="POST">
<input type="hidden" name="razorpay_payment_id" id="razorpay_payment_id" />
<input type="hidden" name="merchant_order_id" id="merchant_order_id" value="<?php echo $merchant_order_id; ?>"/>
<input type="hidden" name="merchant_trans_id" id="merchant_trans_id" value="<?php echo $txnid; ?>"/>
<input type="hidden" name="merchant_product_info_id" id="merchant_product_info_id" value="<?php echo $description; ?>"/>
<input type="hidden" name="merchant_surl_id" id="merchant_surl_id" value="<?php echo $surl; ?>"/>
<input type="hidden" name="merchant_furl_id" id="merchant_furl_id" value="<?php echo $furl; ?>"/>
<input type="hidden" name="card_holder_name_id" id="card_holder_name_id" value="<?php echo $card_holder_name; ?>"/>
<input type="hidden" name="merchant_total" id="merchant_total" value="<?php echo $total; ?>"/>
<input type="hidden" name="merchant_amount" id="merchant_amount" value="<?php echo $amount; ?>"/>
</form>
<table width="100%">
<tr>
<th>No.</th>
<th>Product Name</th>
<th class="text-right">Cost</th>
</tr>
<tr>
<td>1</td>
<td>HeadPhones</td>
<td class="text-right">₹ 1.00</td>
</tr>
</table>
<div class="mt-2 text-right">
<input  id="pay-btn" type="submit" onclick="razorpaySubmit(this);" value="Buy Now" class="btn btn-primary" />
</div>
</div>
</div>
<script src="https://checkout.razorpay.com/v1/checkout.js"></script>
<script>
var options = {
key:            "<?php echo $key_id; ?>",
amount:         "<?php echo $total; ?>",
name:           "<?php echo $name; ?>",
description:    "Order # <?php echo $merchant_order_id; ?>",
netbanking:     true,
currency:       "<?php echo $currency_code; ?>", // INR
prefill: {
name:       "<?php echo $card_holder_name; ?>",
email:      "<?php echo $email; ?>",
contact:    "<?php echo $phone; ?>"
},
notes: {
soolegal_order_id: "<?php echo $merchant_order_id; ?>",
},
handler: function (transaction) {
document.getElementById('razorpay_payment_id').value = transaction.razorpay_payment_id;
document.getElementById('razorpay-form').submit();
},
"modal": {
"ondismiss": function(){
location.reload()
}
}
};
var razorpay_pay_btn, instance;
function razorpaySubmit(el) {
if(typeof Razorpay == 'undefined') {
setTimeout(razorpaySubmit, 200);
if(!razorpay_pay_btn && el) {
razorpay_pay_btn    = el;
el.disabled         = true;
el.value            = 'Please wait...';  
}
} else {
if(!instance) {
instance = new Razorpay(options);
if(razorpay_pay_btn) {
razorpay_pay_btn.disabled   = false;
razorpay_pay_btn.value      = "Pay Now";
}
}
instance.open();
}
}  
</script>
</body>
</html>

Step 6 – Start Development Server

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

php spark serve

Then, Go to the browser and hit below the URL:

http://localhost:8080

Conclusion

In this codeigniter razorpay payment gateway tutorial, you have successfully implemented Razorpay payment gateway with Codeigniter 4 app.

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

Note : here is live payment key implement, so dummy credential not work here.

Recommended Codeigniter 4 Tutorials

Jaspreet Singh Ghuman

Jaspreet Singh Ghuman

Jassweb.com/

Passionate Professional Blogger, Freelancer, WordPress Enthusiast, Digital Marketer, Web Developer, Server Operator, Networking Expert. Empowering online presence with diverse skills.

jassweb logo

Jassweb always keeps its services up-to-date with the latest trends in the market, providing its customers all over the world with high-end and easily extensible internet, intranet, and extranet products.

Contact
San Vito Al Tagliamento 33078
Pordenone Italy
Item added to cart.
0 items - 0.00
Open chat
Scan the code
Hello 👋
Can we help you?