Content:
Description
Currently, when a user scans a UPI QR code, the app correctly extracts the UPI ID. However, when the payment is initiated, the USSD flow still prompts the user with a dialog asking to "Enter UPI ID".
Even if the Accessibility Service eventually auto-fills this, the user is forced to see and wait for a manual-style prompt. This behavior contradicts the logic of scanning a QR code, which is intended to be a shortcut that skips recipient identification entirely (similar to how Google Pay or PhonePe work).
Analysis
The issue stems from two areas:
Generic Dialing: The app calls 991# in MainActivity.kt. This lands the user on the top-level "Send Money" menu, requiring multiple subsequent steps to select "UPI ID" and then enter the ID.
Lack of Direct Bypass: If a QR contains a mobile-linked UPI ID (e.g., 87082*****@ptaxis), the app could bypass the "Enter UPI ID" prompt entirely by using a direct USSD dial string.
Steps to Reproduce
- Open the app and scan any valid UPI QR code.
- Enter an amount and your UPI PIN.
- Click "Pay".
Actual Result: A system USSD dialog appears asking for the "UPI ID" (and sometimes the "Send Money" menu choices), despite the QR having already provided this.
Expected Behavior
The flow should be Scan -> Amount -> PIN -> Done. The USSD interaction should be hidden or bypassed using "Deep Link" USSD strings. As long as the ID is captured via QR, the user should never see a USSD prompt asking for it again.
Proposed Solution
Update the initiatePayment function to use direct USSD dialing based on the recipient type:
Extract Mobile Number: If the UPI ID is mobile-based (contains a 10-digit number), extract it.
Direct Dialing:
For Mobile Recipient: Dial 9911<MOBILE_NUMBER># to go straight to the Amount prompt.
For UPI ID Recipient: Dial 991*3# to skip the initial menu and land directly on the ID prompt (which the service should fill instantly).

Content:
Description
Currently, when a user scans a UPI QR code, the app correctly extracts the UPI ID. However, when the payment is initiated, the USSD flow still prompts the user with a dialog asking to "Enter UPI ID".
Even if the Accessibility Service eventually auto-fills this, the user is forced to see and wait for a manual-style prompt. This behavior contradicts the logic of scanning a QR code, which is intended to be a shortcut that skips recipient identification entirely (similar to how Google Pay or PhonePe work).
Analysis
The issue stems from two areas:
Generic Dialing: The app calls 991# in MainActivity.kt. This lands the user on the top-level "Send Money" menu, requiring multiple subsequent steps to select "UPI ID" and then enter the ID.
Lack of Direct Bypass: If a QR contains a mobile-linked UPI ID (e.g., 87082*****@ptaxis), the app could bypass the "Enter UPI ID" prompt entirely by using a direct USSD dial string.
Steps to Reproduce
Actual Result: A system USSD dialog appears asking for the "UPI ID" (and sometimes the "Send Money" menu choices), despite the QR having already provided this.
Expected Behavior
The flow should be Scan -> Amount -> PIN -> Done. The USSD interaction should be hidden or bypassed using "Deep Link" USSD strings. As long as the ID is captured via QR, the user should never see a USSD prompt asking for it again.
Proposed Solution
Update the initiatePayment function to use direct USSD dialing based on the recipient type:
Extract Mobile Number: If the UPI ID is mobile-based (contains a 10-digit number), extract it.
Direct Dialing:
For Mobile Recipient: Dial 9911<MOBILE_NUMBER># to go straight to the Amount prompt.
For UPI ID Recipient: Dial 991*3# to skip the initial menu and land directly on the ID prompt (which the service should fill instantly).