forked from shihaam/thijooree
update docs
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
# Transfer
|
||||
|
||||
The transfer screen initiates account-to-account fund transfers. It supports MIB, BML, and Fahipay as source banks and handles all bank-specific authentication and OTP steps.
|
||||
|
||||
---
|
||||
|
||||
## Fragment — `TransferFragment`
|
||||
|
||||
Opened via:
|
||||
- Navigation menu
|
||||
- Quick-transfer button on an account row (source pre-selected)
|
||||
- `OPEN_TRANSFER` intent action
|
||||
- QR scan result (recipient and optional amount pre-filled)
|
||||
|
||||
---
|
||||
|
||||
## Source Account Selection
|
||||
|
||||
A dropdown lists all visible accounts parsed via `AccountListParser.from(acc)?.balance`. The selected source account determines which bank's transfer flow is used.
|
||||
|
||||
---
|
||||
|
||||
## Recipient Entry
|
||||
|
||||
The user can specify a recipient in three ways:
|
||||
|
||||
1. **Manual entry** — type an account number directly
|
||||
2. **Contact picker** — opens `ContactPickerSheetFragment` to select a saved contact
|
||||
3. **QR scan** — opens the camera scanner; a PayMV QR result pre-fills the account number, amount, and remarks
|
||||
|
||||
---
|
||||
|
||||
## Fields
|
||||
|
||||
| Field | Notes |
|
||||
|---|---|
|
||||
| Source account | Dropdown; balance shown below |
|
||||
| Recipient account number | Text input or filled from contact/QR |
|
||||
| Recipient name | Auto-looked up from bank API after account number entry |
|
||||
| Amount | Numeric; pre-filled from QR if available |
|
||||
| Remarks / purpose | Free text; pre-filled from QR if available |
|
||||
|
||||
---
|
||||
|
||||
## Recipient Lookup
|
||||
|
||||
After the user finishes entering a recipient account number, the app calls the source bank's name-lookup API:
|
||||
|
||||
- **MIB**: account name lookup via MIB API
|
||||
- **BML**: beneficiary lookup via BML API
|
||||
- **Fahipay**: account name resolution via Fahipay API
|
||||
|
||||
The resolved name is displayed below the account number field for the user to confirm.
|
||||
|
||||
---
|
||||
|
||||
## Biometric Gate
|
||||
|
||||
If biometric-for-transfers is enabled in Settings → Security, `BiometricPrompt` is shown before the transfer is submitted. A failed or cancelled biometric blocks submission.
|
||||
|
||||
---
|
||||
|
||||
## Bank-Specific Flows
|
||||
|
||||
### MIB Transfer
|
||||
|
||||
1. Validates fields
|
||||
2. (If biometric gate) prompts biometrics
|
||||
3. Submits transfer via `MibLoginFlow` using active MIB session (serialized through `mibMutex`)
|
||||
4. On success, shows `TransferReceiptFragment`
|
||||
|
||||
### BML Transfer
|
||||
|
||||
1. Validates fields
|
||||
2. (If biometric gate) prompts biometrics
|
||||
3. Initiates BML transfer — server responds with OTP required
|
||||
4. Navigates to `OtpFragment` to collect the TOTP
|
||||
5. Re-submits with OTP
|
||||
6. On success, shows `TransferReceiptFragment`
|
||||
|
||||
### Fahipay Transfer
|
||||
|
||||
1. Validates fields
|
||||
2. (If biometric gate) prompts biometrics
|
||||
3. Submits via Fahipay API using stored `authID` + session cookie
|
||||
4. On success, shows `TransferReceiptFragment`
|
||||
|
||||
---
|
||||
|
||||
## Transfer Receipt
|
||||
|
||||
On success the fragment navigates to `TransferReceiptFragment` passing the completed transfer details.
|
||||
|
||||
---
|
||||
|
||||
## Error Handling
|
||||
|
||||
All bank API errors are shown as a `Snackbar` or inline error message. Session expiry triggers a re-authentication prompt rather than a crash.
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
[← Transfer History](06-transfer-history.md) **Next →** [Contacts](08-contacts.md)
|
||||
Reference in New Issue
Block a user