Tutorial Integrasi Payment Midtrans Pada Projek Laravel 11

Panduan praktis untuk menambahkan fitur payment gateway Midtrans ke dalam projek Laravel 11 dengan mudah dan cepat.
Midtrans adalah salah satu penyedia layanan payment gateway terpopuler di Indonesia yang mendukung berbagai metode pembayaran, seperti kartu kredit, transfer bank, e-wallet, dan lainnya. Pada tutorial ini, kita akan membahas bagaimana cara mengintegrasikan Midtrans ke dalam proyek Laravel 11 secara lengkap.
1. Persiapan Awal
Sebelum memulai integrasi, pastikan Anda memiliki akun Midtrans. Jika belum, silakan daftar di Midtrans.
Langkah-langkah awal:
Buat akun Midtrans dan login ke dashboard.
Buat proyek baru di dashboard Midtrans.
Dapatkan API Key, baik untuk environment sandbox maupun production.
Siapkan Laravel 11, jika belum, instal dengan perintah:
composer create-project laravel/laravel midtrans-laravel112. Instalasi Midtrans SDK di Laravel
Midtrans menyediakan SDK PHP untuk mempermudah integrasi. Instal paket ini melalui Composer:
composer require midtrans/midtrans-phpSetelah berhasil diinstal, buat konfigurasi Midtrans dalam file .env:
MIDTRANS_SERVER_KEY=your_server_key
MIDTRANS_CLIENT_KEY=your_client_key
MIDTRANS_IS_PRODUCTION=falseTambahkan konfigurasi ini ke dalam config/services.php:
return [
'midtrans' => [
'server_key' => env('MIDTRANS_SERVER_KEY'),
'client_key' => env('MIDTRANS_CLIENT_KEY'),
'is_production' => env('MIDTRANS_IS_PRODUCTION', false),
],
];3. Membuat Controller untuk Midtrans
Buat controller baru untuk menangani transaksi pembayaran:
php artisan make:controller MidtransControllerLalu tambahkan kode berikut ke dalam MidtransController.php:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Midtrans\Snap;
use Midtrans\Config;
class MidtransController extends Controller
{
public function __construct()
{
Config::$serverKey = config('services.midtrans.server_key');
Config::$isProduction = config('services.midtrans.is_production');
Config::$isSanitized = true;
Config::$is3ds = true;
}
public function createTransaction(Request $request)
{
$params = [
'transaction_details' => [
'order_id' => uniqid(),
'gross_amount' => 150000,
],
'customer_details' => [
'first_name' => 'John',
'last_name' => 'Doe',
'email' => 'johndoe@example.com',
'phone' => '08123456789',
],
];
$snapToken = Snap::getSnapToken($params);
return response()->json(['snap_token' => $snapToken]);
}
}4. Membuat Route untuk Payment
Tambahkan route berikut di routes/web.php:
use App\Http\Controllers\MidtransController;
Route::get('/payment', [MidtransController::class, 'createTransaction']);5. Membuat Halaman Checkout
Buat file resources/views/payment.blade.php dan tambahkan kode berikut:
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Checkout</title>
<script src="https://app.sandbox.midtrans.com/snap/snap.js" data-client-key="{{ config('services.midtrans.client_key') }}"></script>
</head>
<body>
<button id="pay-button">Bayar Sekarang</button>
<script>
document.getElementById('pay-button').addEventListener('click', function () {
fetch('/payment')
.then(response => response.json())
.then(data => {
snap.pay(data.snap_token);
});
});
</script>
</body>
</html>6. Menjalankan dan Menguji Payment Gateway
Jalankan server Laravel:
php artisan serveKemudian buka browser dan akses http://127.0.0.1:8000/payment. Coba lakukan pembayaran menggunakan akun sandbox Midtrans.
7. Kesimpulan
Integrasi Midtrans pada Laravel 11 cukup mudah dengan bantuan SDK resmi. Dengan langkah-langkah di atas, Anda bisa menambahkan fitur pembayaran ke dalam aplikasi Laravel secara cepat dan aman.
Semoga tutorial ini bermanfaat! 🚀