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.
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.phpdiapp/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.phpdiapp/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
transaksiuntuk 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.phpdiapp/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.phpuntuk 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?