laravel-multipayment maintained by fadhila36
Laravel Multipayment Package
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
PaymentPaidyang fleksibel.
Instalasi
- Install via composer:
composer require fadhila36/laravel-multipayment - 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