Tutorial Integrasi Payment Midtrans Pada Projek Laravel 11

SpeechlessMind 42,004 views •

February 19, 2025 • Backend Development

Tutorial Integrasi Payment Midtrans Pada Projek Laravel 11

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:

  1. Buat akun Midtrans dan login ke dashboard.
  2. Buat proyek baru di dashboard Midtrans.
  3. Dapatkan API Key, baik untuk environment sandbox maupun production.
  4. Siapkan Laravel 11, jika belum, instal dengan perintah:
  5. composer create-project laravel/laravel midtrans-laravel11

2. Instalasi Midtrans SDK di Laravel

Midtrans menyediakan SDK PHP untuk mempermudah integrasi. Instal paket ini melalui Composer:

composer require midtrans/midtrans-php

Setelah berhasil diinstal, buat konfigurasi Midtrans dalam file .env:

MIDTRANS_SERVER_KEY=your_server_key
MIDTRANS_CLIENT_KEY=your_client_key
MIDTRANS_IS_PRODUCTION=false

Tambahkan 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 MidtransController

Lalu 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 serve

Kemudian 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! 🚀

Learn More




Content Editor

S Fauzi

S Fauzi

Writes for SpeechlessMind with a focus on UI/UX and web technologies. Enjoys exploring design trends and sharing insights about web development.