Belajar Mengenal Penggunaan Webhook Pada Projek Laravel 11

SpeechlessMind 22,362 views •

February 19, 2025 • Backend Development

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:

  1. Buat event dengan perintah:
  2. php artisan make:event PaymentReceived
  3. Edit event di app/Events/PaymentReceived.php:
  4. class PaymentReceived {
        public $data;
        public function __construct($data) {
            $this->data = $data;
        }
    }
  5. Buat listener dengan perintah:
  6. php artisan make:listener ProcessPayment --event=PaymentReceived
  7. Tambahkan kode untuk menangani event di app/Listeners/ProcessPayment.php:
  8. 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




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.