使用Intent的UPI App深层链接-不一致和错误的行为

Har*_*thi 7 android android-intent upi

我已经使用意图从我的Android本机应用程序对UPI应用程序进行了深度链接。我已经使用各种UPI应用程序(例如BHIM,PhonePe,AXIS,UnionBank,Pockets等)对此进行了测试。

我创建了推送付款URI。我能够启动各种UPI应用程序。但是,行为是非常不一致的。

“ upi:// pay?pa=xxxxx@upi&pn=payee&am=5.00&tn=Test_Transaction”

  1. 调用意图后,大多数应用程序都在响应。他们被发射了。
  2. 很少有应用正确显示付款页面的金额。其余应用程序根本不显示该页面。PhonePe,显示轴。BHIM未显示付款页面
  3. 仅由PhonePay和Axis成功完成付款
  4. UPI付款成功完成后,UPI应用程序将关闭,控制权将返回到我的应用程序。但是,响应数据始终为NULL。付款成功后,应用程式无人提供回应资料
  5. 如果付款失败,或者我在UPI应用程序中取消付款,或者我没有输入正确的PIN并关闭UPI应用程序,则大多数应用程序都不会返回响应数据。
  6. 仅AXISPay返回的响应数据:Intent {((具有附加功能)}

任何人-有何评论?为什么会有如此不一致的行为?

令人惊讶的是,深层链接不适用于BHIM应用。

如果有人想尝试,我可以共享android代码。

Mee*_*eet 10

它确实也适用于BHIM应用程序。使用此代码,对于每个启用PSP的应用程序,它就像一个魅力。

注意:最好不要使用“ +”替换URL中的空格,而最好使用“%”。效果更好。

private String getUPIString(String payeeAddress, String payeeName, String payeeMCC, String trxnID, String trxnRefId,
                            String trxnNote, String payeeAmount, String currencyCode, String refUrl) {
    String UPI = "upi://pay?pa=" + payeeAddress + "&pn=" + payeeName
            + "&mc=" + payeeMCC + "&tid=" + trxnID + "&tr=" + trxnRefId
            + "&tn=" + trxnNote + "&am=" + payeeAmount + "&cu=" + currencyCode
            + "&refUrl=" + refUrl;
    return UPI.replace(" ", "+");
}
Run Code Online (Sandbox Code Playgroud)

然后在方法中传递参数,并以这种方式将字符串传递给Intent:

Intent intent = new Intent();
            intent.setAction(Intent.ACTION_VIEW);
            intent.setData(Uri.parse(UPI));
            Intent chooser = Intent.createChooser(intent, "Pay with...");
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                startActivityForResult(chooser, 1, null);
            }
Run Code Online (Sandbox Code Playgroud)

  • 有用。但是你能告诉我上面 URI 中 refUrl=" + refUrl 的确切用法吗 (2认同)

Ris*_*hra 0

为了正确显示付款页面,您必须setAction(Intent.ACTION_VIEW)按照您的意图进行。

getStringsExtra("response")我仅通过使用Intent 数据从 BHIM 应用程序获得响应。