This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# 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.
|
||||
The transfer screen initiates account-to-account fund transfers and phone payments. It supports MIB, BML, Fahipay and M-Faisa as sources and handles all bank-specific authentication and OTP steps. A phone number can also be paid as a carrier service (reload, Raastas, bill pay) from the Fahipay wallet or, for Dhiraagu Reload, a verified BML card.
|
||||
|
||||
---
|
||||
|
||||
@@ -38,11 +38,12 @@ A dropdown lists all visible accounts parsed via `AccountListParser.from(acc)?.b
|
||||
|
||||
## Recipient Entry
|
||||
|
||||
The user can specify a recipient in three ways:
|
||||
The user can specify a recipient in these ways:
|
||||
|
||||
1. **Manual entry** — type an account number directly
|
||||
2. **Contact picker** — opens `ContactPickerSheetFragment` to select a saved contact
|
||||
1. **Manual entry** — type an account number or phone number directly
|
||||
2. **Contact picker** — opens `ContactPickerSheetFragment` to select a saved contact. A Fahipay favourite opens as its payout service straight away
|
||||
3. **QR scan** — launches [QrScannerActivity](25-qr-scanner.md); a PayMV QR result pre-fills the account number, amount, and remarks; a BML ebanking / pay.bml URL switches the form into [BML QR merchant payment](20-transfer-flows.md#bml-qr-merchant-payment-flow) mode
|
||||
4. **BML Merchant Services transaction ID or link** — paid through BML Pay (QR flow) or, for card-only merchants, a verified card ([Card Verification & Merchant Card Pay](29-card-verification-and-merchant-card-pay.md))
|
||||
|
||||
---
|
||||
|
||||
@@ -64,10 +65,22 @@ After the user finishes entering a recipient account number, the app calls the s
|
||||
|
||||
- **MIB**: account name lookup via MIB API
|
||||
- **BML**: beneficiary lookup via BML API
|
||||
- **Fahipay**: account name resolution via Fahipay API
|
||||
- **Fahipay**: phone numbers only — the Dhiraagu / Ooredoo carrier lookup decides which payout services apply
|
||||
|
||||
The resolved name is displayed below the account number field for the user to confirm.
|
||||
|
||||
### Phone numbers — Transfer Type picker
|
||||
|
||||
A phone number searched with no source yet (or from a BML card that can pay by card) is looked up every way it can be paid, in parallel: Favara (MIB / BML), and the carrier lookup when the user has a Fahipay wallet or a verified BML card. Each result is a **transfer type**:
|
||||
|
||||
| Type | Example | Pays from |
|
||||
|---|---|---|
|
||||
| Favara Transfer | bank account behind the number | MIB or BML account |
|
||||
| Fahipay service | Raastas, Ooredoo Bill Pay, Dhiraagu Reload, Dhiraagu Bill Pay | Fahipay wallet |
|
||||
| Card service | Dhiraagu Reload (BML badge) | Verified BML card |
|
||||
|
||||
One option is applied straight away; with more, a picker opens and Send stays disabled until one is chosen. Picking a type also picks a source that can pay it. Fahipay and card services clear and disable the Remarks field and apply their own amount rules (minimum, maximum, whole amounts, 8% GST note). Details: [Transfer Flows → Transfer Type picker](20-transfer-flows.md#transfer-type-picker).
|
||||
|
||||
---
|
||||
|
||||
## Biometric Gate
|
||||
@@ -100,18 +113,33 @@ When the source is a BML USD account and the destination is a MIB account but no
|
||||
5. Re-submits with OTP
|
||||
6. On success, shows `TransferReceiptFragment`
|
||||
|
||||
### Fahipay Transfer
|
||||
### Fahipay Payout (reload, Raastas, bill pay)
|
||||
|
||||
1. Validates fields
|
||||
2. (If biometric gate) prompts biometrics
|
||||
3. Submits via Fahipay API using stored `authID` + session cookie
|
||||
4. On success, shows `TransferReceiptFragment`
|
||||
1. Checks the amount against the picked service's rules
|
||||
2. Confirm dialog (with the GST note for Raastas), then the biometric gate if enabled
|
||||
3. One POST to the service's Fahipay payment endpoint ([Fahipay API → Payments](../fahipayapi/09-payments.md))
|
||||
4. On success, the result shows inside the dialog (no receipt page yet), then the form clears
|
||||
|
||||
See [Transfer Flows → Fahipay source](20-transfer-flows.md#fahipay-source).
|
||||
|
||||
### Carrier Service by BML Card (Dhiraagu Reload)
|
||||
|
||||
1. Checks the amount against Dhiraagu's rules (MVR 20–1000, whole amounts, 8% GST included)
|
||||
2. A "Processing..." dialog shows while Dhiraagu creates the order and its BML merchant transaction ([Dhiraagu API → Reload](../dhiraaguapi/02-reload.md))
|
||||
3. From there it is the card-only merchant flow: the same confirm dialog and warning, biometric gate, card + 3-D Secure payment, and the return to Dhiraagu (`?wait=1`) that tops the number up
|
||||
4. On success, the result shows inside the dialog; if Dhiraagu couldn't be notified, a toast gives the BML transaction id
|
||||
|
||||
See [Transfer Flows → Carrier services by BML card](20-transfer-flows.md#carrier-services-by-bml-card).
|
||||
|
||||
### BML Merchant Payment (QR / card-only link)
|
||||
|
||||
A BML QR, or a BML Merchant Services link whose merchant takes BML Pay, is paid from a BML card through the QR flow. A card-only merchant link is paid with a verified card (Pomelo + 3-D Secure), followed by the return to the merchant. Neither saves a receipt. See [Transfer Flows → BML QR Merchant Payment Flow](20-transfer-flows.md#bml-qr-merchant-payment-flow) and [Card Verification & Merchant Card Pay](29-card-verification-and-merchant-card-pay.md).
|
||||
|
||||
---
|
||||
|
||||
## Transfer Receipt
|
||||
|
||||
On success the fragment navigates to `TransferReceiptFragment` passing the completed transfer details.
|
||||
On success of a bank transfer (MIB, BML, M-Faisa) the fragment navigates to `TransferReceiptFragment` passing the completed transfer details. Fahipay payouts, card services and merchant payments show their result inside the confirm dialog instead.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user