fadhila36/laravel-multipayment

Multi-payment gateway integration for Laravel (Midtrans, Xendit, Duitku, AyoConnect, Doku) with Fonnte WhatsApp integration.

Maintainers

Package info

github.com/Fadhila36/laravel-multipayment

pkg:composer/fadhila36/laravel-multipayment

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

v1.0.2 2026-01-24 05:53 UTC

This package is auto-updated.

Last update: 2026-02-24 06:08:20 UTC


README

Latest Version on Packagist Tests Total Downloads

Dokumentasi Bahasa Indonesia | English Documentation 🇺🇸

Dokumentasi Bahasa Indonesia 🇮🇩

Package Laravel yang lengkap dan siap produksi untuk integrasi multi-payment gateway (Midtrans, Xendit, Duitku, AyoConnect, Doku) serta notifikasi Fonnte (WhatsApp).

Kompatibilitas: Mendukung penuh Laravel 10, 11, dan 12.x. Optimasi AI: Struktur kode bersih dan modular, sangat mudah dipahami oleh AI Agent seperti Antigravity. Pemula? Baca Panduan Langkah-demi-Langkah (Tutorial) untuk integrasi dalam 5 menit.

Fitur Utama

  • Multi-Gateway: Satu API standar untuk berbagai gateway populer di Indonesia.
  • Kepatuhan Ketat: Signature, Header, dan Parameter 100% mengikuti dokumentasi resmi.
  • Notifikasi Otomatis:
    • WhatsApp: Menggunakan API Fonnte (via Queue).
    • Email: Menggunakan Laravel Mailable (via Queue).
  • Event Driven: Sistem Event PaymentPaid yang fleksibel.

Instalasi

  1. Install via composer:
    composer require fadhila36/laravel-multipayment
  2. Publish konfigurasi:
    php artisan vendor:publish --tag=multipayment-config

Konfigurasi & Environment

Atur file .env Anda.

# Channel Notifikasi (Set false jika ingin mematikan)
MULTIPAYMENT_NOTIFY_WHATSAPP=true
MULTIPAYMENT_NOTIFY_EMAIL=true

# Midtrans
MIDTRANS_SERVER_KEY=kunci-server-anda
MIDTRANS_IS_PRODUCTION=false

# Xendit
XENDIT_API_KEY=api-key-anda
XENDIT_CALLBACK_TOKEN=token-verifikasi-callback

# Fonnte (Untuk WA)
FONNTE_TOKEN=token-fonnte-anda

Panduan Development vs Production

Fitur Development (Lokal) Production (Live)
Mode Gateway Set IS_PRODUCTION=false di .env untuk menggunakan Sandbox/Testing environment. Set IS_PRODUCTION=true. Pastikan menggunakan Production Key dari dashboard gateway.
Queue (Antrian) Gunakan QUEUE_CONNECTION=sync agar notifikasi langsung terkirim saat dev. Gunakan redis atau database. Wajib jalankan worker (lihat bawah).
Worker Tidak wajib. Wajib jalankan php artisan queue:work agar email & WA terkirim di background.
Keamanan - Pastikan XENDIT_CALLBACK_TOKEN dan Signature Key dirahasiakan.

Cara Penggunaan

1. Membuat Pembayaran

Gunakan Facade di Controller Anda. Syntax sama untuk semua gateway.

use Fadhila36\Multipayment\Facades\Multipayment;

public function bayar()
{
    // Driver bisa diganti: 'midtrans', 'xendit', 'duitku', 'doku', 'ayoconnect'
    $payment = Multipayment::driver('midtrans')->createPayment([
        'order_id' => 'INV-' . time(),
        'amount' => 100000,
        'customer' => [
            'name' => 'Budi Santoso',
            'email' => 'budi@example.com',
            'phone' => '08123456789', // Wajib untuk notifikasi WA
        ],
    ]);

    // Redirect user ke halaman pembayaran
    return redirect($payment['payment_url']);
}

2. Menangani Webhook (Update Database)

Package ini sudah menangani validasi keamanan signature secara otomatis. Anda cukup membuat Listener untuk mengupdate database aplikasi Anda.

Langkah 1: Buat Listener php artisan make:listener UpdateStatusPesanan

Langkah 2: Isi Logic Update

use Fadhila36\Multipayment\Events\PaymentPaid;

public function handle(PaymentPaid $event)
{
    // $event->status berisi data standar: orderId, amount, paymentType
    $idOrder = $event->status->orderId;
    
    // Cari di database dan update
    $pesanan = Pesanan::find($idOrder);
    $pesanan->update(['status' => 'lunas']);
}

Langkah 3: Daftarkan Event Buka app/Providers/EventServiceProvider.php:

protected $listen = [
    \Fadhila36\Multipayment\Events\PaymentPaid::class => [
        \App\Listeners\UpdateStatusPesanan::class,
    ],
];

Pengujian (Testing)

Jalankan perintah ini untuk memastikan semua integrasi berjalan lancar:

vendor/bin/phpunit

Referensi Resmi

License: MIT