DOMPET QRIS - PHP + MYSQL

FITUR
- Registrasi dengan nama toko, nama sesuai KTP, nomor KTP, email, password, WhatsApp, alamat.
- Nomor KTP dienkripsi AES-256-CBC menggunakan kunci acak instalasi; password memakai password_hash.
- Verifikasi email dan reset password menggunakan PHP mail().
- Login, dashboard, edit profil, tambah/edit/hapus gambar QRIS.
- Download gambar QRIS, catatan transaksi manual masuk/keluar.
- Panel admin, verifikasi/nonaktifkan email pengguna, melihat transaksi.
- Installer otomatis membuat database/tabel dan akun admin.

CARA INSTALL
1. Upload dan extract ZIP ke document root/subfolder hosting yang mendukung PHP 8.0+ dan MySQL/MariaDB.
2. Buat database dan user MySQL melalui cPanel. Beri hak akses penuh pada database.
3. Buka https://domain-anda/install.php
4. Isi host, nama database, username, password, URL aplikasi, email admin dan password admin.
5. Setelah berhasil, login melalui login.php.
6. Hapus install.php dari hosting setelah instalasi.
7. Pastikan folder uploads dapat ditulis oleh PHP. Jangan izinkan eksekusi PHP di folder uploads.
8. Aktifkan HTTPS/SSL.

EMAIL
Aplikasi memakai fungsi PHP mail() dari hosting. Agar verifikasi dan reset password terkirim, aktifkan layanan email hosting dan gunakan alamat pengirim pada domain. Jika hosting memerlukan SMTP, integrasikan library SMTP yang sesuai atau sesuaikan mail_app() di app.php.

BATASAN PENTING
- Ini adalah dompet penyimpanan gambar QRIS milik pengguna, BUKAN penerbit QRIS.
- Tidak terhubung ke bank, switching, payment gateway, atau sistem settlement.
- Upload QRIS hanya menyimpan gambar yang diberikan pengguna. Mengubah nama toko di aplikasi TIDAK mengubah nama merchant yang tertanam di QRIS.
- Download QRIS mengunduh file gambar asli; format file tidak dikonversi.
- Riwayat transaksi sepenuhnya dicatat manual oleh pengguna dan tidak membuktikan pembayaran berhasil.
- Jangan menyimpan PIN, OTP, password bank, atau kredensial pembayaran.
- Data KTP adalah data pribadi berisiko tinggi. Batasi akses hosting, gunakan HTTPS, backup terenkripsi, kebijakan retensi, dan hapus data bila tidak lagi diperlukan. AES-CBC di versi ini memberikan enkripsi saat tersimpan, namun untuk produksi disarankan migrasi ke AES-256-GCM dan audit keamanan.
- Aplikasi ini adalah starter project, perlu pengujian dan audit keamanan sebelum dipakai publik.
