intent://… URIs targeting
the app's package. See the Findings card below for what's possible and what isn't.
action=MAIN from web-originated intents, so "open this app like tapping its
icon" isn't possible from a web page — every working deep link must target a specific
<intent-filter>.
DBS PayLah! — only the
?txnref=… path opens the payment screen. PayLah's intent-filter is scheme + host only
(dbspaylah://com.dbs.paylah/*) and the in-app URI handler only processes the
txnref query param. That token is DBS-server-signed and time-limited; we tested 12+
alternate hosts and paths (/scan, /qr, /transfer,
/pay, /paynow, /send, scanqr,
scanandpay, bare, etc.) — every one either fails no-match or opens PayLah to home with
params silently discarded.
OCBC Digital, UOB TMRW — no Android App Link verification on any public domain, custom schemes don't resolve. Deliberately not exposed.
By design, not oversight. Free-form deep-link-driven
payment prefill doesn't exist on any SG bank app: if
dbspaylah://?mid=X&amount=Y popped a payment screen, anyone could phish-link a victim
into paying an attacker's MID. Merchant data only enters the apps via (a) the camera scanner — a
deliberate physical user action — or (b) a server-signed transaction reference issued via a
merchant agreement.
Feasible workarounds:
tranRef, share the URL, user taps → prefilled screen opens. The
only supported way to deep-link into PayLah with arbitrary amount + recipient.