如何在使用超链接集成UPI后获取响应

14
在我的iOS应用程序中,我需要接受用户的付款。我正在使用UPI进行支付。我已按照UPI提供的以下文档进行操作: http://www.npci.org.in/documents/UPI-Linking-Specs-ver-1.1_draft.pdf。 我已创建了如文档中所述的深链接。 使用UIApplication.shared.open打开深链接网址,以便在我的手机上打开任何已安装的PSP(付款服务提供商)应用程序(例如PhonePe、BHIM等)。
func payButtonClicked() {

        guard let urlString = "upi://pay?pa=samplevpa@ybl&pn=Sample Name&am=1&cu=INR".addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
            else {
                return
            }

        guard let url = URL(string: urlString) else {
            return
        }

        if !UIApplication.shared.canOpenURL(url) {
            print("url cannot be opened")
            return
        }

        UIApplication.shared.open(url, options: [:], completionHandler: { (success) in

            print(success)

        })

    }

我已经使用自定义URL schemes注册了我的应用程序,并在plist文件中添加了upi方案以进行ApplicationQueriesScheme

<array>
        <dict>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>SampleApp</string>
            </array>
            <key>CFBundleURLName</key>
            <string>com.company.SampleApp</string>
        </dict>
    </array>
    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>upi</string>
    </array>

我可以打开PSP应用程序并完成交易,但是无法从PSP应用程序获取响应。 UIApplication.shared.open 方法没有回调方法。 我需要从PSP应用程序中获取交易状态,并将其显示给用户。 感谢任何帮助。


我正在使用Cordova,并且在我的Android应用程序中获得响应,但无法从iOS调用PSP应用程序。 - Srikanth B
你找到解决方案了吗?我无法从 iOS 调用 BHIM,请帮忙,非常感谢。 - Srikanth B
你好Arun,你从UPI应用程序那里得到了回复吗?我也遇到了你在上面评论的同样的问题。我在Android中成功地收到了响应,但在IOS中没有运气。如果是的话,请指导我。谢谢 - Sumit Kumar
@Ranjit 对于IOS,目前没有更新。我有适用于Android平台的工作代码。在IOS上,UPI应用程序启动,但它们无法完成交易或返回响应。 - Sumit Kumar
@SrikanthB,您能告诉我如何在cordova中为IOS进行深度链接吗?我实际上正在使用ionic。我能够在Android(对于Paytm、Google Pay)中获得响应。 - sanjay Kumar
显示剩余7条评论
4个回答

2
根据以下工作流程,您需要与付款方/收款方PSP合作以获得有关您的付款的通知。在您的情况下,您需要与您的银行PSP联系,以便在收到付款时收到通知。
我没有看到个人发起者能够收到通知的方法。
如有错误请指正。

Workflow by UPI


一个非常有帮助的图表,可以帮助理解UPI支付工作流程的基本情况。 - Anurag

1
NPCI UPI链接规范指出,支付链接中使用的URL参数仅用于信息目的,支付应用程序可能会在点击链接时向付款人提供额外信息。链接只能由调用交易的商家或方显示交易细节。它不是回调URL或交易完成的Web钩子。

-1

您可以使用url参数通过get方法传递您的网站url,其中包含订单id或付款id作为参数。一旦付款成功,UPI提供商就必须访问该URL。

URL的目的应该是不断更新交易状态并触发最终用户的电子邮件或短信,以显示交易状态。


-1

我没有尝试过,但在文档中提到了一个URL参数,点击后我们应该向用户显示交易明细。

当单击时,此URL应为一个URL,可向客户提供更多交易详细信息,如完整的账单详细信息、账单副本、订单副本、票据详细信息等。这也可以用于在付款后提供数字商品,如mp3文件等。

我们可以发送一个带有URL方案的URL或者是一个通用链接,以便我们的应用程序进行处理。

再次说明,我没有尝试过,因此不知道它是否像我认为的那样有效,或者它是否能够完全解决您的问题。

https://www.npci.org.in/sites/all/themes/npcl/images/PDF/UPI_Linking_Specs_ver_1.5.1.pdf


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接