← KEMBALI KE BERANDA
Reservasi & Pembayaran Digital
Status: Selesai

Ximinton

Sistem reservasi lapangan badminton dengan verifikasi pembayaran otomatis

01 / MASALAH

Ximinton menyatukan pemilihan jadwal, pemesanan lapangan, dan pembayaran dalam satu alur. Sistem ini dikembangkan untuk mengurangi risiko bentrok jadwal dari pencatatan melalui WhatsApp atau buku kasir, serta mengurangi kebutuhan admin untuk memeriksa mutasi rekening bank satu per satu.

02 / IMPLEMENTASI
  • — Sistem pemesanan mandiri 4 lapangan dengan pengecekan ketersediaan slot waktu secara instan melalui REST API internal.
  • — Pencegahan bentrok jadwal (double booking) dengan validasi irisan rentang waktu ketat dan penguncian baris basis data (lockForUpdate).
  • — Penanganan webhook notifikasi Midtrans yang idempoten dengan verifikasi tanda tangan digital SHA-512 agar status lunas hanya diproses dari server resmi Midtrans.
  • — Hak akses 3 peran (User, Admin, dan SuperAdmin) yang dilengkapi konfirmasi ulang kata sandi sebelum menjalankan aksi berisiko tinggi.
  • — Fitur pemblokiran slot berkala untuk pemeliharaan rutin lapangan oleh staf.
  • — Sistem pembatalan mandiri maksimal 3 jam sebelum jadwal tanding dengan pembuatan tiket refund otomatis.
  • — Laporan rekapitulasi keuangan dan pemesanan dalam format PDF, Excel, dan CSV.
03 / ARSITEKTUR SISTEM
Arsitektur Ximinton: Booking Lock & Idempotent Webhook STEP 01 / MODUL Penyewa Lapangan Pilih jadwal interaktif via FullCalendar Data Flow STEP 02 / MODUL Laravel Booking Service Cek irisan waktu & lockForUpdate() database Data Flow STEP 03 / MODUL Midtrans Snap Gateway Checkout pembayaran QRIS / Virtual Account Data Flow STEP 04 / MODUL Idempotent Webhook Handler Verifikasi hash SHA-512 & Update Status Tiket Data Flow STEP 05 / MODUL Tiket & Laporan Otomatis Penerbitan barcode tiket & ekspor PDF/Excel
04 / HASIL TERUKUR
  • — Mengotomatisasi pemesanan dan verifikasi pembayaran melalui webhook Midtrans sehingga admin tidak perlu memeriksa mutasi rekening secara manual.
  • — Mencegah pemesanan ganda pada slot yang sama melalui batasan unik (unique constraint) di database.
05 / TEKNOLOGI
PHP 8.2 / Laravel 12 / MySQL / Midtrans / Bootstrap 5 / FullCalendar / Chart.js