forked from thijooree/android
add transfers
This commit is contained in:
@@ -204,7 +204,7 @@ class MibLoginFlow(private val prefs: android.content.SharedPreferences) {
|
||||
doRequest(session, payload, "n")
|
||||
}
|
||||
|
||||
private fun fetchAllProfiles(session: MibSession, profiles: List<MibProfile>, loginTag: String): List<MibAccount> {
|
||||
fun fetchAllProfiles(session: MibSession, profiles: List<MibProfile>, loginTag: String): List<MibAccount> {
|
||||
val allAccounts = mutableListOf<MibAccount>()
|
||||
for (profile in profiles) {
|
||||
val payload = baseData(session, "P47").apply {
|
||||
|
||||
@@ -33,7 +33,15 @@ data class MibAccount(
|
||||
val statusDesc: String,
|
||||
val profileImageHash: String?,
|
||||
val loginTag: String = "",
|
||||
val profileId: String = "" // MIB profile ID; empty for BML accounts
|
||||
val profileId: String = "", // MIB profile ID; empty for BML accounts
|
||||
val internalId: String = "" // BML internal UUID; empty for MIB accounts
|
||||
)
|
||||
|
||||
data class MibTransferResult(
|
||||
val success: Boolean,
|
||||
val trxId: String = "",
|
||||
val date: String = "",
|
||||
val errorMessage: String = ""
|
||||
)
|
||||
|
||||
data class MibBeneficiaryCategory(
|
||||
|
||||
@@ -33,6 +33,59 @@ class MibTransferClient {
|
||||
.header("Origin", BASE_WV_URL)
|
||||
.header("Referer", "$BASE_WV_URL/transfer/quick")
|
||||
|
||||
/**
|
||||
* Execute a transfer. bankNo=2 → MIB internal (/transferInternal), bankNo=3 → local/BML (/transferLocal).
|
||||
* currencyCode: "462"=MVR, "840"=USD. purpose uses "-" if blank.
|
||||
*/
|
||||
fun transfer(
|
||||
session: MibSession,
|
||||
fromAccount: String,
|
||||
toAccount: String,
|
||||
amount: String,
|
||||
currencyCode: String,
|
||||
benefName: String,
|
||||
bankNo: Int,
|
||||
purpose: String,
|
||||
otp: String
|
||||
): MibTransferResult {
|
||||
val endpoint = if (bankNo == 2) "transferInternal" else "transferLocal"
|
||||
val body = FormBody.Builder()
|
||||
.add("benefName", benefName)
|
||||
.add("benefNo", "0")
|
||||
.add("fromAccountNo", fromAccount)
|
||||
.add("benefAccountNo", toAccount)
|
||||
.add("transferCy", currencyCode)
|
||||
.add("benefCurrencyCode", currencyCode)
|
||||
.add("amount", amount)
|
||||
.add("bankNo", bankNo.toString())
|
||||
.add("purpose", purpose.ifBlank { "-" })
|
||||
.add("otp", otp)
|
||||
.add("otpType", "3")
|
||||
.build()
|
||||
val request = Request.Builder()
|
||||
.url("$BASE_WV_URL/ajaxTransfer/$endpoint")
|
||||
.post(body)
|
||||
.withWvHeaders(session)
|
||||
.build()
|
||||
return client.newCall(request).execute().use { response ->
|
||||
val bodyStr = response.body?.string() ?: ""
|
||||
val json = try { JSONObject(bodyStr) } catch (_: Exception) { null }
|
||||
if (json == null || !json.optBoolean("success")) {
|
||||
MibTransferResult(
|
||||
success = false,
|
||||
errorMessage = json?.optString("reasonText")?.ifBlank { null } ?: "Transfer failed"
|
||||
)
|
||||
} else {
|
||||
val data = json.optJSONArray("data")?.optJSONObject(0)
|
||||
MibTransferResult(
|
||||
success = true,
|
||||
trxId = data?.optString("trxId") ?: "",
|
||||
date = data?.optString("date") ?: ""
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Routes the lookup to the correct endpoint based on input format:
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user