Commit Graph

5 Commits

Author SHA1 Message Date
Daeng Deni Mardaeni
291e791114 feat(api): implementasi autentikasi HMAC dan validasi komprehensif untuk API balance
- Security: validasi HMAC SHA512 untuk semua request, cek timestamp ISO 8601 dengan toleransi 5 menit, autentikasi API key, dan wajib header X-Api-Key, X-Signature, X-Timestamp.
- Input validation: account_number numeric 10 digit & exists, start/end date format YYYY-MM-DD dengan aturan range (start ≤ end ≤ today).
- Perubahan file: update `app/Http/Requests/BalanceSummaryRequest.php` (HMAC check, timestamp check, pesan error, logging) dan `config/webstatement.php` (api_key, secret_key).
- Error handling: konsisten dengan ResponseCode enum; HTTP status 400/401/404; pesan error jelas (Bahasa Indonesia) + logging.
- Testing: Postman collection diperbarui untuk kasus negatif & edge cases; backward compatibility dijaga.
- Breaking changes: endpoint kini mewajibkan 3 header (X-Api-Key, X-Signature, X-Timestamp); account number wajib 10 digit numeric; format tanggal strict.
- ENV: tambahkan `WEBSTATEMENT_API_KEY` dan `WEBSTATEMENT_SECRET_KEY` (dipetakan ke `config/webstatement.php`).
2025-08-28 15:39:21 +07:00
Daeng Deni Mardaeni
00681a8e30 feat(auth): implementasi autentikasi HMAC dan standardisasi format respons API
- Tambah validasi HMAC (X-Signature, X-Timestamp, X-Api-Key) pada setiap request.
- Standarkan format respons sesuai ResponseCode; hapus `response_description` (gabung ke `response_message`).
- `BalanceSummaryRequest`: validasi header + `validateHmac512`, pakai secret dari config, logging detail, bedakan invalid API key vs invalid signature.
- `AccountBalanceController`: sederhanakan pesan error “Rekening tidak ditemukan”.
- Konfigurasi baru: `webstatement.api_key`, `webstatement.secret_key`; pastikan helper `validateHmac512` tersedia.
- Breaking: Bearer token tidak didukung; gunakan HMAC headers.
- Validasi nomor rekening di database sebelum proses bisnis.
- Logging terstruktur untuk setiap percobaan validasi HMAC (header & hasil verifikasi).
- Konsistensi kode error via ResponseCode enum untuk semua kasus gagal.
2025-08-28 13:44:58 +07:00
Daeng Deni Mardaeni
adda3122f8 feat(response): Restrukturisasi format response untuk validasi error dan response sukses
- Menambahkan logika baru di `ResponseCode` untuk memisahkan struktur response sukses dan error.
- Field `errors` sekarang berada di root level untuk response validasi error.
- Meta response error lebih ringkas, hanya menyertakan `generated_at` dan `request_id`.
- Pesan error menampilkan seluruh daftar error, bukan hanya error pertama.
- Konsistensi format response memudahkan integrasi dengan frontend.
- Field `account_number` dan `period` dihapus dari meta pada response error.
- Memberikan request_id otomatis pada setiap response untuk keperluan tracking.
- Semua endpoint yang menggunakan ResponseCode enum otomatis mengikuti format baru.
2025-08-28 11:18:57 +07:00
Daeng Deni Mardaeni
e53b522f77 feat(API): standarisasi response API dengan ResponseCode enum dan penambahan struktur meta
- Menambahkan ResponseCode enum untuk standarisasi semua response API.
- Integrasi meta data: nomor rekening, periode, request_id, dan reference_code.
- Memperbarui validasi input dengan response code standar (INVALID_FIELD).
- Struktur response dibuat konsisten untuk success dan error.
- Logging diperkuat untuk debugging dan monitoring.
2025-08-27 17:07:57 +07:00
Daeng Deni Mardaeni
f324f9e3f6 feat(Modules/Webstatement): Tambahkan BalanceSummaryRequest dan BalanceSummaryResource untuk API Balance Summary
- Menambahkan BalanceSummaryRequest dengan validasi lengkap untuk parameter API balance summary.
- Menambahkan BalanceSummaryResource untuk transformasi dan formatting response balance summary.
- Implementasi validasi nomor rekening menggunakan regex alphanumeric dan dash.
- Validasi tanggal dengan format Y-m-d dan batasan logika tanggal.
- Format balance menggunakan number_format dengan pemisah ribuan dan desimal Indonesia (2, ',', '.').
- Struktur response JSON yang konsisten dengan informasi lengkap balance summary.
- Menambahkan metadata pada response untuk tracking dan debugging.
- Logging request untuk monitoring dan audit trail.
- Mendukung pagination dan filtering tanggal untuk API balance summary.
2025-08-27 16:19:06 +07:00