Как получить ответ после интеграции UPI с помощью гиперссылки
В моем iOS-приложении мне нужно принимать платежи от пользователя. Я использую UPI для того же. Я следовал следующему документу, предоставленному UPI
http://www.npci.org.in/documents/UPI-Linking-Specs-ver-1.1_draft.pdf
Я создал диплинк, как указано в документе. 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 и показать статус пользователю. Любая помощь приветствуется
4 ответа
В соответствии с приведенным ниже рабочим процессом вам необходимо установить связь с Payer / Payee PSP, чтобы получать уведомления о ваших платежах. В вашем сценарии вам необходимо обратиться в PSP вашего банка, чтобы получить уведомление о квитанции об оплате в ваши счета.
Я не видел способа получения уведомления отдельным инициатором.
Не стесняйтесь поправлять меня.
Linking Спецификация NPCI UPI утверждает , что параметр URL , используемый в линии оплаты для информационных целей , которые платежные приложения могут использовать , чтобы предоставить дополнительную информацию для плательщика при нажатии на ссылку.
Ссылка должна отображать детали транзакции только продавца или стороны, инициировавшей транзакцию.
Он не предназначен для использования в качестве URL-адреса обратного вызова или веб-ловушки для завершения транзакции.
Вы можете использовать параметр url, чтобы передать URL вашего веб-сайта с помощью метода get с идентификатором заказа или идентификатором платежа в качестве параметра. Как только платеж будет успешным, провайдеру UPI предлагается перейти по URL-адресу. Целью URL-адреса должно быть постоянное обновление статуса транзакции и отправка конечному пользователю сообщения электронной почты или SMS со статусом транзакции.
Не пробовал, но в документе упоминалось о параметре url, при нажатии которого мы должны показывать детали транзакции пользователю.
При щелчке это должен быть URL-адрес, предоставляющий клиенту дополнительные детали транзакции, такие как полные сведения о счете, копия счета, копия заказа, информация о билете и т. Д. Это также можно использовать для доставки цифровых товаров, таких как mp3-файлы и т. Д. После оплаты.
Мы могли бы отправить URL со схемой URL, которая перенаправляет на приложение, или универсальную ссылку, которую может обработать наше приложение.
Опять же, я не пробовал это, поэтому я не знаю, работает ли это так, как я думаю, или это точно решит вашу проблему.
https://www.npci.org.in/sites/all/themes/npcl/images/PDF/UPI_Linking_Specs_ver_1.5.1.pdf