fadhila36 / laravel-multipayment
Multi-payment gateway integration for Laravel (Midtrans, Xendit, Duitku, AyoConnect, Doku) with Fonnte WhatsApp integration.
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.5
- illuminate/support: ^10.0|^11.0|^12.0
Requires (Dev)
- mockery/mockery: ^1.5
- orchestra/testbench: ^8.0|^9.0
- phpunit/phpunit: ^10.0
README
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