ItSolutionStuff.com

Codeigniter Stripe Payment Gateway Integration Example

By Hardik Savani • November 5, 2023
Codeigniter

If you want to add credit card payment gateway in your php codeigniter 3 app, then i will suggest you to use stripe payment gateway in your codeigniter website. In this this tutorial i will explain how to integrate stripe payment gateway in codeigniter 3.

I write step by step tutorial of stripe payment gateway integration in php codeigniter. you need to just follow few steps and you have stripe payments api integrated.

Stripe is a fastest online payment processing for internet businesses. stripe provide credit card payment, subscription payment. the most advantage is a they prevent fraud payment.

we will use php code library for stripe payment gateway. before you integrate stripe payment gateway you have stripe account or stripe developer account so, you can easily get stripe api key and secret. then you can use it with this example.

So, let's follow bellow few steps and you can make payment with codeigniter project.

Preview:

Step 1: Download stripe-php Library

In this step we need to download stripe-php library from here: https://github.com/stripe/stripe-php.

After download, you have to extract that folder into "application/libraries" folder and make sure rename folder name "stripe-php".

Step 2: Set Stripe API Key and SECRET

Now, we need to set stripe key and secret. so first you can go on Stripe website and create development stripe account key and secret and add bellow:

application/config/config.php

$config['stripe_key'] = 'pk_test_reFxwbsm9cdCKASd';

$config['stripe_secret'] = 'sk_test_oQMFWteJiPd4w';

Step 3: Create Routes

In this step, we will create two routes for get request and another for post request. So, let's add new route on that file.

application/config/routes.php

$route['my-stripe'] = "StripeController";

$route['stripePost']['post'] = "StripeController/stripePost";

Step 4: Create Controller File

in next step, now we have create new controller as StripeController and write both method on it like as bellow, So let's create both controller:

application/controller/StripeController.php

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class StripeController extends CI_Controller {

/**

* Get All Data from this method.

*

* @return Response

*/

public function __construct() {

parent::__construct();

$this->load->library("session");

$this->load->helper('url');

}

/**

* Get All Data from this method.

*

* @return Response

*/

public function index()

{

$this->load->view('my_stripe');

}

/**

* Get All Data from this method.

*

* @return Response

*/

public function stripePost()

{

require_once('application/libraries/stripe-php/init.php');

\Stripe\Stripe::setApiKey($this->config->item('stripe_secret'));

\Stripe\Charge::create ([

"amount" => 100 * 100,

"currency" => "usd",

"source" => $this->input->post('stripeToken'),

"description" => "Test payment from itsolutionstuff.com."

]);

$this->session->set_flashdata('success', 'Payment made successfully.');

redirect('/my-stripe', 'refresh');

}

}

Step 5: Create View File

In Last step, let's create my_stripe.php(application/views/my_stripe.blade.php) for layout and write code of jquery to get token from stripe here and put following code:

application/views/my_stripe.php

<!DOCTYPE html>

<html>

<head>

<title>Codeigniter Stripe Payment Integration Example - ItSolutionStuff.com</title>

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" />

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<style type="text/css">

.panel-title {

display: inline;

font-weight: bold;

}

.display-table {

display: table;

}

.display-tr {

display: table-row;

}

.display-td {

display: table-cell;

vertical-align: middle;

width: 61%;

}

</style>

</head>

<body>

<div class="container">

<h1>Codeigniter Stripe Payment Integration Example <br/> ItSolutionStuff.com</h1>

<div class="row">

<div class="col-md-6 col-md-offset-3">

<div class="panel panel-default credit-card-box">

<div class="panel-heading display-table" >

<div class="row display-tr" >

<h3 class="panel-title display-td" >Payment Details</h3>

<div class="display-td" >

<img class="img-responsive pull-right" src="http://i76.imgup.net/accepted_c22e0.png">

</div>

</div>

</div>

<div class="panel-body">

<?php if($this->session->flashdata('success')){ ?>

<div class="alert alert-success text-center">

<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>

<p><?php echo $this->session->flashdata('success'); ?></p>

</div>

<?php } ?>

<form role="form" action="/stripePost" method="post" class="require-validation"

data-cc-on-file="false"

data-stripe-publishable-key="<?php echo $this->config->item('stripe_key') ?>"

id="payment-form">

<div class='form-row row'>

<div class='col-xs-12 form-group required'>

