I have deeplinked UPI apps from my android native app using intent. I have tested this with various UPI apps like BHIM, PhonePe, AXIS, UnionBank, Pockets etc.
I crea
public void UPI()
{
Long tsLong = System.currentTimeMillis()/1000;
String transaction_ref_id = tsLong.toString()+"UPI"; // This is your Transaction Ref id - Here we used as a timestamp -
String sOrderId= tsLong +"UPI";// This is your order id - Here we used as a timestamp -
Log.e("TR Reference ID==>",""+transaction_ref_id);
Uri myAction = Uri.parse("upi://pay?pa="+sVPA+"&pn="+"Merchant%20Finance"+"&mc="+"&tid="+transaction_ref_id +"&tr="+transaction_ref_id +"&tn=Pay%20to%20Merchant%20Finance%20Assets&am="+"1.00"+"&mam=null&cu=INR&url=https://mystar.com/orderid="+sOrderId);
PackageManager packageManager = getPackageManager();
//Intent intent = packageManager.getLaunchIntentForPackage("com.mgs.induspsp"); // Comment line - if you want to open specific application then you can pass that package name For example if you want to open Bhim app then pass Bhim app package name -
Intent intent = new Intent();
if (intent != null) {
intent.setAction(Intent.ACTION_VIEW);
intent.setData(myAction);
// startActivity(intent);
Intent chooser = Intent.createChooser(intent, "Pay with...");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
startActivityForResult(chooser, 1, null);
}
}
}
// For onActivityResult -
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
try
{
Log.e("UPI RESULT REQUEST CODE-->",""+requestCode);
Log.e("UPI RESULT RESULT CODE-->",""+resultCode);
Log.e("UPI RESULT DATA-->",""+data);
if(resultCode == -1)
{
// 200 Success
}
else
{
// 400 Failed
}
YourActivity.this.finish();
}
catch(Exception e)
{
Log.e("Error in UPI onActivityResult->",""+e.getMessage());
}
}