Skip to main content

Stripe payment gateway integration using cUrl - Codeigniter 3

 


Stripe payment gateway integration using cUrl - Codeigniter 3

  • Sign up for a Stripe account at https://stripe.com/
  • Obtain Stripe api key
  • Setup Codeigniter 3 Project
  • Create a library for Stripe integration
Create library inside libraries folder  

application => libraries => Stripe_library.php

<?php defined('BASEPATH') OR exit('No direct script access allowed');
class Stripe_library {       
protected $CI; // Default Constructor public function __construct() { $this->CI =& get_instance(); // Load necessary libraries and helpers here if needed } // Create function for checkout public function create_checkout_session($amount, $currency, $success_url, $cancel_url) { $stripe_secret_key = 'Stripe_secret_key'; $api_url = 'https://api.stripe.com/v1/checkout/sessions'; $stripeamount = $amount * 100; $data = [ 'payment_method_types' => ['card'], 'line_items' => [ [ 'price_data' => [ 'currency' => $currency, 'product_data' => [ 'name' => 'Document Translation', ], 'unit_amount' => $stripeamount, ], 'quantity' => 1, ], ], 'mode' => 'payment', 'success_url' => $success_url, 'cancel_url' => $cancel_url, ]; $ch = curl_init($api_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($ch, CURLOPT_USERPWD, $stripe_secret_key . ':'); $response = curl_exec($ch); curl_close($ch); return json_decode($response, true); } } ?>

Create controller inside controller folder
<?php defined('BASEPATH') OR exit('No direct script access allowed');
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Methods: GET, OPTIONS");
class Payment extends CI_Controller{
    
    public function __construct()
    {
       parent::__construct();
       $this->load->library('stripe_library');
    }

    public function checkout() {
        $amount = "Amount"; // Enter Amount
        $productname = "Payment for"; // Enter Product Name
        $currency = 'inr'; // Enter Currency
        $success_url = base_url('payment/success');
        $cancel_url = base_url('payment/cancel');
$session = $this->stripe_library->create_checkout_session($amount, $currency, $success_url, $cancel_url); echo json_encode($session['url']); }     public function success() { // Handle successful payment here // You can retrieve payment details from $_GET or $_POST } public function cancel() { // Handle cancelled payment here }
Create payment.php file inside views.
Send payment checkout request using ajax. so we have create function paynow on button click. 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Stripe Payment Integration</title>
</head>
<body>
    <form id="payment-form">
        <input type="text" id="amount" placeholder="Enter Amount">
        <div id="card-element"></div>
        <button id="submit" onclick="paynow()">Pay</button>
    </form>

    <script>
        function paynow(){
        var amount = $('#total_amount').text();
        $.ajax({
            url: "<?php echo base_url('payment/checkout');?>",
            dataType: "json",
            type: "POST",
            data: {amount:amount},
            success: function(response){
                window.open(response, '_blank');
            }
        })
        }

    </script>
</body>
</html>




Comments

Popular posts from this blog

MVC (Model View Controller) : Codeigniter Club

MVC will divide an application into three functional parts: Models  — deals with your database, carries out computations, and more. In short, it is where your business logic is located. Views  — forms the presentation layer of the application, where the data from your  models  are embedded. Controllers  — used to connect  models  and  views . A controller will route user requests to the appropriate  model.  After that, once the model has done its job, the controller loads the relevant  view. This architectural pattern also gives developers the flexibility to reuse code for multiple views. For example, you can apply the same navigation bar on every webpage of your application. Moreover, as both  views  and  models  are entirely separate, the front-end developers can work in parallel with the back-end team to speed up the development process. Note that CodeIgniter also subscribes to  Object-Oriented Programmin...

How to secure codeigniter website?

CSRF Protection (Cross-Site Request Forgery) CSRF process of an attacker tricking their victim into unknowingly submitting a request. CodeIgniter provides CSRF protection out of the box, which will get automatically triggered for every non-GET HTTP request, but also needs you to create your submit forms in a certain way. URI Security CodeIgniter contain following character in URI ·          Alpha-numeric text (Latin characters only) ·          Tilde: ~ ·          Per cent sign: % ·          Period: . ·          Colon: : ·          Underscore: _ ·          Dash: - ·          Space Password Handling ·        ...

Codeigniter installation & setup: Codeigniter Club

                    Windows Environment   Install XAMPP or WAMP   Download and Unzip the package from Codeigniter.com   Extract all the documents in the server space (htdocs or www directory) Linux Environment  Download and Unzip the package from Codeigniter.com  Place the extracted folder in /var/www (in WAMP) or xampp/htdocs (XAMPP) Base URL   Go to application/config/config.php  Define base URL as $config['base_url'] = 'http://localhost/path/to/folder'; How to remove index.php from URL? go to root  create htaccess file  Add below code inside it  RewriteEngine on RewriteCond $1 !^(index\.php|assets|image|resources|robots\.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L,QSA] Note: .htaccess code varies depending on the hosting server. Some hosting servers (e.g.: Godaddy) need to use an extr...