Files
api-wipay/API_OUT_ARCHITECTURE.md

147 lines
4.0 KiB
Markdown
Raw Normal View History

# API Out Architecture - External API Calls
## Status: ✅ Semua API Out Sudah di timo.wipay.id_api
Semua external API calls (API out) sekarang sudah di-handle oleh **timo.wipay.id_api** (Slim 4).
## External API yang Dipanggil
### 1. TIMO PDAM API (timo.tirtaintan.co.id)
**Endpoint yang dipanggil:**
- `GET https://timo.tirtaintan.co.id/enquiry/{no_sl}` - Cek tagihan
- `GET https://timo.tirtaintan.co.id/enquiry-dil/{no_sl}` - Cek data pelanggan
- `POST https://timo.tirtaintan.co.id/payment/{token}` - Proses pembayaran
- `POST https://timo.tirtaintan.co.id/push-registrasi` - Registrasi pasang baru
**Digunakan di:**
- `FastController::checkBill()` - Cek tagihan
- `FastController::processPayment()` - Proses pembayaran
- `SLController::cekSL()` - Cek data SL
- `SLController::confirmSL()` - Konfirmasi SL
- `UploadController::uploadPasangBaru()` - Registrasi pasang baru
### 2. Rasamala API (rasamala.tirtaintan.co.id)
**Endpoint yang dipanggil:**
- `POST https://rasamala.tirtaintan.co.id/timo/upload-cater/{wrute_id}` - Upload baca mandiri
**Digunakan di:**
- `UploadController::uploadBacaMandiri()` - Upload baca mandiri
### 3. BRI API (untuk verifikasi pembayaran)
**Endpoint yang dipanggil:**
- `POST {BRI_URL_TOKEN}` - Get BRI token
- `POST {BRI_URL_MUTASI}` - Get mutasi rekening
**Digunakan di:**
- `SiteController::verifyBri()` - Verifikasi pembayaran BRI
- `SiteController::getBriToken()` - Get BRI token
- `SiteController::getMutasi()` - Get mutasi BRI
### 4. WhatsApp API (opsional)
**Digunakan di:**
- `SiteController::sendPaymentNotification()` - Kirim notifikasi WhatsApp
## Helper Class
### HttpHelper
Semua external API calls menggunakan `App\Helpers\HttpHelper::doCurl()`
**Location:** `src/Helpers/HttpHelper.php`
**Method:**
```php
HttpHelper::doCurl($url, $method = 'GET', $data = null, $json = false, $headers = [])
```
**Features:**
- Support GET dan POST
- Support JSON dan form data
- Error handling
- SSL verification (disabled untuk development)
- Timeout handling
## Arsitektur
```
timo.wipay.id_api (Slim 4)
├── Controllers
│ ├── FastController
│ │ └── checkBill() → HttpHelper → timo.tirtaintan.co.id
│ ├── SLController
│ │ └── cekSL() → HttpHelper → timo.tirtaintan.co.id
│ ├── UploadController
│ │ └── uploadBacaMandiri() → HttpHelper → rasamala.tirtaintan.co.id
│ └── SiteController
│ └── verifyBri() → HttpHelper → BRI API
└── Helpers
└── HttpHelper
└── doCurl() → cURL → External APIs
```
## Keuntungan
1. **Centralized**: Semua API out di satu tempat (timo.wipay.id_api)
2. **Consistent**: Semua menggunakan HttpHelper yang sama
3. **Maintainable**: Mudah di-maintain dan di-debug
4. **Testable**: Bisa di-mock untuk testing
5. **Error Handling**: Error handling yang konsisten
## Backend (timo.wipay.id) - CodeIgniter
**Status:** Backend CodeIgniter **TIDAK** lagi mengurus API out
Backend CodeIgniter sekarang hanya:
- Admin panel (jika masih digunakan)
- View/UI (jika masih digunakan)
- Database management (jika masih digunakan)
**Semua API out sudah pindah ke timo.wipay.id_api**
## Rekomendasi
### Option 1: Full Migration (Recommended)
**Semua API out di timo.wipay.id_api**
- Semua external API calls dari Slim 4
- Backend CodeIgniter hanya untuk admin panel (jika masih dipakai)
- Atau bisa di-decommission jika tidak dipakai lagi
### Option 2: Hybrid
⚠️ **Tidak direkomendasikan**
- API out di dua tempat (Slim 4 dan CodeIgniter)
- Bisa menyebabkan duplikasi dan konflik
- Sulit di-maintain
## Kesimpulan
**timo.wipay.id_api (Slim 4) yang mengurus semua API out**
Backend CodeIgniter (timo.wipay.id) tidak lagi mengurus API out, semua sudah pindah ke Slim 4.
## Next Steps
1. ✅ Semua API out sudah di timo.wipay.id_api
2. ⚠️ Pastikan tidak ada API out yang masih di CodeIgniter
3. ⚠️ Test semua external API calls
4. ⚠️ Monitor error logs untuk external API calls
5. ⚠️ Setup retry mechanism jika diperlukan
6. ⚠️ Setup rate limiting jika diperlukan