6

我正在尝试创建一个商家应用程序,它将根据 NPCI 的指南生成一个 url。此 url 将作为意图共享,并且 PSP 应用程序(任何注册的银行应用程序)应该能够侦听该 url 并被调用。

我已经形成了这样的网址:-

upi://pay?pa=icici/name&pn=USER_NAME&tid=422d97c1-f0fc-4bea-b24a-511ffa85e86f&am=442.87&tn=Test%transaction

现在我发送这样的意图:-

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, UPI);
sendIntent.setType("text/plain");
startActivity(sendIntent);

Icici 银行应用程序未显示在接收方应用程序中。我是否正确创建了网址?

UPI 是最近发布的,我无法通过互联网获得好的资源。

注意 - 在 url 中,tid(transaction id) 是在我的应用程序中生成的随机 uuid。

4

2 回答 2

7

找到了正确的方法来做到这一点。您需要以问题中提到的正确方式构建 URL。之后,必须将此 URL 转换为 URI 并作为数据发送到意图。

Intent intent = new Intent();
intent.setData(Uri.parse(UPI));
Intent chooser = Intent.createChooser(intent, "Pay with...");
startActivityForResult(chooser, 1, null);

之后,在您的 onActivityResult 中,检查 requestCode 和 id 收到的预期数据是否为空。如果不是,那么数据将包含一个 stringExtra 作为response。此响应将包含状态、交易参考、transactionId 和响应代码。

此外,网址中的空格应替换为“+”而不是“%”。

于 2016-09-14T06:55:53.097 回答
0

为了让应用程序显示为 UPI 意图接收器,它需要在其清单文件中注册此 UPI uri,以便它可以收听其他应用程序抛出的这种类型的广播意图。通过网络尝试过,我能够调出“Phone Pe”应用程序来支付该特定应用程序的费用。我的手机中也安装了 Bhim 和 Icici,但它们没有出现,并且默认情况下会显示“Phone Pe”,所以我假设他们没有向他们注册 UPI uri Intent。

编辑:Android 应用程序到应用程序我可以打开 Phone Pe 和 BHIM,我猜 ICICI 应用程序没有注册这个意图,所以它没有出现。

于 2017-05-02T09:03:10.830 回答