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
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.