Initial commit: API Wipay dengan fix CORS untuk GET request

This commit is contained in:
mwpn
2026-01-21 10:13:38 +07:00
commit 4895761764
70 changed files with 12036 additions and 0 deletions

117
EXTERNAL_API_MIGRATION.md Normal file
View File

@@ -0,0 +1,117 @@
# External API Migration - Progress
## Status: ✅ MIGRATED
Semua external API yang masih dipakai telah dimigrasikan ke Slim 4.
## Endpoint yang Sudah Dimigrasikan
### 1. Api Controller (`/api/`)
-`GET /api/mandiri/{tanggal}` - Data catat meter Mandiri
### 2. Fast Controller (`/fast/`)
-`GET /fast/test` - Test endpoint (no auth)
-`POST /fast/check_bill` - Cek tagihan PDAM (with API Key)
-`POST /fast/process_payment` - Proses pembayaran (with API Key)
-`GET /fast/process_payment_get` - Proses pembayaran via GET (with API Key)
-`GET /fast/payment_status` - Cek status pembayaran (with API Key)
-`POST /fast/payment_status` - Cek status pembayaran (with API Key)
-`GET /fast/check_wipay_saldo` - Cek saldo WIPAY (with API Key)
-`POST /fast/check_wipay_saldo` - Cek saldo WIPAY (with API Key)
-`GET /fast/check_wipay_saldo_get` - Cek saldo WIPAY via GET (with API Key)
-`GET /fast/mandiri/{tanggal}` - Data Mandiri
### 3. Site Controller (`/site/`)
-`POST /site/verify_bri` - Verifikasi pembayaran BRI
-`POST /site/approve/{id_trx}` - Approve transaksi
## File yang Dibuat
### Models
- `src/Models/ApiKeyModel.php` - Model untuk API key management
### Middleware
- `src/Middleware/ApiKeyMiddleware.php` - Middleware untuk API key authentication
### Controllers
- `src/Controllers/ApiController.php` - Controller untuk API mandiri
- `src/Controllers/FastController.php` - Controller untuk Fast WIPAY API
- `src/Controllers/SiteController.php` - Controller untuk Site (admin) API
## Authentication
### API Key Authentication
- Header: `X-Client-ID` dan `X-Client-Secret`
- Atau via query params: `client_id` dan `client_secret`
- Atau via body: `client_id` dan `client_secret`
### Endpoint yang Tidak Perlu Auth
- `GET /api/mandiri/{tanggal}` - Public
- `GET /fast/test` - Public
- `GET /fast/mandiri/{tanggal}` - Public
## Database Tables
External API menggunakan tabel:
- `api_keys` - Untuk menyimpan API key
- `api_logs` - Untuk logging API usage
- `admin_users` - Untuk admin user data
- `pengguna_timo` - User data
- `wipay_pengguna` - WIPAY user data
- `wipay_mutasi` - WIPAY transaction history
- `pembayaran` - Payment records
- `catat_meter` - Meter reading data
## Environment Variables
Tambahkan ke `.env`:
```
BASE_URL=http://localhost:8000
# BRI Integration (untuk Site API)
BRI_KEY=your_bri_key
BRI_SECRET=your_bri_secret
BRI_URL_TOKEN=https://api.bri.co.id/oauth/token
BRI_URL_MUTASI=https://api.bri.co.id/v2.0/statement
BRI_REKENING=your_bri_account_number
```
## Testing
### Test API Mandiri
```bash
curl http://localhost:8000/api/mandiri/10112024
```
### Test Fast API (dengan API Key)
```bash
curl -X GET http://localhost:8000/fast/test
curl -X POST http://localhost:8000/fast/check_bill \
-H "X-Client-ID: your_client_id" \
-H "X-Client-Secret: your_client_secret" \
-H "Content-Type: application/json" \
-d '{"no_sl":"059912"}'
```
### Test Site API
```bash
curl -X POST http://localhost:8000/site/verify_bri
curl -X POST http://localhost:8000/site/approve/1
```
## Catatan
1. **API Key Management**: Pastikan tabel `api_keys` dan `api_logs` ada di database
2. **BRI Integration**: Site API memerlukan konfigurasi BRI di `.env`
3. **CORS**: Semua external API sudah support CORS
4. **Response Format**: Fast API menggunakan format `{status: 'success/error', message: '...', data: {...}}`
5. **Api Mandiri**: Menggunakan format khusus `{status: 1, date: '...', data: [...]}`
## Next Steps
1. Test semua endpoint dengan data real
2. Setup API keys di database
3. Konfigurasi BRI credentials di `.env`
4. Test dengan client yang menggunakan API ini