# Perbandingan Lengkap Semua Fitur: timo.wipay.id vs timo.wipay.id_api ## ✅ Status: Semua Fitur Sudah Sesuai --- ## 1. User Management (Manajemen Pengguna) ✅ ### 1.1 Registrasi User (`/timo/daftar`) ✅ **Backend Lama:** - Input: `nama`, `username`, `email`, `no_hp`, `password` - Validasi: username & email unik - Password: MD5 hash - Default `biaya_admin`: 2500 (dari config.php: default_biaya_admin) - Response: status 200 jika berhasil **Backend Baru:** - ✅ Input sama dengan backend lama - ✅ Validasi username & email unik - ✅ Password: MD5 hash - ✅ Default `biaya_admin`: 2500 ✅ (sudah diperbaiki) - ✅ Response format sama ### 1.2 Login (`/timo/login`) ✅ **Backend Lama:** - Input: `username`, `password`, `fcm_token` (opsional) - Validasi: MD5 password - Update FCM token jika ada - Response: `user` object + `data_sl` array **Backend Baru:** - ✅ Input sama dengan backend lama - ✅ Validasi MD5 password - ✅ Update FCM token jika ada - ✅ Response format sama: `user` + `data_sl` ### 1.3 Login Token (`/timo/login_token`) ✅ **Backend Lama:** - Input: `username`, `password` (sudah di-hash), `fcm_token` - Validasi: password langsung compare (tidak di-hash lagi) - Response: `user` + `data_sl` **Backend Baru:** - ✅ Input sama dengan backend lama - ✅ Validasi password langsung compare - ✅ Response format sama ### 1.4 Update Akun (`/timo/update_akun`) ✅ **Backend Lama:** - Update: `nama_lengkap`, `email`, `no_hp` - Validasi token - Response: data user terbaru **Backend Baru:** - ✅ Update fields sama - ✅ Validasi token - ✅ Response format sama ### 1.5 Update Password (`/timo/update_password`) ✅ **Backend Lama:** - Validasi password lama (MD5) - Update password baru (MD5) - Response: status sukses/gagal **Backend Baru:** - ✅ Validasi MD5 password lama - ✅ Update MD5 password baru - ✅ Response format sama --- ## 2. Service Line (SL) Management ✅ ### 2.1 Cek SL (`/timo/cek_sl`) ✅ **Backend Lama:** - Input: `token`, `no_sl` - Validasi: SL tidak boleh sudah terdaftar oleh user lain (status 300) - Cek ke API TIMO: `enquiry-dil/{no_sl}` - Response: data pelanggan dari TIMO API **Backend Baru:** - ✅ Input sama - ✅ Validasi status 300 jika sudah terdaftar - ✅ Cek ke API TIMO sama - ✅ Response format sama ### 2.2 Confirm SL (`/timo/confirm_sl`) ✅ **Backend Lama:** - Input: `token`, `no_sl` - Cek apakah sudah terdaftar (status 300 jika ya) - Cek ke API TIMO: `enquiry-dil/{no_sl}` - Simpan ke `daftar_sl` dengan mapping: - `pel_nama` → `nama` - `pel_alamat` → `alamat` - `dkd_kd` → `cabang` - `rek_gol` → `golongan` - Response: data SL yang baru terdaftar **Backend Baru:** - ✅ Input sama - ✅ Validasi status 300 - ✅ Cek ke API TIMO sama - ✅ Mapping field sama - ✅ Response format sama ### 2.3 Hapus SL (`/timo/hapus_sl`) ✅ **Backend Lama:** - Input: `token`, `no_sl` - Validasi: SL harus terdaftar di akun user ini - Delete dari `daftar_sl` - Response: status sukses **Backend Baru:** - ✅ Input sama - ✅ Validasi sama - ✅ Delete dari database - ✅ Response format sama --- ## 3. Tagihan Management ✅ ### 3.1 History Tagihan (`/timo/history/{sl}/{periode}`) ✅ **Backend Lama:** - Input: `sl`, `periode` (dari URL path) - Call TIMO API: `enquiry-his/{sl}/{periode}` - Response: data history tagihan **Backend Baru:** - ✅ Input dari URL path sama - ✅ Call TIMO API sama - ✅ Response format sama ### 3.2 Tagihan Saat Ini (`/timo/tagihan/{sl}`) ✅ **Backend Lama:** - Input: `sl` (dari URL path) - Call TIMO API: `enquiry/{sl}` - Response: data tagihan aktif **Backend Baru:** - ✅ Input dari URL path sama - ✅ Call TIMO API sama - ✅ Response format sama --- ## 4. Payment Flow (Alur Pembayaran) ✅ ### 4.1 Request Pembayaran (`/timo/request_pembayaran`) ✅ **Backend Lama:** - Input: `token`, `no_sl`, `nama_bank`, `no_rek` - Cek pembayaran aktif (`DIBUAT` & belum expired) - Jika expired → update status `EXPIRED` - Buat pembayaran baru: - Call TIMO API: `enquiry/{no_sl}` - Hitung total + biaya admin - Generate kode unik - Expired: +1 hari - Response: data pembayaran **Backend Baru:** - ✅ Input sama + `payment_method` (transfer/qris) - ✅ Cek pembayaran aktif & expired sama - ✅ Buat pembayaran baru sama - ✅ **Fitur Baru:** Support QRIS (< 70rb) - ✅ Response format sama ### 4.2 Cek Pembayaran (`/timo/cek_pembayaran`) ✅ **Backend Lama:** - Input: `token`, `no_sl` - Cari pembayaran: `DIBUAT` atau `MENUNGGU VERIFIKASI` - Response: data pembayaran **Backend Baru:** - ✅ Input sama - ✅ Cari status sama - ✅ Response format sama ### 4.3 Cek Transfer (`/timo/cek_transfer`) ✅ **Backend Lama:** - Input: `token`, `no_sl` - Cari pembayaran: `MENUNGGU VERIFIKASI` - Update: `tanggal_cek_bayar`, `banyak_cek` (increment) - Response: data pembayaran **Backend Baru:** - ✅ Input sama - ✅ Cari status sama - ✅ Update fields sama - ✅ Response format sama ### 4.4 Upload Bukti Transfer (`/timo/upload_bukti_transfer`) ✅ **Backend Lama:** - Input: `token`, `no_sl`, `pembayaran` (no_trx), `photo` (base64) - Upload foto - Update `bukti_transfer` & status `MENUNGGU VERIFIKASI` - Kirim Telegram ke admin - Response: status sukses **Backend Baru:** - ✅ Input sama - ✅ Upload foto sama - ✅ Update status sama - ✅ Kirim Telegram ke admin ✅ - ✅ Response format sama ### 4.5 Batal Pembayaran (`/timo/batal_pembayaran`) ✅ **Backend Lama:** - Input: `token`, `no_rek` (no_trx) - Cari pembayaran: `DIBUAT` - Update status: `DIBATALKAN` - Response: status 200 (pesan tetap default) **Backend Baru:** - ✅ Input sama - ✅ Cari status sama - ✅ Update status sama - ✅ Response format sama (pesan tetap default) ### 4.6 Confirm Pembayaran (`/timo/confirm_pembayaran`) ✅ **Backend Lama:** - Input: `token`, `no_rek` (no_trx) - Cari pembayaran: `MENUNGGU VERIFIKASI` - Update status: `DIBAYAR` - Response: status 200 (pesan tetap default) **Backend Baru:** - ✅ Input sama - ✅ Cari status sama - ✅ Update status sama - ✅ Response format sama ### 4.7 History Bayar (`/timo/history_bayar`) ✅ **Backend Lama:** - Input: `token` - Ambil semua pembayaran: `DIBAYAR` - Response: array history pembayaran **Backend Baru:** - ✅ Input sama - ✅ Filter status sama - ✅ Response format sama ### 4.8 Cek Status QRIS (`/timo/cek_status_qris`) ✅ **FITUR BARU** **Backend Baru:** - Input: `token`, `no_sl` - Cek status QRIS via API (max 3 attempts, 15s interval) - Jika paid → auto approve → kirim WhatsApp - Jika unpaid (setelah 3x) → show upload proof form - Response: status pembayaran --- ## 5. Upload Features ✅ ### 5.1 Upload Catat Meter (`/timo/upload_catat_meter`) ✅ **Backend Lama:** - Input: `token`, `no_sl`, `angka`, `photo` (base64) - Validasi: user baru → cek no_sl tidak digunakan user lain - Validasi: user lama → cek no_sl sesuai dengan data user - Upload foto - Simpan ke `catat_meter` - Kirim ke external API: `upload-catat-meter/{no_sl}` - Response: status sukses **Backend Baru:** - ✅ Input sama - ✅ Validasi sama (user baru/lama) - ✅ Upload foto sama - ✅ Simpan ke database sama - ✅ Kirim ke external API sama (payload: filename, bukan URL) - ✅ Response format sama ### 5.2 Upload Pasang Baru (`/timo/upload_pasang_baru`) ✅ **Backend Lama:** - Input: `token`, `no_sl`, `nama`, `email`, `telepon`, `nik`, `alamat`, `photo` - Upload foto - Simpan ke `pasang_baru` - Kirim ke external API: `push-registrasi` (payload dalam `data` key) - Jika berhasil, dapat `reg_id` (no SL baru) - Auto insert ke `daftar_sl` jika dapat no SL - Response: status sukses **Backend Baru:** - ✅ Input sama - ✅ Upload foto sama - ✅ Simpan ke database sama - ✅ Kirim ke external API sama (payload dalam `data` key) - ✅ Auto insert ke `daftar_sl` jika dapat no SL - ✅ Response format sama ### 5.3 Upload Gangguan (`/timo/upload_gangguan`) ✅ **Backend Lama:** - Input: `token`, `no_sl`, `gangguan` (id jenis), `feedback`, `lokasi`, `photo` (opsional) - Validasi: jenis gangguan wajib foto jika `harus_ada_foto = 'YA'` - Insert ke `gangguan` dengan status `DILAPORKAN` - Upload foto jika diperlukan - Kirim ke external API: `pengaduan/{no_sl}` - Kirim Telegram ke admin gangguan - Response: status sukses **Backend Baru:** - ✅ Input sama - ✅ Validasi wajib foto sama - ✅ Insert status `DILAPORKAN` sama - ✅ Upload foto sama - ✅ Kirim ke external API sama - ✅ Kirim Telegram ke admin gangguan ✅ - ✅ Response format sama ### 5.4 Upload Baca Mandiri (`/timo/upload_baca_mandiri`) ✅ **Backend Lama:** - Input: `token`, `wrute_id`, `stand_baca`, `abnorm_wm`, `abnorm_env`, `note`, `lonkor`, `latkor` - Validasi koordinat (GPS > Geocoding > Default) - Kirim ke external API: `upload-cater/{wrute_id}` (form-urlencoded) - Simpan ke `baca_mandiri_log` - Response: status sukses **Backend Baru:** - ✅ Input sama - ✅ Validasi koordinat sama (GPS > Geocoding > Default) - ✅ Kirim ke external API sama (form-urlencoded) - ✅ Simpan ke database sama - ✅ Response format sama ### 5.5 Upload Bukti Transfer (`/timo/upload_bukti_transfer`) ✅ **Backend Lama:** - Input: `token`, `no_sl`, `pembayaran` (no_trx), `photo` (base64) - Upload foto - Update `bukti_transfer` & status `MENUNGGU VERIFIKASI` - Response: status sukses **Backend Baru:** - ✅ Input sama - ✅ Upload foto sama - ✅ Update status sama - ✅ Response format sama ### 5.6 Upload PP (`/timo/upload_pp`) ✅ **Backend Lama:** - Input: `token`, `photo` (base64) - Upload foto profil - Update `photo` di tabel `pengguna_timo` - Response: status sukses **Backend Baru:** - ✅ Input sama - ✅ Upload foto sama - ✅ Update database sama - ✅ Response format sama ### 5.7 Hapus PP (`/timo/hapus_pp`) ✅ **Backend Lama:** - Input: `token` - Hapus foto profil - Update `photo` = NULL - Response: status sukses **Backend Baru:** - ✅ Input sama - ✅ Hapus foto sama - ✅ Update database sama - ✅ Response format sama --- ## 6. Other Features ✅ ### 6.1 Promo (`/timo/promo`) ✅ **Backend Lama:** - Response: data promo aktif **Backend Baru:** - ✅ Response format sama ### 6.2 Riwayat Pasang (`/timo/riwayat_pasang`) ✅ **Backend Lama:** - Input: `token` - Ambil semua `pasang_baru` user - Response: array riwayat pasang baru **Backend Baru:** - ✅ Input sama - ✅ Filter by token sama - ✅ Response format sama ### 6.3 Jadwal Catat Meter (`/timo/jadwal_catat_meter`) ✅ **Backend Lama:** - Input: `token` - Ambil jadwal catat meter user - Response: array jadwal **Backend Baru:** - ✅ Input sama - ✅ Filter by token sama - ✅ Response format sama ### 6.4 Request Order Baca Mandiri (`/timo/request_order_baca_mandiri`) ✅ **Backend Lama:** - Input: `token`, `no_sl` - Kirim ke external API: `order-cater/{no_sl}` (form-urlencoded) - Response: status sukses **Backend Baru:** - ✅ Input sama - ✅ Kirim ke external API sama (form-urlencoded) - ✅ Response format sama ### 6.5 Reset Password (`/timo/buat_kode`, `/timo/cek_kode`, `/timo/reset_kode`) ✅ **Backend Lama:** - `buat_kode`: Generate kode unik untuk reset password - `cek_kode`: Validasi kode unik - `reset_kode`: Update password dengan kode unik **Backend Baru:** - ✅ Flow sama dengan backend lama - ✅ Response format sama --- ## 7. Fast WIPAY API (External) ✅ ### 7.1 Check Bill (`/fast/check_bill`) ✅ **Backend Lama:** - Auth: API Key (X-Client-ID, X-Client-Secret) - Input: `no_sl` - Get admin user → timo user - Call TIMO API: `enquiry/{no_sl}` - Response: data tagihan **Backend Baru:** - ✅ Auth API Key sama - ✅ Input sama - ✅ Flow sama - ✅ Response format sama ### 7.2 Process Payment (`/fast/process_payment`) ✅ **Backend Lama:** - Auth: API Key - Input: `no_sl`, `amount` - Validasi saldo WIPAY - Cek tagihan via TIMO API - Jika saldo cukup: - Deduct saldo WIPAY - Call TIMO API: `payment/{token}` - Simpan pembayaran: status `DIBAYAR` - Response: data pembayaran **Backend Baru:** - ✅ Auth API Key sama - ✅ Input sama - ✅ Flow sama - ✅ Response format sama ### 7.3 Payment Status (`/fast/payment_status`) ✅ **Backend Lama:** - Auth: API Key - Input: `transaction_id` atau `pembayaran_id` - Cari pembayaran berdasarkan API Key - Response: status pembayaran **Backend Baru:** - ✅ Auth API Key sama - ✅ Input sama - ✅ Filter by API Key sama - ✅ Response format sama ### 7.4 Check WIPAY Saldo (`/fast/check_wipay_saldo`) ✅ **Backend Lama:** - Auth: API Key - Get admin user → timo user → wipay user - Hitung saldo dari mutasi terakhir - Response: saldo WIPAY **Backend Baru:** - ✅ Auth API Key sama - ✅ Flow sama - ✅ Response format sama --- ## 8. Admin API (`/site/*`) ✅ ### 8.1 Verify BRI (`/site/verify_bri`) ✅ **Backend Lama:** - Ambil token BRI - Cari pembayaran BRI: `MENUNGGU VERIFIKASI` & `banyak_cek < 2` - Call BRI API untuk ambil mutasi - Bandingkan jumlah transfer dengan total pembayaran - Jika cocok → auto approve → kirim WhatsApp - Response: HTML message **Backend Baru:** - ✅ Flow sama - ✅ Auto approve sama - ✅ Kirim WhatsApp ✅ (sudah ditambahkan) - ✅ Response HTML format sama ### 8.2 Approve (`/site/approve/{id_trx}`) ✅ **Backend Lama:** - Input: `id_trx` (dari URL path) - Cari pembayaran: `MENUNGGU VERIFIKASI` - Prepare data payment - Call TIMO API: `payment/{token}` - Jika sukses: - Update status: `DIBAYAR` - Set `tanggal_bayar`, `jumlah_bayar` - Kirim WhatsApp ke user - Response: status sukses/gagal **Backend Baru:** - ✅ Input sama - ✅ Flow sama - ✅ Kirim WhatsApp ✅ (sudah ditambahkan) - ✅ Response format sama --- ## 9. API Mandiri (`/api/mandiri/{tanggal}`) ✅ **Backend Lama:** - Input: `tanggal` (dari URL path) - Ambil data `catat_meter` berdasarkan tanggal - Response: data catat meter dengan format khusus (status: 1) **Backend Baru:** - ✅ Input sama - ✅ Filter by tanggal sama - ✅ Response format sama (status: 1) --- ## 📋 Summary ### ✅ Semua Fitur Sudah Sesuai: 1. ✅ **User Management** - Registrasi, Login, Update Akun, Update Password 2. ✅ **SL Management** - Cek SL, Confirm SL, Hapus SL 3. ✅ **Tagihan Management** - History Tagihan, Tagihan Saat Ini 4. ✅ **Payment Flow** - Request, Cek, Upload Bukti, Batal, Confirm, History 5. ✅ **Upload Features** - Catat Meter, Pasang Baru, Gangguan, Baca Mandiri, Bukti Transfer, PP 6. ✅ **Other Features** - Promo, Riwayat Pasang, Jadwal Catat Meter, Reset Password 7. ✅ **Fast WIPAY API** - Check Bill, Process Payment, Payment Status, Check Saldo 8. ✅ **Admin API** - Verify BRI, Approve 9. ✅ **API Mandiri** - Data Catat Meter ### 🆕 Fitur Baru (Tidak Ada di Backend Lama): 1. ✅ **QRIS Payment** - Payment method baru untuk transaksi < 70rb 2. ✅ **QRIS Status Check** - Endpoint untuk cek status QRIS dengan retry mechanism ### 🔔 Notifikasi: 1. ✅ **Telegram** - Kirim ke admin transaksi & gangguan 2. ✅ **WhatsApp** - Kirim ke user setelah pembayaran berhasil (BRI & QRIS) --- ## ✅ Kesimpulan **Semua logika bisnis sudah 100% sesuai dengan backend lama (timo.wipay.id).** Tidak ada perbedaan logika bisnis yang signifikan. Semua endpoint, validasi, flow, dan response format sudah sesuai dengan backend lama.