使用 UPI url 调用 PSP 应用程序
Posted
技术标签:
【中文标题】使用 UPI url 调用 PSP 应用程序【英文标题】:Invoke PSP app with UPI url 【发布时间】:2017-01-16 00:14:29 【问题描述】:我正在尝试创建一个商家应用程序,它将根据 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 刚刚发布,我无法通过 Internet 获得好的资源。
注意 - 在 url 中,tid(transaction id) 是在我的应用程序中生成的随机 uuid。
【问题讨论】:
【参考方案1】:找到了正确的方法。 您需要以问题中提到的正确方式构建 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 和响应代码。
此外,网址中的空格应替换为“+”而不是“%”。
【讨论】:
intent.setData(Uri.parse(UPI))中的UPI是什么; 这是需要创建的url,然后用于调用PSP应用程序。 感谢您的回答。我还有一个查询..正如 UPI 文档中所指定的那样,任何商家都可以生成上述 URL,并通过邮件或任何聊天应用程序将其发送给用户。所以我尝试通过邮件发送 URL,但它不可点击。 ..因此我设备中所有 UPI 应用程序的选择器对话框不会弹出...但是扫描相同 URL 的 qr 码会得到所需的结果..所以我要问的是如何使这些 URL 在邮件或社交消息应用 你有什么答案吗@deep 对不起,伙计。从未尝试过。我现在在后端工作,超级忙:(如果我找到答案,我会确保发布它。但我相信你能找到。让我们知道:)【参考方案2】:为了让应用程序显示为 UPI 意图接收器,它需要在其清单文件中注册此 UPI uri,以便它可以收听其他应用程序抛出的这种类型的广播意图。 通过网络尝试过,我能够调出“Phone Pe”应用程序来支付该特定应用程序的费用。我的手机中也安装了 Bhim 和 Icici,但它们没有出现,并且默认情况下会显示“Phone Pe”,所以我假设他们没有向他们注册 UPI uri Intent。
编辑:android 应用程序到应用程序我可以打开 Phone Pe 和 BHIM,我猜 ICICI 应用程序没有注册这个意图,所以它没有出现。
【讨论】:
如果您使用网络中的超链接启动 BHIM 或 Phone Pe 等应用程序,如何在交易后获得响应? 通常你的网络应用程序会等待,一旦你的服务器收到来自 PSP 的支付完成的回调 HIT,它会通知前端支付完成并立即执行任何必要的操作。 感谢您的回答,但我们如何定义我打算从 PSP 接收点击的网址? @SamarthAgarwal 如何从桌面网站调用 upi 应用程序?以上是关于使用 UPI url 调用 PSP 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
使用 URL 方案的 Google Pay UPI 集成 - iOS