Modern, Lightweight, & Secure. Sistem checkout produk digital single-page yang terintegrasi penuh dengan Payment Gateway Flowix. Dilengkapi dengan antarmuka Glassmorphism, dukungan Dark Mode, dan sistem Real-time Polling untuk validasi pembayaran QRIS otomatis.
- Arsitektur & Logika Sistem
- Fitur Utama
- Teknologi
- Struktur Proyek
- Instalasi & Konfigurasi
- API Reference (Internal Proxy)
- Keamanan & Best Practices
- Credits
Sistem ini menggunakan pola Backend-for-Frontend (BFF) sederhana melalui api.php untuk mengamankan kredensial API.
- Inisiasi (Client): User menekan "Bayar Sekarang". Frontend memanggil
POST /api.php?action=create_payment. - Secure Proxy (Server):
api.phpmenyuntikkanAPI_KEY&MERCHANT_IDdari server-side (tidak terekspos di browser) dan meneruskan request ke Gateway Flowix. - Respon QR: Server menerima string QR Code, Frontend merender QR menggunakan
qrcode.js. - Polling Strategy: Frontend melakukan short-polling setiap 4 detik ke
api.php?action=check_statusuntuk memantau status pembayaran secara real-time tanpa membebani server secara berlebihan. - Penyelesaian: Jika status
paid, tombol download dibuka. Sistem menyimpan state dilocalStorageuntuk mencegah data hilang saat refresh browser.
- Glassmorphism Premium Design: Menggunakan transparansi dan blur effect yang modern.
- Adaptive Dark Mode: Otomatis mendeteksi preferensi sistem pengguna atau toggle manual.
- Responsive Mobile-First: Tampilan optimal di semua perangkat.
- Interactive Feedback: Toast notifications, loading states, dan animasi transisi yang halus.
- Secure API Proxying: Kunci API (Sensitive Data) tetap aman di sisi server (
config.php), tidak pernah dikirim ke frontend. - Smart Polling & Caching: Mengurangi beban request dengan interval polling yang optimal (4 detik) dan caching state lokal.
- Auto-Expiry Handling: Menangani sesi pembayaran yang kadaluarsa secara otomatis di UI.
- QRIS Generation: Render QR Code di sisi klien untuk performa yang lebih cepat.
- Language: PHP 8.x (Native, tanpa framework berat)
- Styling: Tailwind CSS (via CDN untuk kemudahan deployment)
- JS Libraries:
qrcode.js(Generasi QR Code)FontAwesome 6(Ikonografi)
- HTTP Client: cURL (Standard PHP Library)
/project-root
β
βββ api.php # Core Logic: Proxy request ke Payment Gateway & validasi
βββ config.php # Central Config: API Keys, Merchant ID, & Info Produk
βββ download.php # Secure Endpoint: Proteksi akses file produk
βββ index.php # Frontend: UI/UX, State Management, & Polling Logic
βββ wa-bot-topup.jpg # Aset gambar produk
βββ README.md # Dokumentasi Proyek
Pastikan server Anda memenuhi syarat berikut:
- PHP >= 7.4 (Disarankan PHP 8.1+)
- Ekstensi PHP:
cURL,json
Clone repositori atau ekstrak file ke web server (htdocs/www).
git clone https://github.com/dani-techno/script-market.git
cd script-market
Buka file config.php dan sesuaikan dengan data dari dashboard Flowix/Atlantic Anda:
// config.php
return [
'api' => [
'base_url' => 'https://flowix.web.id, //
'api_key' => 'sk-xxxx-xxxx', // API Key Rahasia Anda
'merchant_id' => 'MID-DANxxxx', //
],
'product' => [
'title' => 'Nama Produk Digital',
'price' => 50000,
// ...
],
];Jika tidak menggunakan XAMPP/Laragon, Anda bisa menggunakan built-in server PHP:
php -S localhost:8000
Buka http://localhost:8000 di browser Anda.
Frontend berinteraksi dengan api.php, bukan langsung ke Gateway. Berikut spesifikasi internal endpoint:
| Action | Method | Parameter | Deskripsi |
|---|---|---|---|
create_payment |
POST |
- |
Membuat transaksi baru & mendapatkan string QR. |
check_status |
POST |
ref_id |
Mengecek status transaksi ke Gateway. |
cancel_payment |
POST |
ref_id |
Membatalkan transaksi yang sedang berjalan. |
Sebagai Senior Engineer, berikut adalah catatan penting untuk deployment ke Production:
- SSL/TLS Wajib: Jangan pernah menggunakan HTTP biasa di production. Enkripsi lalu lintas data sangat krusial untuk transaksi pembayaran.
- Database Implementation:
- Kode saat ini (
download.php) menggunakan logika bypass sederhana untuk demo. - Rekomendasi: Simpan status transaksi sukses di Database (MySQL/PostgreSQL) dan verifikasi
ref_iddi database sebelum mengizinkan download file.
- Hidden Files: Pastikan file
config.phptidak bisa diakses langsung via browser (configure.htaccessatau nginx conf). - Error Handling: Di production, matikan
display_errorsdiphp.iniuntuk mencegah path disclosure.
Project ini dikembangkan dengan standar tinggi untuk kebersihan kode dan performa.
- Core Developer: Dani Joest (Full-Stack Software Engineer)
- Integrasi Payment: Flowix Technology
- Kontak Support:
- WhatsApp: +62 823-2066-7363
- Email: dani.joest.id@gmail.com
"Code is like humor. When you have to explain it, itβs bad." β Clean Code
Build with β€οΈ by Mr. Dani Joest, S.M.T., C.P.M.