55 lines
4.1 KiB
Plaintext
55 lines
4.1 KiB
Plaintext
Alur Penggunaan Website
|
|
|
|
Melihat Menu dan Memesan Makanan:
|
|
Pengguna akan melihat daftar makanan dan minuman yang tersedia saat pertama kali mengakses website.
|
|
Mereka dapat memfilter menu berdasarkan kategori (misalnya, makanan, minuman).
|
|
Pengguna menambahkan item yang diinginkan ke keranjang belanja mereka. Jumlah item di keranjang akan diperbarui secara real-time.
|
|
|
|
Review Keranjang (Tahap 1 - Sederhana):
|
|
Pengguna dapat membuka tampilan keranjang (biasanya sidebar atau modal).
|
|
Di sini, mereka akan melihat ringkasan pesanan mereka: daftar item yang dipilih beserta kuantitas, harga per item, dan total harga keseluruhan.
|
|
Hanya ada satu tombol untuk melanjutkan: "Lanjut Pembayaran".
|
|
|
|
Detail Checkout (Tahap 2 - Modal Baru):
|
|
Setelah mengklik "Lanjut Pembayaran", sebuah modal atau sidebar baru akan muncul.
|
|
Pemilihan Meja:
|
|
Pengguna memilih apakah mereka "Pelanggan Baru" (memilih meja yang tersedia) atau "Sudah Ada Meja" (memilih meja yang sudah terisi).
|
|
Mereka memasukkan "Nama Pemesan". Daftar meja yang tersedia atau terisi akan ditampilkan secara real-time dari Firebase Realtime Database.
|
|
Pemilihan Metode Pembayaran:
|
|
Pengguna memilih metode pembayaran menggunakan radio button yang dikelompokkan:
|
|
Pembayaran Otomatis: Midtrans (disertai logo Midtrans)
|
|
Pembayaran Manual: Tunai (disertai logo tunai) atau QRIS (disertai logo QRIS)
|
|
Input Email (Opsional): Pengguna dapat memasukkan alamat email mereka (defaultnya guest@gmail.com) untuk menerima struk pembelian.
|
|
Konfirmasi Akhir: Satu tombol "Bayar" (atau "Konfirmasi Pesanan") akan memicu proses pembayaran.
|
|
|
|
Proses Pembayaran:
|
|
Pencatatan Pesanan Terpusat (Awal): Terlepas dari metode pembayarannya, pesanan akan dicatat ke dalam satu tabel pesanan utama di database Anda (misalnya, tabel orders) dengan status awal (misalnya, 'pending' atau 'menunggu_konfirmasi'). Detail item pesanan akan disimpan di tabel terkait (misalnya, order_items). Tabel ini berfungsi sebagai bukti pembelian universal.
|
|
|
|
Alur Midtrans:
|
|
Sistem memanggil API Midtrans untuk mendapatkan token Snap.
|
|
Pengguna diarahkan ke halaman pembayaran Midtrans.
|
|
Setelah pembayaran berhasil di Midtrans:
|
|
Midtrans akan mengirimkan notifikasi (melalui callback URL atau Webhook) ke endpoint server Anda.
|
|
Endpoint ini akan memproses notifikasi tersebut dan mengubah status pesanan di tabel orders menjadi 'dibayar' atau 'terkonfirmasi'.
|
|
Pengguna akan melihat konfirmasi pembayaran berhasil (misalnya, melalui modal atau halaman sederhana di browser mereka).
|
|
Pesanan ini segera ditampilkan secara real-time di halaman daftar order dapur.
|
|
|
|
Alur Pembayaran Manual (Tunai/QRIS):
|
|
Status pesanan di tabel orders akan tetap pada status awal (misalnya, 'menunggu_konfirmasi_manual').
|
|
Pengguna akan menerima instruksi untuk melakukan pembayaran di kasir secara manual.
|
|
Konfirmasi oleh Staf: Di sisi staff/kasir, ada antarmuka terpisah di mana staf akan memverifikasi pembayaran manual dan secara manual mengubah status pesanan menjadi 'terkonfirmasi' di sistem.
|
|
Setelah dikonfirmasi oleh staf:
|
|
Status pesanan di tabel orders diperbarui menjadi 'terkonfirmasi'.
|
|
Pesanan ini kemudian ditampilkan secara real-time di halaman daftar order dapur.
|
|
|
|
Pembaruan Status Meja Real-time:
|
|
Setelah pesanan terkonfirmasi (baik oleh Midtrans atau oleh staf untuk pembayaran manual), status meja di Firebase akan diperbarui secara real-time. Meja akan ditandai sebagai aktif/terisi, dan nama pemesan akan dicatat sebagai reserved_by.
|
|
Sistem juga akan menyinkronkan data meja terbaru dari Firebase untuk semua pengguna.
|
|
|
|
Konfirmasi dan Email Struk:
|
|
Pengguna akan menerima notifikasi di layar bahwa pesanan berhasil dikirim/dibayar.
|
|
Jika email dimasukkan, struk pembelian lengkap yang berisi detail makanan, total harga, dan detail meja akan dikirimkan ke email tersebut. Data struk ini akan diambil dari tabel pesanan terpusat.
|
|
|
|
Reset Keranjang dan Status:
|
|
Keranjang belanja akan dikosongkan, dan status formulir akan diatur ulang untuk pesanan berikutnya.
|