Integrasi Pembayaran untuk Website E-Commerce dengan CodeIgniter 4

Integrasi pembayaran sangat penting dalam website e-commerce. Artikel ini membahas langkah-langkah menghubungkan sistem pembayaran menggunakan CodeIgniter 4 dengan gateway pembayaran seperti Midtrans dan PayPal.

Integrasi Pembayaran untuk Website E-Commerce dengan CodeIgniter 4

Setelah membangun frontend website e-commerce, langkah berikutnya adalah mengintegrasikan sistem pembayaran agar pelanggan dapat melakukan transaksi secara aman dan efisien. Berikut adalah cara mengintegrasikan gateway pembayaran menggunakan CodeIgniter 4.

1. Memilih Payment Gateway

  • Beberapa pilihan populer untuk e-commerce:

    • Midtrans (rekomendasi untuk Indonesia)

    • PayPal (internasional)

    • Xendit (untuk berbagai metode pembayaran)

    • Stripe (kartu kredit global)

  • Pastikan Anda sudah memiliki akun dan API key dari penyedia pembayaran yang dipilih.

2. Instalasi dan Konfigurasi Midtrans

  • Tambahkan Midtrans SDK ke proyek Anda:

    composer require midtrans/midtrans-php
  • Konfigurasi Midtrans di app/Config/Midtrans.php:

    namespace App\Config;
    class Midtrans {
        public static $serverKey = 'your-server-key';
        public static $isProduction = false;
    }

3. Membuat Controller Pembayaran

  • Buat file Payment.php di app/Controllers/:

    namespace App\Controllers;
    use Midtrans\Snap;
    use Midtrans\Config;
    
    class Payment extends BaseController {
        public function checkout() {
            Config::$serverKey = \App\Config\Midtrans::$serverKey;
            Config::$isProduction = \App\Config\Midtrans::$isProduction;
            
            $params = [
                'transaction_details' => [
                    'order_id' => rand(),
                    'gross_amount' => 100000,
                ],
                'customer_details' => [
                    'first_name' => 'Budi',
                    'email' => 'budi@example.com',
                ]
            ];
            
            $snapToken = Snap::getSnapToken($params);
            return view('checkout', ['snapToken' => $snapToken]);
        }
    }

4. Membuat Halaman Checkout

  • Buat file checkout.php di app/Views/:

    <script src="https://app.sandbox.midtrans.com/snap/snap.js" data-client-key="your-client-key"></script>
    <button id="pay-button">Bayar Sekarang</button>
    <script>
        document.getElementById('pay-button').onclick = function() {
            snap.pay('<?= $snapToken ?>');
        };
    </script>

5. Menyimpan Data Transaksi

  • Buat tabel transaksi untuk mencatat pembayaran:

    CREATE TABLE transaksi (
        id INT AUTO_INCREMENT PRIMARY KEY,
        user_id INT,
        order_id VARCHAR(50),
        total DECIMAL(10,2),
        status ENUM('pending', 'success', 'failed') DEFAULT 'pending',
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );
  • Tambahkan model TransaksiModel.php di app/Models/ untuk menyimpan transaksi:

    namespace App\Models;
    use CodeIgniter\Model;
    
    class TransaksiModel extends Model {
        protected $table = 'transaksi';
        protected $allowedFields = ['user_id', 'order_id', 'total', 'status'];
    }

6. Menangani Notifikasi Pembayaran

  • Tambahkan fungsi di Payment.php untuk menangani notifikasi dari Midtrans:

    public function notification() {
        $json = file_get_contents("php://input");
        $data = json_decode($json, true);
        
        $transaksiModel = new \App\Models\TransaksiModel();
        $transaksiModel->where('order_id', $data['order_id'])
                       ->set(['status' => $data['transaction_status']])
                       ->update();
        return "OK";
    }
  • Tambahkan route di app/Config/Routes.php:

    $routes->post('payment/notification', 'Payment::notification');

Dengan langkah-langkah di atas, sistem pembayaran telah berhasil diintegrasikan dengan Midtrans dalam website e-commerce berbasis CodeIgniter 4. Anda dapat mengembangkan lebih lanjut dengan metode pembayaran lain sesuai kebutuhan bisnis Anda.

Apa Reaksi Anda?

like

dislike

love

funny

angry

sad

wow