Belajar PHP sambil membangun website top up digital.
Panduan praktik bertahap dari dasar PHP, database dan keamanan, sampai website bisa memakai domain sendiri dan berjalan di hosting. Ikuti urutan, buat proyek kecil, lalu uji setiap fitur.
ποΈ Estimasi 16 mingguβ±οΈ 1β2 jam per hariπ― Proyek: website top up digital
Hasil akhir yang dituju
Sebuah aplikasi web yang dapat digunakan pelanggan untuk mencari layanan, memilih nominal, mengirim pesanan, membayar, dan memeriksa status transaksi. Admin dapat mengelola katalog, transaksi, saldo vendor, dan mutasi melalui panel yang hanya bisa diakses setelah login.
Progres belajar
Checklist disimpan di browser ini, bukan di server.
0 dari 0 tugas selesai0%
Struktur folder lengkap di cPanel
Pelajari peta folder ini sebelum mulai roadmap. Domain biasanya mengarah ke public_html/; hanya file publik yang boleh diakses browser ada di situ. Source internal, log, konfigurasi, dan dependency diletakkan di folder privat yang sejajar dengannya.
Aturan aman: jangan menaruh .env, backup database, file SQL, log, atau source internal di public_html/. Jika cPanel mengatur Document Root domain ke folder lain, sesuaikan struktur publik dengan pengaturan domain tersebut.
Roadmap 16 minggu
Centang tugas setelah benar-benar mencoba dan memahami hasilnya.
01
Persiapan dan dasar web
Pahami apa yang terjadi saat browser meminta halaman ke server.
Minggu 1
Pelajari dan praktikkan
Pasang XAMPP, jalankan Apache dan MySQL, lalu buat halaman uji di htdocs.
Kenali HTML semantik, CSS dasar, formulir HTML, dan cara browser mengirim request HTTP.
Pelajari PHP tags, variabel, tipe data, operator, string, komentar, serta perbedaan PHP dan JavaScript.
Gunakan VS Code dan terminal; pahami lokasi file dan URL localhost.
Rancang UI mobile-first: teks terbaca, kontras cukup, tombol mudah disentuh, dan navigasi dapat digunakan dengan keyboard.
Hasil minggu ini: satu halaman PHP sederhana berisi nama toko, daftar layanan statis, dan harga dalam Rupiah.
Catat ID transaksi internal dan ID request penyedia pada log agar satu kegagalan bisa ditelusuri; jangan catat secret atau data kartu.
Sebelum menulis kode integrasi, baca dokumentasi resmi API dan catat endpoint, autentikasi, format request/response, error, batas penggunaan, sandbox, dan aturan webhook.
Hasil minggu ini: ringkasan spesifikasi API yang dipahami, integrasi berfungsi di sandbox, status konsisten, dan tidak ada rahasia produksi di kode.
09
Pengujian, Git, dan persiapan produksi
Stabilkan aplikasi dan siapkan prosedur pemulihan.
Minggu 13β14
Pelajari dan praktikkan
Pelajari Git: commit kecil, branch, remote privat, dan cara memulihkan versi sebelumnya.
Tulis pengujian untuk validasi harga/nominal, akses admin, status order, callback, dan perhitungan keuntungan.
Tes tampilan ponsel/desktop, form kosong, input tidak valid, refresh, dan koneksi lambat.
Gunakan Composer bila memakai library; kunci versi dependency dan dokumentasikan kebutuhan PHP/extensi.
Siapkan environment staging, log, backup database, dan uji prosedur restore.
Jalankan Lighthouse/PageSpeed; periksa gambar berat, aset berlebih, aksesibilitas, query lambat, dan perilaku di ponsel sebelum rilis.
Hasil minggu ini: aplikasi diuji dengan skenario normal dan gagal, serta bisa dipulihkan dari backup.
10
Domain, hosting, dan go-live
Publikasikan dengan konfigurasi produksi yang aman.
Minggu 15β16
Pelajari dan praktikkan
Pilih domain dan hosting yang mendukung versi PHP, MySQL, ekstensi, cron, SSL, dan kebutuhan API aplikasi.
Hubungkan nameserver/DNS domain ke hosting, aktifkan HTTPS, dan pastikan sertifikat SSL terpasang.
Unggah aplikasi melalui Git/fitur deployment/SFTP; arahkan document root ke folder publik bila struktur hosting memungkinkan.
Buat database produksi dan import schema; atur environment production, permission file, dan kredensial secara rahasia.
Konfigurasikan URL callback production, cron jika dibutuhkan, backup otomatis, dan notifikasi error.
Uji checkout end-to-end dengan transaksi kecil yang aman setelah penyedia memberi izin live; siapkan cara menghentikan transaksi jika ada masalah.
Di cPanel, periksa versi PHP, ekstensi PDO MySQL/cURL, batas resource, akses outbound HTTPS, cron, dan lokasi log yang didukung provider.
Uji prosedur deteksi gangguan: cek log aplikasi dan menu Errors cPanel, cocokkan waktu serta ID transaksi, lalu pastikan pengunjung hanya melihat pesan umum.
Hasil akhir: website online di domain sendiri, HTTPS aktif, admin terlindungi, database/backup siap, dan alur transaksi sudah diuji sesuai persetujuan vendor serta payment gateway.
Panduan ringkas: performa dan mencari error
Jangan menebak atau langsung mengubah banyak hal sekaligus. Catat gejala, waktu kejadian, URL/aksi, dan ID order yang relevan; lalu cocokkan dengan log. Jangan pernah mengirim rahasia atau data pelanggan ke log.
Jika aplikasi menampilkan error1) Catat waktu, halaman/aksi, dan ID transaksi (jangan catat password/token). 2) Periksa log aplikasi di topup_private/storage/logs/ dan menu Metrics β Errors cPanel jika tersedia. 3) Cocokkan pesan dan waktu untuk menemukan file/baris atau layanan yang gagal. 4) Perbaiki di staging, ulangi skenario, lalu deploy. Di produksi, matikan tampilan detail error ke pengunjung; tampilkan pesan umum dan ID laporan bila tersedia.Siapkan log yang bisa ditelusuriSetiap log penting sebaiknya memuat waktu, level (info/warning/error), nama komponen, dan ID request/order. Pastikan PHP bisa menulis ke folder log privat, file log tidak dapat diakses melalui URL, aksesnya terbatas, dan ukuran log tidak tumbuh tanpa batas. Uji dengan error terkendali di staging; jangan sengaja membuat error di produksi.Jaga halaman tetap ringanKompres dan ubah ukuran gambar sebelum upload; muat gambar di bawah layar secara lazy bila sesuai; minimalkan CSS/JavaScript dan dependency; gunakan pagination untuk daftar panjang; ambil kolom database seperlunya; tambahkan index setelah melihat pola query. Ukur dulu dengan Lighthouse/PageSpeed sebelum melakukan optimasi.Jaga UI tetap enak digunakanGunakan layout mobile-first, hierarki heading yang konsisten, kontras warna memadai, fokus keyboard yang terlihat, label form, dan pesan validasi yang jelas. Tampilkan status memuat, berhasil, gagal, dan data kosong agar pengguna tahu apa yang sedang terjadi.
Catatan cPanel: nama/lokasi menu log, ekstensi PHP, cron, dan batas resource dapat berbeda menurut provider. Gunakan menu PHP Selector/MultiPHP INI Editor dan Errors/Metrics yang tersedia, atau tanyakan provider. Jangan menampilkan phpinfo() ke publik; hapus halaman diagnostik setelah pemeriksaan.
Penjelasan folder dan urutan pembuatan file
Di cPanel, domain utama biasanya mengarah ke public_html/. Letakkan hanya file yang memang perlu diakses browser di sana. Simpan kode internal, konfigurasi, log, dan dependency di folder privat yang sejajar dengan public_html/, bukan di dalamnya.
/home/USERNAME_CPANEL/
βββ public_html/ # Web root; domain mengarah ke sini
β βββ index.php # Beranda/UI, mulai dibuat minggu 1
β βββ checkout.php # Endpoint checkout
β βββ login.php # Endpoint login
β βββ register.php # Endpoint registrasi
β βββ logout.php # Endpoint logout
β βββ dashboard.php # Halaman pelanggan setelah login
β βββ admin/
β β βββ orders.php # Halaman kelola order
β β βββ reports.php # Laporan admin
β βββ webhooks/
β β βββ payment.php # Callback payment gateway
β βββ assets/
β βββ css/style.css # CSS yang dikirim ke browser
β βββ js/app.js # Interaksi UI; tidak menyimpan rahasia
β βββ images/ # Gambar/logo publik
βββ topup_private/ # Tidak dapat diakses melalui URL
βββ app/
β βββ Controllers/ # Mengatur request/response
β βββ Services/ # Aturan bisnis login/order/pembayaran
β βββ Repositories/ # Query database dengan PDO
β βββ Views/ # Template HTML/PHP
β βββ Data/ # Data contoh saat belajar katalog
β βββ Middleware/ # Cek login dan role
β βββ Integrations/ # Klien API vendor/payment gateway
β βββ Security/ # CSRF dan fungsi keamanan
β βββ Support/ # Logger/helper umum
β βββ Database/connection.php # Membuat koneksi PDO
β βββ bootstrap.php # Setup session, autoload, dan konfigurasi
βββ config/database.php # Membaca konfigurasi database
βββ routes/web.php # Peta URL (opsional saat aplikasi membesar)
βββ database/migrations/ # File SQL untuk perubahan schema
βββ storage/logs/ # Log privat
βββ tests/ # Pengujian aplikasi
βββ scripts/ # Skrip CLI/cron, misalnya backup
βββ .env # Kredensial; jangan commit ke Git
βββ .env.example # Nama variabel tanpa nilai rahasia
βββ .gitignore # Abaikan rahasia, log, dan file lokal
βββ README.md # Cara instalasi, tes, dan deployment
βββ composer.json # Dependency PHP
βββ vendor/ # Library hasil Composer
Untuk minggu pertama di cPanel: buat public_html/index.php, public_html/assets/css/style.css, dan bila perlu public_html/assets/js/app.js. Upload folder assets beserta file UI ke public_html memakai File Manager atau FTP/SFTP. Untuk halaman statis tanpa PHP, gunakan public_html/index.html. Jangan upload .env, log, backup, atau file SQL ke public_html.
Hubungan file publik ke kode privat: endpoint langsung di public_html dapat memuat bootstrap dengan require_once dirname(__DIR__) . '/topup_private/app/bootstrap.php';. Endpoint di public_html/admin/ atau public_html/webhooks/ gunakan require_once dirname(__DIR__, 2) . '/topup_private/app/bootstrap.php';. Pastikan topup_private sejajar dengan public_html di home akun cPanel. Jika document root domain berbeda, sesuaikan dengan halaman Domains di cPanel.
Urutan belajar: pahami dulu, baru buat file
Gunakan urutan ini bersama roadmap di atas. Pelajari konsep dan kerjakan latihan kecil terlebih dahulu; setelah bisa menjelaskan hasilnya, baru buat file minggu tersebut. Daftar nama/lokasi file di bawah tetap sama.
Minggu 1 β sebelum membuat UI pertamaPelajari alur browserβserver, URL dan localhost, struktur HTML semantik, CSS dasar, elemen form, dasar PHP, serta perbedaan tugas PHP di server dan JavaScript di browser. Latihan dulu membuat halaman statis sederhana dan mengubah tampilannya di layar ponsel. Setelah paham, buat file UI minggu 1.Minggu 2 β sebelum membuat data katalogPelajari tipe data, array asosiatif, kondisi, loop, dan foreach. Rancang satu bentuk data produk yang konsistenβmisalnya nama, kategori, nominal, dan hargaβlalu latihan merender beberapa item dari array. Setelah itu buat file data dan view katalog minggu 2.Minggu 3 β sebelum memisahkan komponenPelajari fungsi, parameter/return, include/require, scope variabel, query string untuk filter, dan output escaping dengan htmlspecialchars. Pahami juga hierarki heading serta dasar responsive design. Baru kemudian pisahkan header/footer dan kembangkan katalog minggu 3.Minggu 4 β sebelum menerima checkoutPelajari siklus HTTP request/response, metode GET vs POST, validasi input di server, tipe dan batas input, cara menampilkan pesan error aman, dan prinsip bahwa data browser tidak tepercaya. Latih alur form simulasi dari input sampai ringkasan. Setelah itu buat endpoint dan view checkout.Minggu 5 β sebelum membuat schema databasePelajari konsep tabel/baris/kolom, primary key, foreign key, relasi, tipe kolom, constraint, dan dasar normalisasi. Gambar relasi data users, products, denominations, orders, serta payments di kertas; pelajari juga cara kerja konfigurasi environment dan koneksi PDO. Sesudah rancangan masuk akal, buat migration/schema dan koneksi.Minggu 6 β sebelum menyimpan orderPelajari SELECT/INSERT/UPDATE/JOIN, prepared statements, transaksi database, penanganan exception, dan pagination. Latih query dengan data uji; pastikan harga diambil dari database, bukan nilai kiriman browser. Baru sambungkan repository ke alur checkout dan riwayat.Minggu 7 β sebelum membuat loginPelajari session/cookie dan siklus login, password_hash/password_verify, autentikasi vs otorisasi, role, serta IDOR (akses data pengguna lain melalui ID). Rancang siapa boleh melihat/mengubah tiap jenis data. Baru buat halaman login/register/logout dan pemeriksaan akses.Minggu 8 β sebelum menambah keamanan dan logPelajari SQL injection, XSS dan escaping kontekstual, CSRF, session fixation, rate limiting, HTTPS, serta perbedaan error untuk pengguna dan detail internal. Pelajari level log, informasi yang boleh dicatat, dan cara menghubungkan kejadian dengan request/order tanpa menyimpan rahasia. Setelah itu tambahkan perlindungan dan pencatatan error.Minggu 9 β sebelum mengelola status orderPelajari state machine sederhana dan transisi status yang valid, otorisasi berbasis role, audit trail, pagination/filter, serta transaksi database. Gambar alur status dan tentukan siapa yang boleh mengubahnya sebelum membuat halaman admin dan service status.Minggu 10 β sebelum membuat laporan dan ledgerPelajari debit/kredit atau pencatatan mutasi yang sesuai model bisnis, konsistensi transaksi, agregasi SQL, index, dan audit perubahan. Bedakan nominal pembayaran, biaya vendor, biaya gateway, refund, dan keuntungan. Baru susun laporan serta pencatatan ledger.Minggu 11 β sebelum menghubungi APIPelajari HTTP/HTTPS, JSON, header, autentikasi API, timeout, kode respons, batas percobaan ulang, dan penyimpanan secret di environment. Baca dokumentasi resmi dari awal sebelum menulis kode: temukan base URL dan versi API, metode serta endpoint, autentikasi, parameter wajib/opsional, contoh request dan response, arti status/kode error, rate limit, timeout/retry, sandbox, dan kontak dukungan. Buat catatan alur request-response dengan bahasa sendiri, lalu cocokkan dengan kebutuhan aplikasi dan coba request non-transaksi di sandbox; jangan mengirim transaksi sungguhan saat belajar.Minggu 12 β sebelum menerima webhookPelajari signature/HMAC sesuai dokumentasi penyedia, verifikasi nominal dan referensi, replay, callback berulang, idempotensi, dan penguncian/transaksi database. Gambar skenario sukses, pending, gagal, terlambat, dan duplikat. Baru buat endpoint webhook dan pemrosesnya.Minggu 13 β sebelum menulis testPelajari unit test vs integration test, assertion, fixture/data uji, mock API, serta cara menguji kasus gagal dan izin akses. Tentukan kriteria lulus untuk login, harga, status, dan callback sebelum membuat file test.Minggu 14 β sebelum menyiapkan stagingPelajari environment development/staging/production, dependency Composer dan lock file, Git branch/commit, konfigurasi tanpa rahasia, backup dan restore, serta cara membaca log. Pastikan tes dapat diulang dan data uji tidak memakai data pelanggan sebenarnya.Minggu 15 β sebelum deployment cPanelPelajari document root public_html, DNS, HTTPS/SSL, permission file, versi PHP dan ekstensi yang dibutuhkan, konfigurasi environment, serta cara deploy dan rollback. Cocokkan kebutuhan aplikasi dengan batas cPanel/provider sebelum upload.Minggu 16 β sebelum go-livePelajari checklist rilis, pengujian sandbox vs live, pemantauan log, cron job sesuai batas hosting, backup terjadwal dan latihan restore, rotasi secret, serta prosedur menghentikan transaksi. Lakukan uji end-to-end yang diizinkan penyedia sebelum membuka layanan ke pelanggan.
File yang dibuat bertahap dari minggu 1 sampai 16
Setelah materi pada bagian βUrutan belajarβ dipahami dan latihan kecilnya berhasil, baru buat file minggu terkait. Berikut contoh file untuk setiap minggu; buat bertahap, bukan semuanya sekaligus. Beberapa file akan terus dipakai dan dikembangkan pada minggu berikutnya.
Minggu 1 β halaman UI pertamaBuat public_html/index.php, public_html/assets/css/style.css, dan public_html/assets/js/app.js bila perlu. Untuk halaman statis tanpa PHP, gunakan public_html/index.html.Minggu 2 β data katalog sederhanaBuat topup_private/app/Data/products.php berisi array produk contoh dan topup_private/app/Views/catalog/index.php sebagai template katalog. Mulai tampilkan produk dari data, bukan menyalin kartu HTML berulang-ulang.Minggu 3 β komponen dan filter katalogTambahkan topup_private/app/Views/partials/header.php dan topup_private/app/Views/partials/footer.php untuk bagian yang dipakai ulang. Kembangkan public_html/index.php agar katalog dapat dicari/disaring dan output dinamis di-escape.Minggu 4 β checkout simulasiBuat public_html/checkout.php untuk menerima form; topup_private/app/Services/OrderService.php untuk validasi dan hitung harga dari sumber tepercaya; topup_private/app/Views/orders/checkout.php untuk form/ringkasan dan topup_private/app/Views/errors/validation.php untuk error validasi. Jangan percaya harga dari browser.Minggu 5 β schema dan koneksi databaseBuat topup_private/database/migrations/001_create_core_tables.sql untuk schema; topup_private/config/database.php untuk konfigurasi koneksi; topup_private/app/Database/connection.php untuk PDO; topup_private/app/bootstrap.php untuk persiapan aplikasi; serta topup_private/.env, topup_private/.env.example, dan topup_private/.gitignore. Jangan simpan file SQL di public_html atau commit rahasia.Minggu 6 β simpan dan baca orderTambahkan topup_private/app/Repositories/ProductRepository.php dan topup_private/app/Repositories/OrderRepository.php untuk query database, lalu topup_private/app/Views/orders/history.php untuk riwayat. Ubah checkout di public_html/checkout.php agar menyimpan order dan membaca kembali datanya.Minggu 7 β akun dan aksesBuat public_html/login.php, public_html/register.php, dan public_html/logout.php; topup_private/app/Services/AuthService.php; topup_private/app/Repositories/UserRepository.php; topup_private/app/Middleware/AuthMiddleware.php; serta topup_private/app/Views/auth/login.php dan topup_private/app/Views/auth/register.php. Simpan hash password, bukan password asli.Minggu 8 β keamanan dan error logTambahkan topup_private/app/Security/Csrf.php untuk token CSRF, topup_private/app/Support/Logger.php untuk log aman, dan topup_private/storage/logs/app.log sebagai lokasi privat. Jangan tampilkan detail error atau mencatat password/token ke log.Minggu 9 β status order dan halaman adminBuat public_html/admin/orders.php, topup_private/app/Controllers/AdminOrderController.php, topup_private/app/Services/OrderStatusService.php, dan topup_private/app/Views/admin/orders.php. Tetapkan transisi status order yang diizinkan.Minggu 10 β laporan dan ledgerTambahkan public_html/admin/reports.php, topup_private/app/Repositories/TransactionRepository.php, dan topup_private/database/migrations/002_create_audit_and_ledger_tables.sql untuk mutasi serta audit. Saldo jangan diubah tanpa catatan transaksi.Minggu 11 β klien APIBuat topup_private/app/Integrations/VendorClient.php dan topup_private/app/Integrations/PaymentGatewayClient.php untuk request resmi ke penyedia. Simpan API key di environment; tangani timeout dan kegagalan tanpa mengungkap rahasia.Minggu 12 β callback dan idempotensiBuat public_html/webhooks/payment.php untuk menerima callback; topup_private/app/Services/WebhookService.php untuk verifikasi signature dan pemrosesan idempotent; serta topup_private/database/migrations/003_create_webhook_events.sql untuk mencatat event agar callback berulang tidak menggandakan proses.Minggu 13 β pengujian fitur intiTambahkan topup_private/tests/ untuk login, validasi harga, izin admin, perubahan status, dan webhook. Buat topup_private/composer.json serta topup_private/phpunit.xml jika memilih PHPUnit.Minggu 14 β dokumentasi dan stagingBuat/perbarui topup_private/README.md untuk instalasi, versi PHP, dan tes; lengkapi topup_private/.env.example; siapkan konfigurasi staging terpisah. Uji backup dan pemulihan sebelum rilis.Minggu 15 β persiapan deploymentLengkapi panduan deployment/rollback di topup_private/README.md; pastikan Document Root domain di cPanel adalah public_html/. Buat public_html/.htaccess hanya bila memakai Apache dan memang diperlukan. Simpan konfigurasi produksi di cPanel, bukan repository.Minggu 16 β go-live dan operasionalBila perlu, buat topup_private/scripts/backup-database.php untuk dijalankan aman melalui CLI/cron. Siapkan dan uji HTTPS, konfigurasi environment, DNS, backup, callback, serta prosedur penghentian transaksi.
public_html/ β area publik cPanelFile di sini dapat diminta browser. Domain utama cPanel biasanya mengarah ke folder ini. Simpan hanya entry point PHP dan aset publik; jangan taruh kredensial, file log, backup, atau kode internal.public_html/index.php β UI awalMulai dari halaman utama sederhana. Ketika aplikasi berkembang, file ini dapat memuat bootstrap privat lalu meneruskan alur ke controller. Jangan menaruh semua aturan bisnis di dalamnya.public_html/assets/ β aset tampilanCSS, JavaScript, dan gambar publik. JavaScript di browser tidak boleh menyimpan API key atau menjadi sumber harga/status transaksi yang dipercaya server.topup_private/app/Controllers/ β pengatur requestMenerima input, memanggil layanan yang sesuai, lalu menentukan tampilan atau redirect. Contoh: AuthController menangani request login.topup_private/app/Services/ β aturan bisnisTempat keputusan aplikasi, misalnya validasi order dan perhitungan harga dari data tepercaya. Tidak bertanggung jawab menggambar HTML.topup_private/app/Repositories/ β akses databaseTempat query untuk mencari pengguna, produk, atau pesanan. Gunakan PDO dan prepared statements; jangan menyusun query dari input mentah.topup_private/app/Views/ β template halamanBerisi HTML yang ditampilkan, seperti form login dan daftar produk. Escape nilai dinamis sebelum ditampilkan dan hindari query database di template.topup_private/app/Middleware/ β pemeriksaan aksesMemeriksa syarat sebelum halaman/aksi berjalan, seperti pengguna harus login atau memiliki role admin. Pemeriksaan dilakukan di server.topup_private/app/bootstrap.php β persiapan aplikasiMemuat autoload dan konfigurasi, memulai session, serta menyiapkan hal umum yang diperlukan request. Hindari menaruh proses bisnis khusus di sini.topup_private/config/ β pengaturanPengaturan aplikasi dan pembacaan rahasia dari environment. Folder ini berada di luar public_html/ agar tidak bisa diunduh melalui URL.topup_private/routes/ β peta URLMenghubungkan URL dan metode HTTP ke handler. Untuk proyek pemula, boleh ditambahkan belakangan; beberapa endpoint PHP di public_html/ dapat digunakan lebih dulu.topup_private/database/ β perubahan dan data awalmigrations/ mencatat perubahan tabel. Jalankan file SQL melalui phpMyAdmin/CLI sesuai prosedur; jangan upload SQL agar bisa diunduh dari public_html/.topup_private/storage/logs/ β catatan errorLog membantu diagnosis. Simpan di luar public_html/, batasi akses file, dan jangan mencatat password, token sesi, atau API key.topup_private/tests/ β pengujianTempat menguji login, izin admin, harga pesanan, callback, dan perubahan status. Tidak perlu dipublikasikan ke web.topup_private/.env dan .env.example.env berisi rahasia dan berada di luar public_html/; jangan commit ke Git. .env.example mendokumentasikan nama variabel tanpa nilainya.topup_private/composer.json dan vendor/composer.json mencatat library PHP. Composer membuat vendor/; letakkan keduanya di folder privat dan muat autoload dari bootstrap.
Prinsip cPanel: semua URL publik masuk melalui public_html/. Letakkan source internal, rahasia, log, file SQL, dan backup di topup_private/ pada level akun yang sama. Pastikan pengguna PHP cPanel dapat membaca folder privat dan menulis ke folder log, tetapi pengunjung web tidak bisa membukanya.
Alur inti website top up
Pahami alur ini sebelum menghubungkan transaksi sungguhan. Status harus dilacak di backend; tampilan browser tidak menjadi sumber kebenaran pembayaran.
01 Β· PELANGGANPilih layananKatalog β produk β nominal β ID tujuan.
02 Β· SERVERBuat orderValidasi harga dari database; simpan status awal.
03 Β· PEMBAYARANBayar & verifikasiGateway mengirim callback bertanda tangan untuk diverifikasi.
04 Β· VENDORPenuhi top upKirim order dengan referensi unik; tangani retry tanpa duplikasi.
Domain adalah alamat website; hosting adalah server tempat aplikasi dan database berjalan. Keduanya biasanya dibeli terpisah, lalu dihubungkan melalui DNS.
π§° Sebelum membeli
Pastikan provider mendukung versi PHP yang dipilih, MySQL/MariaDB, PDO MySQL, HTTPS, dan outbound API HTTPS.
Tanyakan batas cron job, proses background, email transaksional, database, backup, dan akses log.
Pastikan provider produk dan payment gateway mengizinkan penggunaan domain serta model bisnis Anda.
π Saat deployment
Hubungkan domain lewat DNS sesuai instruksi hosting dan tunggu propagasi.
Aktifkan SSL/HTTPS sebelum menangani akun, callback, atau proses pembayaran.
Impor database, simpan konfigurasi produksi di tempat yang tidak dapat diakses publik.
Nonaktifkan error detail untuk pengunjung; gunakan log server untuk diagnosis.
Pastikan log aplikasi dapat ditulis, tidak berada di area publik, dan uji alur pelaporan error di staging.
Uji formulir dan halaman utama di ponsel; periksa waktu muat dan ukuran aset sebelum rilis.
π Operasional rutin
Backup file dan database terjadwal; uji restore, bukan sekadar menganggap backup berhasil.
Perbarui PHP, library, dan dependency; pantau kapasitas dan error aplikasi.
Periksa log aplikasi serta Errors/Metrics cPanel secara berkala; siapkan kontak provider jika error berasal dari layanan hosting.
Jaga API key, password database, token webhook, dan akun hosting tetap privat.
Buat SOP refund, transaksi pending, kegagalan vendor, dan eskalasi dukungan.
π Urusan bisnis
Pelajari aturan usaha, pajak, perlindungan data, kebijakan refund, dan hak pelanggan yang berlaku.
Terbitkan kontak dukungan, syarat penggunaan, kebijakan privasi, dan alur pengaduan.
Jangan menerima pembayaran langsung sebelum alur rekonsiliasi dan dukungan berfungsi.
Jangan diluncurkan ke transaksi nyata hanya karena halaman terlihat berfungsi. Perlu autentikasi dan izin admin, HTTPS, validasi server, log privat tanpa rahasia, database dan backup yang sudah diuji restore, integrasi vendor/gateway resmi, validasi callback, penanganan refund, serta tes status transaksi dan prosedur saat terjadi error.