124 lines
3.6 KiB
Markdown
124 lines
3.6 KiB
Markdown
# MIB Account Lookup Routing
|
|
|
|
Before initiating a transfer, the recipient input must be resolved to a verified account name and
|
|
account number. Three different endpoints are used depending on the format of the input.
|
|
|
|
## Input Format Routing
|
|
|
|
| Input format | Endpoint | Body field |
|
|
|-------------------------------------------|---------------------------------------|-----------------|
|
|
| Starts with `7`, exactly 13 digits | `AjaxAlias/getIPSAccount` | `benefAccount` |
|
|
| Starts with `9`, exactly 17 digits | `ajaxBeneficiary/getAccountName` | `accountNo` |
|
|
| Starts with `7` or `9`, exactly 7 digits | `AjaxAlias/getAlias` | `aliasName` |
|
|
| Starts with `A` followed by 6 digits | `AjaxAlias/getAlias` | `aliasName` |
|
|
| Email address (contains `@`) | `AjaxAlias/getAlias` | `aliasName` |
|
|
|
|
All endpoints share the same WebView session auth (see `contacts.md` for cookie format) and use
|
|
`Referer: https://faisamobilex-wv.mib.com.mv/transfer/quick`.
|
|
|
|
---
|
|
|
|
## Endpoint Details
|
|
|
|
### 1. IPS Account Lookup — Local / BML accounts (13 digits, starts with 7)
|
|
|
|
**POST** `https://faisamobilex-wv.mib.com.mv/AjaxAlias/getIPSAccount`
|
|
|
|
Body: `benefAccount=7700000000000` (13 digits)
|
|
|
|
**Success response:**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"responseCode": "2",
|
|
"reasonCode": "201",
|
|
"reasonText": "Request Successful. Account Found",
|
|
"accountName": "ACCOUNT HOLDER NAME",
|
|
"bankBic": "MALBMVMV"
|
|
}
|
|
```
|
|
|
|
Fields used:
|
|
- `accountName` — account holder name
|
|
- `bankBic` — bank SWIFT/BIC code
|
|
|
|
The account number is already known from the input; it is not returned in the response.
|
|
|
|
---
|
|
|
|
### 2. MIB Internal Account Name Lookup — MIB accounts (17 digits, starts with 9)
|
|
|
|
**POST** `https://faisamobilex-wv.mib.com.mv/ajaxBeneficiary/getAccountName`
|
|
|
|
Body: `accountNo=90100000000000000` (17 digits)
|
|
|
|
**Success response** (exact structure to be confirmed):
|
|
```json
|
|
{
|
|
"success": true,
|
|
"responseCode": "1",
|
|
"reasonText": "Account found",
|
|
"accountName": "ACCOUNT HOLDER NAME"
|
|
}
|
|
```
|
|
|
|
Fields used:
|
|
- `accountName` — account holder name (check at root level or inside `data` object)
|
|
|
|
The account number is already known from the input; bank is always MIB (`MADVMVMV`).
|
|
|
|
---
|
|
|
|
### 3. Favara Alias Lookup — Shortcodes, A-IDs, emails
|
|
|
|
**POST** `https://faisamobilex-wv.mib.com.mv/AjaxAlias/getAlias`
|
|
|
|
Body: `aliasName=<alias>`
|
|
|
|
Accepted alias formats:
|
|
- `7` or `9` followed by 6 digits → e.g. `7012345`, `9198026`
|
|
- `A` followed by 6 digits → e.g. `A123456`
|
|
- Email address → e.g. `user@example.com`
|
|
|
|
**Success response:**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"responseCode": "2",
|
|
"reasonCode": "203",
|
|
"reasonText": " Favara ID found",
|
|
"data": {
|
|
"TxId": "BANK00001",
|
|
"CdtrAcct": {
|
|
"Acct": "90100000000000000",
|
|
"FinInstnId": "MADVMVMV"
|
|
},
|
|
"BfyNm": "Account Holder Name",
|
|
"RegDtTm": "2023-01-01T00:00:00"
|
|
}
|
|
}
|
|
```
|
|
|
|
Fields used from `data`:
|
|
- `BfyNm` — beneficiary name (trim whitespace)
|
|
- `CdtrAcct.Acct` — resolved account number to use for the transfer
|
|
- `CdtrAcct.FinInstnId` — bank institution ID
|
|
|
|
---
|
|
|
|
## Error Handling
|
|
|
|
All three endpoints return `"success": false` on failure with a human-readable `reasonText`:
|
|
|
|
```json
|
|
{
|
|
"success": false,
|
|
"responseCode": "0",
|
|
"reasonText": "Account not found"
|
|
}
|
|
```
|
|
|
|
- Always show `reasonText` directly to the user as the error message.
|
|
- For non-200 HTTP responses, also attempt to parse `reasonText` from the body before falling back to a generic error.
|
|
- If the input does not match any known format, reject it client-side before making any request.
|