<label class='control-label'>Name on Card</label> <input

class='form-control' size='4' type='text'>

</div>

</div>

<div class='form-row row'>

<div class='col-xs-12 form-group card required'>

<label class='control-label'>Card Number</label> <input

autocomplete='off' class='form-control card-number' size='20'

type='text'>

</div>

</div>

<div class='form-row row'>

<div class='col-xs-12 col-md-4 form-group cvc required'>

<label class='control-label'>CVC</label> <input autocomplete='off'

class='form-control card-cvc' placeholder='ex. 311' size='4'

type='text'>

</div>

<div class='col-xs-12 col-md-4 form-group expiration required'>

<label class='control-label'>Expiration Month</label> <input

class='form-control card-expiry-month' placeholder='MM' size='2'

type='text'>

</div>

<div class='col-xs-12 col-md-4 form-group expiration required'>

<label class='control-label'>Expiration Year</label> <input

class='form-control card-expiry-year' placeholder='YYYY' size='4'

type='text'>

</div>

</div>

<div class='form-row row'>

<div class='col-md-12 error form-group hide'>

<div class='alert-danger alert'>Please correct the errors and try

again.</div>

</div>

</div>

<div class="row">

<div class="col-xs-12">

<button class="btn btn-primary btn-lg btn-block" type="submit">Pay Now ($100)</button>

</div>

</div>

</form>

</div>

</div>

</div>

</div>

</div>

</body>

<script type="text/javascript" src="https://js.stripe.com/v2/"></script>

<script type="text/javascript">

$(function() {

var $form = $(".require-validation");

$('form.require-validation').bind('submit', function(e) {

var $form = $(".require-validation"),

inputSelector = ['input[type=email]', 'input[type=password]',

'input[type=text]', 'input[type=file]',

'textarea'].join(', '),

$inputs = $form.find('.required').find(inputSelector),

$errorMessage = $form.find('div.error'),

valid = true;

$errorMessage.addClass('hide');

$('.has-error').removeClass('has-error');

$inputs.each(function(i, el) {

var $input = $(el);

if ($input.val() === '') {

$input.parent().addClass('has-error');

$errorMessage.removeClass('hide');

e.preventDefault();

}

});

if (!$form.data('cc-on-file')) {

e.preventDefault();

Stripe.setPublishableKey($form.data('stripe-publishable-key'));

Stripe.createToken({

number: $('.card-number').val(),

cvc: $('.card-cvc').val(),

exp_month: $('.card-expiry-month').val(),

exp_year: $('.card-expiry-year').val()

}, stripeResponseHandler);

}

});

function stripeResponseHandler(status, response) {

if (response.error) {

$('.error')

.removeClass('hide')

.find('.alert')

.text(response.error.message);

} else {

var token = response['id'];

$form.find('input[type=text]').empty();

$form.append("<input type='hidden' name='stripeToken' value='" + token + "'/>");

$form.get(0).submit();

}

}

});

</script>

</html>

Now you can check with following card details:

Name: Test

Number: 4242 4242 4242 4242

CSV: 123

Expiration Month: 12

Expiration Year: 2024

I hope it can help you...

Hardik Savani

Hardik Savani

I'm a full-stack developer, entrepreneur, and founder of ItSolutionStuff.com. Passionate about PHP, Laravel, JavaScript, and helping developers grow.

📺 Subscribe on YouTube

We Are Recommending You

How to Integrate Stripe Payment Gateway in Laravel?

Read Now →

Codeigniter Dynamic Highcharts Example

Read Now →

Codeigniter Implement Fullcalendar Example Tutorial

Read Now →

Codeigniter Create Dynamic Tree View using Treeview JS

Read Now →

Codeigniter Google Recaptcha Form Validation Example

Read Now →

Codeigniter Ajax Pagination using JQuery Example

Read Now →

Codeigniter Delete Multiple Rows using Checkbox Example

Read Now →

Codeigniter JQuery Ajax Autocomplete Search using Typeahead

Read Now →

How to implement and use DataTables in CodeIgniter?

Read Now →

Codeigniter Ajax Form Validation Example

Read Now →

Codeigniter 3 - Basic CRUD application with MySQL Example with Demo

Read Now →

Codeigniter JQuery Ajax Image Upload Example

Read Now →

How to Implement Flash Messages in Codeigniter?

Read Now →

Codeigniter Ajax CRUD Tutorial Example

Read Now →