Test your Android UPI integration with UPIMock!

Test your Android UPI integration with UPIMock!

1 - Download the app: https://play.google.com/store/apps/details?id=org.rhodatech.upimock

2 - Start an intent with a UPI deeplink:


private fun parseUPIResponseParameters(paramsString: String) : Map<String, String> {
    val params: MutableMap<String, String> = mutableMapOf()
    paramsString.split("&").map { paramAndValue ->
        val elements = paramAndValue.split("=")
        params[elements[0]] = elements[1]
    }
    return params
}

// Monitor the result of your UPI payment application.
private var resultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
    if (result.resultCode == Activity.RESULT_OK) {
        val data: Intent? = result.data
        val response = data?.extras?.getString("response")
        if (response != null) {
            val upiParameters = parseUPIResponseParameters(response)
            if (upiParameters.containsKey("Status") && upiParameters["Status"] == "SUCCESS") {
                // Payment successful
            } else {
                // Payment error
            }
        }
    }
}

// …


val link = "upi://pay?pa=mockeduser@mockedbanck&pn=Merchant%20Name&am=123.45&tr=1234567890&tn=Payment%20for%20transaction%201234567890&cu=INR&mode=04"
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(link))
resultLauncher.launch(intent)

3 - Choose to accept or decline the payment, then react accordingly.

Mock UPI Screenshot