Files
api-wipay/ALL_FEATURES_COMPARISON.md

673 lines
15 KiB
Markdown
Raw Permalink Normal View History

# 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.