Belajar Mengenal Penggunaan Webhook Pada Projek Laravel 11

Webhook adalah mekanisme yang memungkinkan aplikasi untuk secara otomatis mengirimkan data ke sistem lain saat suatu peristiwa terjadi. Dalam pengembangan web modern, webhook sering digunakan untuk menangani notifikasi pembayaran, pembaruan data real-time, dan berbagai otomatisasi lainnya.
Pada Laravel 11, kita dapat dengan mudah mengintegrasikan webhook untuk menerima dan menangani event dari layanan pihak ketiga seperti Midtrans, Stripe, GitHub, atau layanan lainnya.
1. Apa Itu Webhook?
Webhook adalah callback HTTP yang dipicu oleh suatu peristiwa di layanan tertentu. Misalnya, jika Anda menggunakan Midtrans untuk pemrosesan pembayaran, webhook dapat digunakan untuk memberi tahu sistem Anda saat pembayaran telah berhasil atau gagal.
2. Membuat Route untuk Webhook di Laravel 11
Untuk menangani webhook, kita harus membuat sebuah endpoint khusus yang akan menerima data dari layanan eksternal. Tambahkan route berikut di routes/api.php:
use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; Route::post('/webhook/payment', function (Request $request) { Log::info('Webhook received:', $request->all()); return response()->json(['message' => 'Webhook received']); });
Kode di atas akan mencatat semua data yang dikirim oleh webhook ke dalam log Laravel.
3. Menangani Request Webhook
Layanan webhook biasanya mengirimkan data dalam format JSON. Kita dapat memproses data yang diterima dan mengambil tindakan yang sesuai:
Route::post('/webhook/payment', function (Request $request) { $data = $request->all(); if ($data['transaction_status'] === 'settlement') { // Lakukan aksi setelah pembayaran berhasil } return response()->json(['message' => 'Webhook processed']); });
4. Mengamankan Webhook
Karena webhook dapat diakses secara publik, kita harus memastikan hanya layanan yang sah yang dapat mengirimkan data. Salah satu caranya adalah dengan memverifikasi signature:
Route::post('/webhook/payment', function (Request $request) { $signatureKey = $request->header('X-Signature-Key'); $expectedSignature = hash_hmac('sha256', $request->getContent(), env('WEBHOOK_SECRET')); if ($signatureKey !== $expectedSignature) { abort(403, 'Unauthorized'); } return response()->json(['message' => 'Verified and processed']); });
5. Menggunakan Event dan Listener untuk Webhook
Agar lebih terstruktur, kita bisa menggunakan event dan listener di Laravel:
- Buat event dengan perintah:
php artisan make:event PaymentReceived
- Edit event di app/Events/PaymentReceived.php:
class PaymentReceived { public $data; public function __construct($data) { $this->data = $data; } }
- Buat listener dengan perintah:
php artisan make:listener ProcessPayment --event=PaymentReceived
- Tambahkan kode untuk menangani event di app/Listeners/ProcessPayment.php:
public function handle(PaymentReceived $event) { Log::info('Processing payment:', $event->data); }
Kesimpulan
Webhook adalah fitur penting dalam integrasi layanan pihak ketiga pada aplikasi Laravel 11. Dengan memanfaatkannya, kita bisa membangun sistem yang lebih otomatis dan responsif. Pastikan untuk mengamankan endpoint webhook agar tidak disalahgunakan oleh pihak yang tidak berwenang.
🔥 Sudah pernah menggunakan webhook di Laravel?
Learn More

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, t...

Belajar Mengenal Class Request Pada Framework Laravel 11
Dalam framework Laravel, Illuminate\Http\Request adalah kelas yang digunakan untuk menangani HTTP request yang masuk ke aplikasi. Class ini memungkink...

Belajar Mengenal Middleware Pada Framework Laravel 11
Middleware adalah salah satu komponen penting dalam Laravel yang berfungsi sebagai filter untuk HTTP request yang masuk ke dalam aplikasi. Dengan midd...
Content Editor
S Fauzi
Writes for SpeechlessMind with a focus on UI/UX and web technologies. Enjoys exploring design trends and sharing insights about web development.