Course Content
Introduction to CodeIgniter 4
CodeIgniter is an Application Development Framework. CodeIgniter is a popular and powerful MVC (Model-View-Controller) framework that is used to develop web applications. It is a free and Open-source PHP framework.
0/5
MVC (Model-View-Controller)
MVC stands for Model-View-Controller. MVC is an application design model consisting of three interconnected parts. They include the model (data), the view (user interface), and the controller (processes that handle input).
0/6
Sessions
The Session class allows you to maintain a user’s "state" and track their activity while they browse your site.
0/1
URI Routing
There is a one-to-one relationship between a URL string and its corresponding controller class/method.
0/2
Working with Database
Like any other framework, we need to interact with the database very often and CodeIgniter makes this job easy for us. It provides a rich set of functionalities to interact with the database.
0/5
Spreadsheet
PhpSpreadsheet is a PHP library for reading and writing spreadsheet files. Importing Excel and CSV into MySQL help to save the user time and avoid repetitive work.
0/1
CodeIgniter 4
    About Lesson

    PayPal provides an easy way to integrate a standard payment gateway in PHP. If your web application is built with CodeIgniter 4, the PayPal PHP library and API need to be integrated into the CodeIgniter 4 application. 

    This tutorial will guide you through integrating PayPal payment processing into a CodeIgniter 4 application. We’ll create a simple example to demonstrate the process.

    Prerequisites

    1. Basic knowledge of PHP and CodeIgniter 4.
    2. A CodeIgniter 4 project set up.
    3. A PayPal Developer account.

     

    Set Up Your CodeIgniter 4 Project & Install PayPal SDK via Composer

    Ensure you have CodeIgniter 4 installed.

    composer require paypal/paypal-checkout-sdk

     

    Create a PayPal Developer Account

    1. Visit the PayPal Developer Portal.
    2. Log in or create an account.
    3. Create a new app under the “My Apps & Credentials” section to get your Client ID and Secret.

     

    Configure CodeIgniter for PayPal

    $clientId = 'ARF2P04R0r_x_fQ-fATDzXXXXXXX7hCy1eMxymIYYQQ5zR-0QzKPpFGhTH6vDVMG';
    $clientSecret = 'EB-Gy0qyz1JbQJoAM1QNXXXXXXXXXXXXXq2fNCI0Ir92UsRO3TlSJ5Wmne9aM-cJqGopgIHK0Ec1';

     

    Create a Controller for PayPal Integration

    Create a new controller app/Controllers/payment/Paypal.php:

    <?php
    namespace App\Controllers\payment;
    use App\Controllers\BaseController;

    use PayPalCheckoutSdk\Core\PayPalHttpClient;
    use PayPalCheckoutSdk\Core\SandboxEnvironment;
    use PayPalCheckoutSdk\Core\ProductionEnvironment;
    use PayPalCheckoutSdk\Orders\OrdersCreateRequest;
    use PayPalCheckoutSdk\Orders\OrdersCaptureRequest;

    class Paypal extends BaseController {

    public function __construct() {
    $db = db_connect();

    $this->ip_address = $_SERVER['REMOTE_ADDR'];
    $this->datetime = date("Y-m-d H:i:s");
    }

    public function index() {
    $data = [];
    $data ['content_title'] = 'Pay with Paypal using CodeIgniter 4';
    echo view('home', $data);
    }

    public function create() {
    $amount = $this->request->getGet('amount');
    $currency = $this->request->getGet('currency');
    $clientId = 'ARF2P04R0r_x_fQ-fATDz7AqlyFY1Vpqk9Gu2uXCzk9R7hCy1eMxymIYYQQ5zR-0QzKPpFGhTH6vDVMG';
    $clientSecret = 'EB-Gy0qyz1JbQJoAM1QNmX_ld0G8HNA8BIkkVq2fNCI0Ir92UsRO3TlSJ5Wmne9aM-cJqGopgIHK0Ec1';
    $paypal_sandbox = true;
    if ($paypal_sandbox) {
    $environment = new SandboxEnvironment($clientId, $clientSecret);
    } else {
    $environment = new ProductionEnvironment($clientId, $clientSecret);
    }
    $client = new PayPalHttpClient($environment);
    $request = new OrdersCreateRequest();
    $request->prefer('return=representation');

    $request->body = [
    "intent" => "CAPTURE",
    "purchase_units" => [[
    "reference_id" => rand(000000,999999),
    "amount" => [
    "value" => number_format($amount, 2, '.', ''),
    "currency_code" => $currency,
    ]
    ]],
    "application_context" => [
    "cancel_url" => base_url('payment/paypal/cancel'),
    "return_url" => base_url('payment/paypal/complete')
    ]
    ];

    try {
    // Call API with your client and get a response for your call
    $response = $client->execute($request);
    // If call returns body in response, you can get the deserialized version from the result attribute of the response
    return redirect()->to($response->result->links[1]->href);
    } catch (HttpException $ex) {
    echo $ex->statusCode;
    print_r($ex->getMessage());
    }
    }

    public function cancel() {
    $token = $this->request->getGet('token');
    echo 'Payment has been failed';
    }

    public function complete() {
    $order_id = $this->request->getGet('order_id');
    $token = $this->request->getGet('token');
    $clientId = 'ARF2P04R0r_x_fQ-fATDz7AqlyFY1Vpqk9Gu2uXCzk9R7hCy1eMxymIYYQQ5zR-0QzKPpFGhTH6vDVMG';
    $clientSecret = 'EB-Gy0qyz1JbQJoAM1QNmX_ld0G8HNA8BIkkVq2fNCI0Ir92UsRO3TlSJ5Wmne9aM-cJqGopgIHK0Ec1';
    $paypal_sandbox = true;
    if ($paypal_sandbox) {
    $environment = new SandboxEnvironment($clientId, $clientSecret);
    } else {
    $environment = new ProductionEnvironment($clientId, $clientSecret);
    }
    $client = new PayPalHttpClient($environment);
    $request = new OrdersCaptureRequest($token);
    $request->prefer('return=representation');

    try {
    // Call API with your client and get a response for your call
    $response = $client->execute($request);
    // If call returns body in response, you can get the deserialized version from the result attribute of the response
    print_r($response);
    echo 'Paid successfully';
    } catch (HttpException $ex) {
    // echo $ex->statusCode;
    print_r($ex->getMessage());
    }
    }
    }

     

    Define Routes

    Add routes for the PayPal controller in app/Config/Routes.php:

    $routes->get('/', 'Home::index');

    $routes->group('payment', function($routes) {
    $routes->group('paypal', function($routes) {
    $routes->get('/', 'payment\Paypal::index');
    $routes->get('create', 'payment\Paypal::create');
    $routes->post('create', 'payment\Paypal::create');
    $routes->get('cancel', 'payment\Paypal::cancel');
    $routes->get('complete', 'payment\Paypal::complete');
    });
    });

     

    Create a View for Payment

    Create a simple view app/Views/home.php:

    <!DOCTYPE html>
    <html lang="en">

    <head>
    <title><?php echo $content_title; ?></title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css">
    <script src="https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.slim.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js"></script>
    </head>

    <body>

    <div class="container mt-5">
    <div class="jumbotron text-center">
    <h1>Pay with <img src="<?php echo base_url('images/paypal.png'); ?>" class="img img-fluid" width="150px"> using CodeIgniter 4</h1>
    <p>By infovistar.in</p>
    </div>
    <div class="row">
    <div class="col-sm-3">
    </div>
    <div class="col-sm-6">
    <form method="get" action="<?php echo base_url('payment/paypal/create'); ?>" autocomplete="off">
    <div class="form-group">
    <label>Amount</label>
    <input type="number" name="amount" min="1" value="1" class="form-control">
    </div>
    <div class="form-group">
    <label>Currency</label>
    <input type="text" name="currency" value="USD" class="form-control" readonly>
    </div>
    <div class="form-group">
    <button type="submit" class="btn btn-primary">Pay</button>
    </div>
    </form>
    </div>
    <div class="col-sm-3">
    </div>
    </div>
    </div>
    </body>

    </html>

     

    Test the Integration

    Run your CodeIgniter application:

    php spark serve

     

    Navigate to http://localhost:8080 and click the “Pay Now” button to start the PayPal payment process.

     

    Pay-with-Paypal-using-CodeIgniter-4

    This simple tutorial demonstrates how to integrate PayPal payments into a CodeIgniter 4 application. You can further enhance the example by adding error handling, logging, and other necessary features for a production environment.