diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/PayWithCardFragment.kt b/app/src/main/java/sh/sar/basedbank/ui/home/PayWithCardFragment.kt
index 1f5afbb..d526d8a 100644
--- a/app/src/main/java/sh/sar/basedbank/ui/home/PayWithCardFragment.kt
+++ b/app/src/main/java/sh/sar/basedbank/ui/home/PayWithCardFragment.kt
@@ -87,7 +87,32 @@ class CardsFragment : Fragment() {
R.id.nav_transfer, TransferFragment.newInstanceFromBmlQr(bmlUrl ?: raw, pendingQrAccountNumber)
)
} else {
- Toast.makeText(requireContext(), R.string.transfer_qr_invalid, Toast.LENGTH_SHORT).show()
+ val qr = PaymvQrParser.parse(raw)
+ if (qr?.accountNumber != null) {
+ // PayMV QR — cards are not supported for this payment type.
+ // Navigate to transfer with the recipient pre-filled; use default account if configured.
+ Toast.makeText(requireContext(), R.string.card_qr_paymv_unsupported, Toast.LENGTH_SHORT).show()
+ val defaultFromNumber = store.getDefaultAccountNumber()
+ val fragment = if (defaultFromNumber != null) {
+ TransferFragment.newInstanceFromQrWithFrom(
+ accountNumber = qr.accountNumber,
+ displayName = qr.merchantName ?: qr.accountNumber,
+ amount = qr.amount,
+ remarks = qr.purpose,
+ fromAccountNumber = defaultFromNumber
+ )
+ } else {
+ TransferFragment.newInstanceFromQr(
+ accountNumber = qr.accountNumber,
+ displayName = qr.merchantName ?: qr.accountNumber,
+ amount = qr.amount,
+ remarks = qr.purpose
+ )
+ }
+ (requireActivity() as HomeActivity).navigateTo(R.id.nav_transfer, fragment)
+ } else {
+ Toast.makeText(requireContext(), R.string.transfer_qr_invalid, Toast.LENGTH_SHORT).show()
+ }
}
pendingQrAccountNumber = null
}
diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/TransferFragment.kt b/app/src/main/java/sh/sar/basedbank/ui/home/TransferFragment.kt
index ae5e16a..709eeab 100644
--- a/app/src/main/java/sh/sar/basedbank/ui/home/TransferFragment.kt
+++ b/app/src/main/java/sh/sar/basedbank/ui/home/TransferFragment.kt
@@ -202,6 +202,24 @@ class TransferFragment : Fragment() {
if (remarks != null) putString(ARG_REMARKS_PREFILL, remarks)
}
}
+
+ fun newInstanceFromQrWithFrom(
+ accountNumber: String,
+ displayName: String,
+ amount: String?,
+ remarks: String?,
+ fromAccountNumber: String
+ ) = TransferFragment().apply {
+ arguments = Bundle().apply {
+ putString(ARG_ACCOUNT, accountNumber)
+ putString(ARG_NAME, displayName)
+ putString(ARG_SUBTITLE, accountNumber)
+ putString(ARG_COLOR, "#607D8B")
+ putString(ARG_FROM_ACCOUNT, fromAccountNumber)
+ if (amount != null) putString(ARG_AMOUNT_PREFILL, amount)
+ if (remarks != null) putString(ARG_REMARKS_PREFILL, remarks)
+ }
+ }
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 11c1b7a..7dd66d0 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -241,6 +241,7 @@
Scan to Pay
Pick image
Invalid or unsupported QR code
+ PayMV QR is not supported for card payments — switching to transfer
Camera permission required
Camera access is needed to scan QR codes. Please grant the permission in Settings.
Camera access is needed to take a photo. Please grant the permission in Settings.