在我的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应用程序中获取交易状态,并将其显示给用户。 感谢任何帮助。