14 KiB
14 KiB
Logika Bisnis TIMO WIPAY API
Dokumen ini menjelaskan alur bisnis dan logika aplikasi TIMO WIPAY secara lengkap.
1. User Management (Manajemen Pengguna)
1.1 Registrasi User (/timo/daftar)
Flow:
- User input:
nama,username,email,no_hp,password - Validasi: username dan email harus unik
- Set default
biaya_admin= 2500 - Password di-hash dengan MD5
- Insert ke tabel
pengguna_timo - Response: status 200 jika berhasil
Business Rules:
- Username tidak boleh duplikat
- Email tidak boleh duplikat
- Biaya admin default: Rp 2.500
1.2 Login (/timo/login atau /timo/login_token)
Flow:
- User input:
username,password,fcm_token(opsional) - Validasi username & password (MD5)
- Update FCM token jika ada
- Ambil daftar SL user
- Response:
userobject +data_slarray
Business Rules:
- Password di-hash MD5 untuk validasi
- FCM token untuk push notification
- Return semua SL yang terdaftar di akun user
1.3 Update Akun (/timo/update_akun)
Flow:
- Update data user:
nama_lengkap,email,no_hp - Validasi token user
- Update database
- Response: data user terbaru
1.4 Update Password (/timo/update_password)
Flow:
- Validasi password lama (MD5)
- Update password baru (MD5)
- Response: status sukses/gagal
2. Service Line (SL) Management
2.1 Cek SL (/timo/cek_sl)
Flow:
- 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
Business Rules:
- Satu akun bisa multiple SL
- Harus valid di sistem TIMO PDAM
2.2 Confirm SL (/timo/confirm_sl)
Flow:
- Input:
token,no_sl - Cek apakah sudah terdaftar (jika ya, return status 300)
- Cek ke API TIMO:
enquiry-dil/{no_sl} - Simpan ke
daftar_sldengan data dari TIMO:pel_nama→namapel_alamat→alamatdkd_kd→cabangrek_gol→golongan
- Response: data SL yang baru terdaftar
Business Rules:
- Data SL diambil dari sistem TIMO PDAM
- SL terikat dengan token user
2.3 Hapus SL (/timo/hapus_sl)
Flow:
- Input:
token,no_sl - Validasi: SL harus terdaftar di akun user ini
- Delete dari
daftar_sl - Response: status sukses
3. Tagihan Management
3.1 History Tagihan (/timo/history/{sl}/{periode})
Flow:
- Input:
sl,periode(dari URL path) - Call TIMO API:
enquiry-his/{sl}/{periode} - Response: data history tagihan
3.2 Tagihan Saat Ini (/timo/tagihan/{sl})
Flow:
- Input:
sl(dari URL path) - Call TIMO API:
enquiry/{sl} - Response: data tagihan aktif
Business Rules:
- Data tagihan real-time dari TIMO PDAM
- Bisa multiple tagihan per SL
4. Payment Flow (Alur Pembayaran)
4.1 Request Pembayaran (/timo/request_pembayaran)
Flow:
- Input:
token,no_sl,nama_bank,no_rek - Validasi token user
- Cek pembayaran aktif:
- Jika ada pembayaran dengan status
DIBUATdan belum expired → return pembayaran tersebut - Jika ada pembayaran expired → update status ke
EXPIRED
- Jika ada pembayaran dengan status
- Buat pembayaran baru:
- Call TIMO API:
enquiry/{no_sl}untuk ambil tagihan - Hitung total tagihan + biaya admin
- Generate kode unik prioritas
- Set expired: +1 hari dari sekarang
- Status:
DIBUAT
- Call TIMO API:
- Response: data pembayaran dengan
no_trx, total, expired time
Business Rules:
- Satu SL hanya boleh punya 1 pembayaran aktif (
DIBUAT) - Pembayaran expired otomatis setelah 1 hari
- Kode unik untuk identifikasi transfer
- Biaya admin per tagihan
4.2 Cek Pembayaran (/timo/cek_pembayaran)
Flow:
- Input:
token,no_sl - Cari pembayaran dengan status
DIBUATatauMENUNGGU VERIFIKASI - Response: data pembayaran jika ada
Business Rules:
- User bisa cek status pembayaran kapan saja
- Status yang bisa dicek:
DIBUAT,MENUNGGU VERIFIKASI
4.3 Cek Transfer (/timo/cek_transfer)
Flow:
- Input:
token,no_sl - Cari pembayaran dengan status
MENUNGGU VERIFIKASI - Update:
tanggal_cek_bayar= sekarangbanyak_cek= increment
- Response: data pembayaran
Business Rules:
- User bisa cek transfer berkali-kali
- Tracking berapa kali user cek pembayaran
4.4 Upload Bukti Transfer (/timo/upload_bukti_transfer)
Flow:
- Input:
token,no_sl,pembayaran(no_trx),photo(base64) - Upload foto bukti transfer
- Update
bukti_transferdi tabelpembayaran - Response: status sukses
Business Rules:
- Bukti transfer diperlukan untuk verifikasi manual
- Foto disimpan di
assets/uploads/bukti_transfer/
4.5 Batal Pembayaran (/timo/batal_pembayaran)
Flow:
- Input:
token,no_sl - Cari pembayaran dengan status
DIBUAT - Update status ke
DIBATALKAN - Response: status 200 (tapi pesan tetap default error message - sesuai API lama)
Business Rules:
- Hanya pembayaran dengan status
DIBUATyang bisa dibatalkan - Setelah dibatalkan, user bisa buat pembayaran baru
4.6 Confirm Pembayaran (/timo/confirm_pembayaran)
Flow:
- Input:
token,no_sl - Cari pembayaran dengan status
MENUNGGU VERIFIKASI - Update status ke
DIBAYAR - Response: status 200 (tapi pesan tetap default error message - sesuai API lama)
Business Rules:
- Hanya admin yang bisa confirm (via
/site/approve) - Endpoint ini untuk tracking saja
4.7 History Bayar (/timo/history_bayar)
Flow:
- Input:
token - Ambil semua pembayaran user dengan status
DIBAYAR - Response: array history pembayaran
5. Payment Processing (Admin)
5.1 Approve Pembayaran (/site/approve/{id_trx})
Flow:
- Input:
id_trx(dari URL path) - Cari pembayaran dengan status
MENUNGGU VERIFIKASI - Prepare data payment:
- Ambil
raw_data(rincian tagihan) - Format:
rek_nomor,rek_total,serial,byr_tgl,loket
- Ambil
- Call TIMO API:
payment/{token} - Jika sukses:
- Update status ke
DIBAYAR - Set
tanggal_bayar= sekarang - Set
jumlah_bayar= total
- Update status ke
- Response: status sukses/gagal
Business Rules:
- Hanya admin yang bisa approve
- Payment langsung ke PDAM via TIMO API
- Setelah approve, pembayaran tidak bisa dibatalkan
5.2 Verify BRI (/site/verify_bri)
Flow:
- Ambil token BRI
- Cari pembayaran BRI dengan status
MENUNGGU VERIFIKASIdanbanyak_cek < 2 - Call BRI API untuk ambil mutasi rekening
- Bandingkan jumlah transfer dengan total pembayaran
- Jika cocok:
- Update status ke
DIBAYAR - Auto approve pembayaran
- Update status ke
- Response: HTML message (sesuai API lama)
Business Rules:
- Verifikasi otomatis via BRI API
- Maksimal 2x cek per pembayaran
- Auto approve jika jumlah cocok
6. WIPAY Integration
6.1 Cek WIPAY (/timo/cek_wipay)
Flow:
- Input:
token - Cek apakah user punya akun WIPAY
- Response: data WIPAY jika ada
Business Rules:
- WIPAY terikat dengan user via
pengguna_timo.wipay
6.2 Buat Kode Unik (/timo/buat_kode)
Flow:
- Input:
token - Generate kode unik untuk pembayaran
- Response: kode unik
Business Rules:
- Kode unik untuk identifikasi transfer
- Format: angka random dengan prioritas tertentu
6.3 Cek Kode (/timo/cek_kode)
Flow:
- Input:
token,kode - Validasi kode unik
- Response: status valid/tidak valid
6.4 Reset Kode (/timo/reset_kode)
Flow:
- Input:
token,kode,password_baru - Validasi kode
- Update password user
- Response: status sukses
7. Fast WIPAY API (External)
7.1 Check Bill (/fast/check_bill)
Flow:
- 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
Business Rules:
- Hanya untuk partner/merchant dengan API Key
- Menggunakan timo user dari admin user
7.2 Process Payment (/fast/process_payment)
Flow:
- Auth: API Key
- Input:
no_sl,amount - Validasi saldo WIPAY admin user
- Cek tagihan via TIMO API
- Jika saldo cukup:
- Deduct saldo WIPAY
- Call TIMO API:
payment/{token} - Simpan pembayaran dengan status
DIBAYAR
- Response: data pembayaran
Business Rules:
- Payment langsung dari saldo WIPAY
- Tidak perlu verifikasi manual
- Status langsung
DIBAYAR
7.3 Payment Status (/fast/payment_status)
Flow:
- Auth: API Key
- Input:
transaction_idataupembayaran_id - Cari pembayaran berdasarkan API Key
- Response: status pembayaran
7.4 Check WIPAY Saldo (/fast/check_wipay_saldo)
Flow:
- Auth: API Key
- Get admin user → timo user → wipay user
- Hitung saldo dari mutasi terakhir
- Response: saldo WIPAY
8. Complaint/Gangguan Management
8.1 Upload Gangguan (/timo/upload_gangguan)
Flow:
- Input:
token,no_sl,gangguan(id jenis),feedback,lokasi,photo(opsional) - Validasi jenis gangguan (harus ada foto jika
harus_ada_foto = 'YA') - Insert ke
gangguandengan statusDILAPORKAN - Upload foto jika diperlukan
- Kirim ke external API:
pengaduan/{no_sl} - Kirim notifikasi Telegram ke admin gangguan
- Response: status sukses
Business Rules:
- Beberapa jenis gangguan wajib ada foto
- Status awal:
DILAPORKAN - Setelah kirim ke external API: status
DIPROSES - Notifikasi ke admin gangguan via Telegram
8.2 History Gangguan (/timo/history_gangguan)
Flow:
- Input:
token - Ambil semua gangguan user
- Response: array history gangguan
9. Upload Features
9.1 Upload Catat Meter (/timo/upload_catat_meter)
Flow:
- Input:
token,no_sl,angka,photo(base64) - Upload foto catat meter
- Simpan ke
catat_meter - Kirim ke external API:
upload-catat-meter/{no_sl} - Response: status sukses
Business Rules:
- User bisa upload catat meter mandiri
- Data dikirim ke sistem Rasamala
9.2 Upload Pasang Baru (/timo/upload_pasang_baru)
Flow:
- Input:
token,no_sl,nama,email,telepon,nik,alamat,photo - Upload foto
- Simpan ke
pasang_baru - Kirim ke external API:
push-registrasi - Jika berhasil, dapat
reg_id(no SL baru) - Auto insert ke
daftar_sljika dapat no SL - Response: status sukses
Business Rules:
- Registrasi pasang baru via aplikasi
- Auto daftarkan SL jika registrasi berhasil
9.3 Upload Baca Mandiri (/timo/upload_baca_mandiri)
Flow:
- 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} - Simpan ke
baca_mandiri_log - Response: status sukses
Business Rules:
- Untuk petugas baca meter
- Koordinat wajib (GPS atau geocoding)
- Data dikirim ke sistem Rasamala
10. Payment Status Flow
Status Pembayaran:
- DIBUAT → Pembayaran baru dibuat, menunggu transfer
- MENUNGGU VERIFIKASI → Bukti transfer sudah diupload, menunggu verifikasi admin
- DIBAYAR → Pembayaran sudah diverifikasi dan diapprove ke PDAM
- DIBATALKAN → User membatalkan pembayaran
- EXPIRED → Pembayaran sudah expired (lebih dari 1 hari)
Flow Diagram:
DIBUAT
↓ (upload bukti transfer)
MENUNGGU VERIFIKASI
↓ (admin approve / BRI auto verify)
DIBAYAR
DIBUAT
↓ (user batal / expired)
DIBATALKAN / EXPIRED
11. External API Integration Flow
11.1 TIMO PDAM API
- Enquiry: Cek tagihan, history, data pelanggan
- Payment: Proses pembayaran ke PDAM
- Push Registrasi: Registrasi pasang baru
11.2 Rasamala API
- Upload Catat Meter: Kirim data catat meter mandiri
- Order Cater: Request order baca mandiri
- Upload Cater: Upload hasil baca mandiri
11.3 BRI API
- Token: Ambil access token
- Mutasi: Cek mutasi rekening untuk verifikasi pembayaran
11.4 WhatsApp API
- Send Message: Kirim notifikasi ke user (reset password, dll)
11.5 Telegram API
- Send Message: Kirim notifikasi ke admin (transaksi baru, gangguan)
12. Business Rules Summary
User & SL
- Satu user bisa punya multiple SL
- Satu SL hanya bisa terdaftar ke satu user
- SL harus valid di sistem TIMO PDAM
Pembayaran
- Satu SL hanya boleh punya 1 pembayaran aktif (
DIBUAT) - Pembayaran expired setelah 1 hari
- Biaya admin per tagihan
- Kode unik untuk identifikasi transfer
WIPAY
- Payment langsung dari saldo WIPAY
- Tidak perlu verifikasi manual
- Auto approve jika saldo cukup
Gangguan
- Beberapa jenis gangguan wajib ada foto
- Auto kirim ke sistem pengaduan PDAM
- Notifikasi ke admin via Telegram
Upload
- Semua upload menggunakan base64 encoding
- Foto disimpan di folder
assets/uploads/ - Data dikirim ke external API untuk sinkronisasi
13. Security & Authentication
Internal API (/timo/*)
- Auth: Token user (
id_pengguna_timo) - Validasi di setiap endpoint
External API (/fast/*)
- Auth: API Key (X-Client-ID, X-Client-Secret)
- Middleware:
ApiKeyMiddleware - Logging: Semua request di-log
Admin API (/site/*)
- No auth (bisa ditambahkan session auth jika diperlukan)
- Untuk verifikasi dan approve pembayaran
14. Error Handling
- Semua error return JSON dengan format konsisten
- Status code sesuai HTTP standard
- Error message dalam bahasa Indonesia
- Logging untuk debugging
15. Data Flow Summary
User Registration → Login → Add SL → Request Payment →
Upload Bukti Transfer → Admin Verify → Approve → Payment to PDAM
User → Upload Gangguan → External API → Admin Notification (Telegram)
User → Upload Catat Meter → External API (Rasamala)
Fast API → Check Bill → Process Payment (WIPAY) → Payment to PDAM