调用 Intent 加载 UPI Payment App 时出现异常:android.content.ActivityNotFoundException: No Activity found to h

Posted

技术标签:

【中文标题】调用 Intent 加载 UPI Payment App 时出现异常:android.content.ActivityNotFoundException: No Activity found to handle Intent【英文标题】:Exception when calling Intent to load UPI Payment App : android.content.ActivityNotFoundException: No Activity found to handle Intent 【发布时间】:2017-05-25 06:10:44 【问题描述】:

我正在尝试使用来自 android IONIC(javascript) 应用程序的 UPI 发起付款

我得到以下异常

android.content.ActivityNotFoundException:未找到处理 Intent 的 Activity act=android.intent.action.SEND dat=upi://pay?pa=recipient@hdfc&pn=recipient_name&am=102.00&tn =Test_Transaction

01-10 21:58:32.334 E/PluginManager(29853):在 android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1792)

01-10 21:58:32.334 E/PluginManager(29853): 在 android.app.Instrumentation.execStartActivity(Instrumentation.java:1512)

我的设备上有 3 个启用 UPI 的应用程序:Yes bank 的 BHIM 和 PhonePe 以及 ICICI 的 iMobile

这是一段代码

  window.plugins.webintent.startActivity(
      action: window.plugins.webintent.ACTION_VIEW,
      url: upiUrl
    ,
    function()
    
      console.log("After calling startActivity");
    ,
    function() 
      console.log("Failed to open URL via Android Intent. URL: " + upiUrl)
    
  );

【问题讨论】:

你也应该发送tid。 【参考方案1】:

您可以创建自定义插件并使用 Intent 代码。下面是我为Expense Sharing Cordova App 编写的代码。您可以使其适合 IONIC。

cordova.getThreadPool().execute(new Runnable() 
            @Override
            public void run() 
                if(Build.VERSION.SDK_INT<16)
                    callbackContext.error("This feature is available only for Android version Jelly Bean and higher");
                    return;
                
                try 
                    JSONObject jo = data.getJSONObject(0);
                    String upi_vpa = jo.getString("upi_vpa");
                    String name = jo.getString("name");
                    String UPI = "upi://pay?pa="+upi_vpa+"&pn="+name+"&tn=#Repay-GCF&cu=INR";
                    Intent intent = new Intent();
                    intent.setAction(Intent.ACTION_VIEW);
                    intent.setData(Uri.parse(UPI));
                    Intent chooser = Intent.createChooser(intent, "Send Money with...");
                    cordova.getActivity().startActivityForResult(chooser, MainActivity.UPI_PAY_REQUEST, null);
                catch (JSONException e)
                    e.printStackTrace();
                
            
        );

【讨论】:

谢谢 Sandeep UPI 应用程序的响应如何。 UPI 应用程序是否会说 BHIM 将返回成功失败,如 UPI 深度链接文档中所述?

以上是关于调用 Intent 加载 UPI Payment App 时出现异常:android.content.ActivityNotFoundException: No Activity found to h的主要内容,如果未能解决你的问题,请参考以下文章

如何从 webhook 获得 Stripe“payment_intent.succeeded”响应以处理订单?

Laravel 中的 Google Pay 或 Phone Pay 或 Paytm UPI API 支付

将 Stripe 平台客户克隆到关联账户客户时出现问题 - 没有这样的 payment_intent: 'pi_abc...zyx'

Code=50 “No such payment_intent” 当确认条带的支付意图时

Stripe Payment Intent:更新并确认支付金额的变化

无法使用 UPI URI 调用 PSP 应用程序