Dashboard
Ringkasan aktivitas lisensi KPBB ERP · BCA 7750538805 a.n. Agus Darasana
Menunggu Konfirmasi
0
Total Lunas
0
Total Pendapatan
Rp 0
Lisensi Aktif
0
Total Pelanggan
0
⏳ Menunggu Konfirmasi Pembayaran
Tidak ada pembayaran menunggu
🕐 Aktivitas Terbaru
Belum ada aktivitas
Konfirmasi Pembayaran
Paste pesan WA user → sistem otomatis deteksi Order ID → konfirmasi → lisensi aktif
📲
Tempel Pesan WhatsApp dari User
Order ID akan terdeteksi otomatis
🔍 Cek & Konfirmasi Order
📲 Alur Kerja Admin (Otomatis)
1
User pilih paket di APK → dapat Order ID + info transfer BCA (tersimpan ke Firebase otomatis)
2
User transfer ke BCA 7750538805 a.n. Agus Darasana
3
User kirim pesan WA ke +62 812-2222-4549 — Paste pesan WA di kotak kuning atas → Order ID terdeteksi otomatis
4
Cek mutasi BCA → cocokkan nominal. Klik Cek Order Ini
5
Klik Konfirmasi Lunas → sistem auto-generate kode lisensi KPBB-XXXX-XXXX-XXXX-XXXX
6
Klik Buka WhatsApp → pesan sudah otomatis terisi → kirim ke user ✅
Pelanggan
Daftar seluruh pengguna yang terdaftar
👥 Semua Pelanggan
Belum ada pelanggan
Riwayat Transaksi
Semua order pembayaran langganan
Belum ada transaksi
Aktivasi Manual
Generate atau aktifkan lisensi secara manual untuk pelanggan tertentu
🔑 Generate Kode Lisensi Manual
📋 Riwayat Aktivasi Manual
Belum ada aktivasi manual
⚙️ Pengaturan Cloudflare
Hubungkan admin panel ke Cloudflare Worker KV untuk sinkronisasi real-time dengan APK
🔥 Firebase Config
Isi dengan nilai dari Firebase Console → Project Settings → Your apps → SDK setup.
Perubahan disimpan di localStorage dan langsung aktif.
📡 Status Koneksi
Belum terhubung
Database Path:
Orders:
Customers:
kpbb_db/Orders:
kpbb_db/orders/{orderId}Customers:
kpbb_db/customers/{custId}
📱 Panduan Integrasi APK
Di APK (Android), saat user pesan:
val db = Firebase.database.reference
val orderId = "KPBB-" + System.currentTimeMillis()
db.child("kpbb_db/orders/$orderId").setValue(mapOf(
"id" to orderId,
"customerId" to customerId,
"plan" to "monthly", // weekly/monthly/yearly
"amount" to 199000,
"status" to "pending",
"licenseKey" to null,
"createdAt" to ISO8601_NOW
))
Baca license key (polling/listener):
db.child("kpbb_db/orders/$orderId/licenseKey")
.addValueEventListener(object : ValueEventListener {
override fun onDataChange(snap: DataSnapshot) {
val key = snap.getValue(String::class.java)
if (key != null) activateLicense(key)
}
override fun onCancelled(e: DatabaseError) {}
})
Validasi lisensi yang diinput user:
// Cari customer dengan licenseKey ini
db.child("kpbb_db/customers")
.orderByChild("licenseKey")
.equalTo(inputKey)
.get().addOnSuccessListener { snap ->
val cust = snap.children.firstOrNull()
val status = cust?.child("status")?.value
if (status == "active") { /* aktifkan */ }
}