在我的iOS应用程序中,我需要接受来自用户的付款。我正在使用UPI。我遵循了UPI提供的以下文件
http://www.npci.org.in/documents/UPI-Linking-Specs-ver-1.1_draft.pdf
我已经创建了文档中所述的深层链接。 UIApplication.shared.open
用于打开deeplink网址,以便在我的手机中打开任何已安装的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方案注册了我的应用程序,并在plist文件中为ApplicationQueriesScheme添加了方案upi
<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应用程序返回事务的状态并向用户显示状态。任何帮助表示赞赏
答案 0 :(得分:1)
NPCI UPI 链接规范指出,支付链接中使用的URL 参数用于信息目的,支付应用可以用于向付款人点击链接提供附加信息。
该链接仅应显示调用交易的商家或一方的交易详细信息。
它不是回调 URL 或完成交易的网络钩子。
答案 1 :(得分:0)
没有尝试过,但文档中提到了点击的url参数,我们应该向用户显示交易详情。
点击后,这应该是一个URL,为客户提供更多信息 交易详情,如完整的账单明细,账单复印,订单 复制,票务详细信息等。这也可用于提供数字 付款后,如mp3文件等商品。
我们可以发送一个带有重定向到应用的网址方案的网址或我们的应用可以处理的通用链接。
我再次尝试过这一点,所以我不知道这是否有效,或者它是否能解决你的问题。
https://www.npci.org.in/sites/all/themes/npcl/images/PDF/UPI_Linking_Specs_ver_1.5.1.pdf
答案 2 :(得分:0)
根据以下工作流程,您需要与付款人/收款人 PSP 合作才能收到付款通知。在您的情况下,您需要与您的银行 PSP 核实,以便在您的账户收到付款收据时收到通知。
我看不到个人发起人获得通知的方式。
请随时纠正我。
答案 3 :(得分:-1)
您可以使用url参数,以带有订单ID或付款ID为参数的get方法传递您的网站URL。付款成功后,UPI提供商必须命中URL。 该URL的目的应该是不断更新交易状态,然后触发最终用户一封带有交易状态的电子邮件或SMS。