diff --git a/README.md b/README.md index df8980e..96d5135 100644 --- a/README.md +++ b/README.md @@ -182,129 +182,116 @@ Struct: `usecase.OnboardingRequest` (`internal/interfaces/usecase/loa.go:51`) "image_path": "http://asset-host/example.png" } ], - "processing": { - "count": 1, - "list": [ - { - "ticket_no": "TKT001", - "card_no": "2003 **** **** 4302", - "card_name": "Agung Harsono", - "card_product_type": "Easy Card", - "card_image_name": "bri_easy_card", - "card_image_path": "http://asset-host/card/bri_easy_card.png", - "account_no": "029012345678901", - "account_string": "0290 **** **** 112", - "account_name": "BRItama Bisnis", - "account_image_name": "britama_bisnis", - "account_image_path": "http://asset-host/account/britama_bisnis.png", - "status": "PROCESSING", - "status_string": "Pengajuan Diproses", - "request_time": "09 February 2026, 09:41:02 WIB", - "amount": "Rp3.200.000", - "monthly_payment": "Rp1.015.000", - "admin_fee": "Rp200.000", - "interest_rate": "0%", - "term": "3 Bulan", - "seq_no": 1, - "progress": [ - { - "status_title": "Pengajuan dalam Analisis", - "status_time": "09 Feb 2026, 09:41 WIB", - "order": 1, - "current": true - }, - { - "status_title": "Pengajuan Disetujui", - "status_time": "", - "order": 2, - "current": false - } - ] - } - ] - }, - "rejected": { - "count": 1, - "list": [ - { - "ticket_no": "TKT002", - "card_no": "2003 **** **** 4302", - "card_name": "Agung Harsono", - "card_product_type": "Easy Card", - "card_image_name": "bri_easy_card", - "card_image_path": "http://asset-host/card/bri_easy_card.png", - "account_no": "029012345678901", - "account_string": "0290 **** **** 112", - "account_name": "BRItama Bisnis", - "account_image_name": "britama_bisnis", - "account_image_path": "http://asset-host/account/britama_bisnis.png", - "status": "REJECTED", - "status_string": "Pengajuan Ditolak", - "request_time": "09 February 2026, 09:41:02 WIB", - "amount": "Rp3.200.000", - "monthly_payment": "Rp1.015.000", - "admin_fee": "Rp200.000", - "interest_rate": "0%", - "term": "3 Bulan", - "seq_no": 2, - "progress": [ - { - "status_title": "Pengajuan dalam Analisis", - "status_time": "09 Feb 2026, 09:41 WIB", - "order": 1, - "current": false - }, - { - "status_title": "Pengajuan Ditolak", - "status_time": "10 Feb 2026, 06:30 WIB", - "order": 2, - "current": true - } - ] - } - ] - }, - "approved": { - "count": 1, - "list": [ - { - "ticket_no": "TKT003", - "card_no": "2003 **** **** 4302", - "card_name": "Agung Harsono", - "card_product_type": "Easy Card", - "card_image_name": "bri_easy_card", - "card_image_path": "http://asset-host/card/bri_easy_card.png", - "account_no": "029012345678901", - "account_string": "0290 **** **** 112", - "account_name": "BRItama Bisnis", - "account_image_name": "britama_bisnis", - "account_image_path": "http://asset-host/account/britama_bisnis.png", - "status": "APPROVED", - "status_string": "Pengajuan Disetujui", - "request_time": "09 February 2026, 09:41:02 WIB", - "amount": "Rp3.200.000", - "monthly_payment": "Rp1.015.000", - "admin_fee": "Rp200.000", - "interest_rate": "0%", - "term": "3 Bulan", - "seq_no": 3, - "progress": [ - { - "status_title": "Pengajuan dalam Analisis", - "status_time": "09 Feb 2026, 09:41 WIB", - "order": 1, - "current": false - }, - { - "status_title": "Pengajuan Disetujui", - "status_time": "10 Feb 2026, 06:30 WIB", - "order": 2, - "current": true - } - ] - } - ] - } + "list": [ + { + "ticket_no": "TKT001", + "card_no": "2003 **** **** 4302", + "card_name": "Agung Harsono", + "card_product_type": "Easy Card", + "card_image_name": "bri_easy_card", + "card_image_path": "http://asset-host/card/bri_easy_card.png", + "account_no": "029012345678901", + "account_string": "0290 **** **** 112", + "account_name": "BRItama Bisnis", + "account_image_name": "britama_bisnis", + "account_image_path": "http://asset-host/account/britama_bisnis.png", + "status": "PROCESSING", + "status_string": "Pengajuan Diproses", + "request_time": "09 February 2026, 09:41:02 WIB", + "amount": "Rp3.200.000", + "monthly_payment": "Rp1.015.000", + "admin_fee": "Rp200.000", + "interest_rate": "0%", + "term": "3 Bulan", + "seq_no": 1, + "progress": [ + { + "status_title": "Pengajuan dalam Analisis", + "status_time": "09 Feb 2026, 09:41 WIB", + "order": 1, + "current": true + }, + { + "status_title": "Pengajuan Disetujui", + "status_time": "", + "order": 2, + "current": false + } + ] + }, + { + "ticket_no": "TKT002", + "card_no": "2003 **** **** 4302", + "card_name": "Agung Harsono", + "card_product_type": "Easy Card", + "card_image_name": "bri_easy_card", + "card_image_path": "http://asset-host/card/bri_easy_card.png", + "account_no": "029012345678901", + "account_string": "0290 **** **** 112", + "account_name": "BRItama Bisnis", + "account_image_name": "britama_bisnis", + "account_image_path": "http://asset-host/account/britama_bisnis.png", + "status": "REJECTED", + "status_string": "Pengajuan Ditolak", + "request_time": "09 February 2026, 09:41:02 WIB", + "amount": "Rp3.200.000", + "monthly_payment": "Rp1.015.000", + "admin_fee": "Rp200.000", + "interest_rate": "0%", + "term": "3 Bulan", + "seq_no": 2, + "progress": [ + { + "status_title": "Pengajuan dalam Analisis", + "status_time": "09 Feb 2026, 09:41 WIB", + "order": 1, + "current": false + }, + { + "status_title": "Pengajuan Ditolak", + "status_time": "10 Feb 2026, 06:30 WIB", + "order": 2, + "current": true + } + ] + }, + { + "ticket_no": "TKT003", + "card_no": "2003 **** **** 4302", + "card_name": "Agung Harsono", + "card_product_type": "Easy Card", + "card_image_name": "bri_easy_card", + "card_image_path": "http://asset-host/card/bri_easy_card.png", + "account_no": "029012345678901", + "account_string": "0290 **** **** 112", + "account_name": "BRItama Bisnis", + "account_image_name": "britama_bisnis", + "account_image_path": "http://asset-host/account/britama_bisnis.png", + "status": "APPROVED", + "status_string": "Pengajuan Disetujui", + "request_time": "09 February 2026, 09:41:02 WIB", + "amount": "Rp3.200.000", + "monthly_payment": "Rp1.015.000", + "admin_fee": "Rp200.000", + "interest_rate": "0%", + "term": "3 Bulan", + "seq_no": 3, + "progress": [ + { + "status_title": "Pengajuan dalam Analisis", + "status_time": "09 Feb 2026, 09:41 WIB", + "order": 1, + "current": false + }, + { + "status_title": "Pengajuan Disetujui", + "status_time": "10 Feb 2026, 06:30 WIB", + "order": 2, + "current": true + } + ] + } + ] } } ``` @@ -317,7 +304,7 @@ Struct: `usecase.OnboardingRequest` (`internal/interfaces/usecase/loa.go:51`) Each `scheme` item now only contains `tenor` and `bunga` (removed `nominal_transaksi` and `subtitle_transaksi`). -Each item in `processing`/`rejected`/`approved.list` is `usecase.Application`: +Each item in `list` is `usecase.Application`:
Application item schema @@ -383,110 +370,7 @@ Each item in `processing`/`rejected`/`approved.list` is `usecase.Application`: --- -## 2. `POST /api/v1/cc-loan-on-app/list` - -**Erangel route:** `POST /v3-cc-loan-on-app-card-list` → `erangel/application/controllers/api/v3/loan_on_app/List_loa.php` -**Doom library call:** `Doom::list($refnum, $username, $device)` → `Doom.php:148` -**Handler:** `loaHandler.List` → `loauc.List` (`internal/usecase/loa/list.go`) - -Lists all the credit cards the user owns that are eligible for loan-on-app. - -### Request Body - -| Field | Source | Required | -|---|---|---| -| _no body fields_ | – | – | - -The frontend sends **no body fields** to erangel for this endpoint. All common fields below are injected by erangel. - -
-Request Body JSON - -```json -{ - "client": "BRIMON", // [EG] - "request_refnum": "123456789154", // [EG] - "username": "acctest009", // [EG] - "timestamp": "1652034352767", // [EG] - "channel_id": "NBMB", // [EG] - "request_id": "f6eb58d24d6842f59ddb40f40d2a7992" // [DM] (overwritten) -} -``` - -
- -Struct: `usecase.LoaListRequest` (`internal/interfaces/usecase/loa.go:186`) - -### Response Body (200) - -
-Response Body JSON - -```json -{ - "code": "00", - "refnum": "123456789154", - "id": "", - "desc": "success", - "data": { - "loan": [ - { - "ticket_no": "TKT001", - "card_no": "2003 **** **** 4302", - "card_name": "Agung Harsono", - "card_product_type": "Easy Card", - "card_image_name": "bri_easy_card", - "card_image_path": "http://asset-host/card/bri_easy_card.png", - "account_no": "029012345678901", - "account_string": "0290 **** **** 112", - "account_name": "BRItama Bisnis", - "account_image_name": "britama_bisnis", - "account_image_path": "http://asset-host/account/britama_bisnis.png", - "request_time": "09 February 2026, 09:41:02 WIB", - "amount": "Rp3.200.000", - "monthly_payment": "Rp1.015.000", - "admin_fee": "Rp200.000", - "interest_rate": "0%", - "term": "3 Bulan", - "sla_note": "Proses pengajuan 1x24 jam kerja. Kamu akan diberi notifikasi saat pencairan disetujui.", - "status": "PROCESSING|APPROVED|REJECTED", - "status_string": "Pengajuan Diproses|Pengajuan Disetujui|Pengajuan Ditolak", - "progress": [ - { - "status_title": "Pengajuan dalam Analisis", - "status_time": "09 Feb 2026, 09:41 WIB", - "order": 1, - "current": true - }, - { - "status_title": "Pengajuan Disetujui|Pengajuan Ditolak", - "status_time": "", - "order": 2, - "current": false - } - ] - } - ] - } -} -``` - -
- -`data` is `usecase.LoaListResponse`. When the user has no eligible cards, `code` is `01` and `loan` is an empty array (see `list.go:83-86`). - -### Error Codes - -| Code | When | -|---|---| -| `00` | Success (cards found) | -| `01` | Empty list / no credit card found | -| `NA`, `TV` | Eredar call failed | -| `TB` | Vikendi / DB read failure | - ---- - -## 3. `POST /api/v1/cc-loan-on-app/form` +## 2. `POST /api/v1/cc-loan-on-app/form` **Erangel route:** `POST /v3-cc-loan-on-app-form` → `erangel/application/controllers/api/v3/loan_on_app/Form.php` **Doom library call:** `Doom::loanform($refnum, $username, $device, $card_token)` → `Doom.php:81` @@ -590,7 +474,7 @@ Struct: `usecase.LoaFormRequest` (`internal/interfaces/usecase/loa.go:20`) --- -## 4. `POST /api/v1/cc-loan-on-app/term` +## 3. `POST /api/v1/cc-loan-on-app/term` **Erangel route:** `POST /v3-cc-loan-on-app-term` → `erangel/application/controllers/api/v3/loan_on_app/Term.php` **Doom library call:** `Doom::loanterm($refnum, $username, $device, $card_token, $amount)` → `Doom.php:95` @@ -685,7 +569,7 @@ Struct: `usecase.LoaTermRequest` (`internal/interfaces/usecase/loa.go:104`) --- -## 5. `POST /api/v1/cc-loan-on-app/send-otp` +## 4. `POST /api/v1/cc-loan-on-app/send-otp` **Erangel route:** `POST /v3-cc-loan-on-app-send-otp` → `erangel/application/controllers/api/v3/loan_on_app/Send_otp.php` **Doom library call:** `Doom::loansendotp($refnum, $username, $device, $otp_type)` → `Doom.php:134` @@ -791,7 +675,7 @@ Doom fetches the user's phone number from **Vikendi** (via `username`), then pro --- -## 6. `POST /api/v1/cc-loan-on-app/submit-otp` +## 5. `POST /api/v1/cc-loan-on-app/submit-otp` **Erangel route:** `POST /v3-cc-loan-on-app-submit-otp` → `erangel/application/controllers/api/v3/loan_on_app/Submit_otp.php` **Doom library call:** `Doom::loansubmitotp($refnum, $username, $device, $server_id, $otp, $otp_type)` → `Doom.php:TBD` @@ -903,7 +787,7 @@ A failed validate returns immediately — cipher's `code`/`desc` forwarded 1:1 t --- -## 7. `POST /api/v1/cc-loan-on-app/submit` +## 6. `POST /api/v1/cc-loan-on-app/submit` **Erangel route:** `POST /v3-cc-loan-on-app-submit` → `erangel/application/controllers/api/v3/loan_on_app/Submit.php` **Doom library call:** `Doom::loansubmit($refnum, $username, $device, $card_token, $amount, $simulation_code, $account_no, $account_name, $term, $interest_rate, $monthly_payment, $admin_fee, $pin)` → `Doom.php:110` @@ -1046,7 +930,7 @@ Struct: `usecase.LoaSubmitRequest` (`internal/interfaces/usecase/loa.go:131`) --- -## 8. `GET /healthz` +## 7. `GET /healthz` Health check. Defined in `internal/delivery/http/http.go:47`. Returns literal `"ok"`.