В моем приложении для iOS мне нужно принимать платежи от пользователя. Я использую UPI для того же. Я подписался на следующий документ, предоставленный UPI
http://www.npci.org.in/documents/UPI-Linking-Specs-ver-1.1_draft.pdf
Я создал deeplink, как указано в документе. UIApplication.shared.open
используется для открытия URL-адреса 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-адресов и добавил схему upi для ApplicationQueriesScheme в файл plist
<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 и показать статус пользователю. Любая помощь приветствуется