@extends('layouts.app') @section('content')

Dokumentasi Webhook Payment Gateway

Webhook adalah notifikasi otomatis yang dikirim oleh payment gateway ketika status pembayaran berubah. Konfigurasi webhook diperlukan untuk memastikan status pembayaran di aplikasi selalu up-to-date.
Midtrans Webhook
Webhook URL:
Konfigurasi di Midtrans:
  1. Login ke Midtrans Dashboard
  2. Pilih Environment (Sandbox/Production)
  3. Masuk ke menu Settings → Configuration
  4. Isi Payment Notification URL dengan URL webhook di atas
  5. Klik Save
Midtrans menggunakan IP whitelisting, pastikan server dapat diakses dari internet.
Xendit Webhook
Webhook URL:
Konfigurasi di Xendit:
  1. Login ke Xendit Dashboard
  2. Masuk ke menu Settings → Webhooks
  3. Klik + Add webhook endpoint
  4. Isi URL dengan webhook URL di atas
  5. Pilih events yang diperlukan:
    • Virtual Account Paid
    • E-wallet Payment
    • Invoice Paid
    • Credit Card Payment
  6. Klik Create webhook
Xendit menggunakan callback token untuk validasi webhook.
Tripay Webhook
Webhook URL:
Konfigurasi di Tripay:
  1. Login ke Tripay Dashboard
  2. Masuk ke menu API → Settings
  3. Scroll ke bagian Callback URL
  4. Isi URL dengan webhook URL di atas
  5. Klik Save Settings
Tripay menggunakan signature validation untuk keamanan webhook.
Testing Webhook
Cara Test Webhook:
  1. Pastikan semua gateway sudah dikonfigurasi dengan benar
  2. Lakukan test transaksi kecil (minimal amount)
  3. Monitor log aplikasi untuk melihat webhook yang masuk
  4. Verifikasi status pembayaran ter-update otomatis
Troubleshooting:
  • Webhook tidak diterima: Periksa firewall dan pastikan server dapat diakses dari internet
  • Status tidak update: Periksa log error dan validasi signature
  • Duplicate notification: Implementasikan idempotency check
  • SSL Error: Pastikan menggunakan SSL certificate yang valid
Keamanan Webhook
Validasi Signature:
  • Semua webhook harus memvalidasi signature
  • Gunakan secret key yang aman
  • Tolak request dengan signature tidak valid
HTTPS Only:
  • Selalu gunakan HTTPS untuk webhook URL
  • SSL certificate harus valid
  • Jangan gunakan self-signed certificate
Rate Limiting:
  • Implementasikan rate limiting
  • Log semua webhook request
  • Monitor untuk anomali
@endsection @push('scripts') @endpush