2016-09-08 52 views
5

我正在嘗試創建一個商家應用程序,該應用程序將根據NPCI的指南生成網址。該網址將作爲意向共享,PSP應用程序(任何註冊的銀行應用程序)應該能夠聽取該網址並被調用。使用UPI網址調用PSP應用程序

我已經形成了一個網址像這樣: -

UPI://支付PA = ICICI /名稱& PN = USER_NAME & TID = 422d97c1-f0fc-4BEA-B24A-511ffa85e86f & AM = 442.87? & TN =測試%的交易

現在我送的意圖是這樣的: -

Intent sendIntent = new Intent(); 
sendIntent.setAction(Intent.ACTION_SEND); 
sendIntent.putExtra(Intent.EXTRA_TEXT, UPI); 
sendIntent.setType("text/plain"); 
startActivity(sendIntent); 

Icici銀行應用程序未顯示在接收器應用程序中。我是否正確創建了網址?

UPI剛剛發佈,我無法通過互聯網獲得良好的資源。

注 - 在url中,tid(transaction id)是在我的應用程序中生成的隨機uuid。

回答

6

找到了正確的方法來做到這一點。 您需要按照問題中提到的正確方式構造URL。之後,該URL必須轉換爲URI並作爲數據發送給該意圖。

Intent intent = new Intent(); 
intent.setData(Uri.parse(UPI)); 
Intent chooser = Intent.createChooser(intent, "Pay with..."); 
startActivityForResult(chooser, 1, null); 

之後,在你的onActivityResult,請檢查requestCode和id收到的打算數據爲空。 如果不是,那麼數據將包含一個字符串附加爲響應。 該響應將包含狀態,事務引用,transactionId和響應代碼。

此外,url中的空格應該用'+'替換而不是'%'。

+0

什麼是intent.setData(Uri.parse(UPI))中的UPI; –

+0

這是需要創建,然後用於調用PSP應用程序的網址。 – deep

+0

感謝您的回答。我還有一個查詢。根據UPI文檔中的規定,任何商家都可以生成類似上面的URL,並通過郵件或任何聊天應用程序將其發送給用戶。所以我嘗試通過郵件發送URL,但不能點擊。 ..我的設備中的所有UPI應用程序的選擇器對話框不會彈出...但是,掃描相同URL的qr代碼會給出所需的結果..所以我問的是如何使這些URL可點擊電子郵件或社交消息應用程序 –

0

對於應用程序顯示爲UPI意圖接收器,它需要在其Manifest文件中註冊此UPI uri,以便它可以監聽其他應用程序拋出的此類廣播意圖。 通過網絡嘗試了這一點,我能夠調出「電話Pe」應用程序來支付該特定的應用程序。我的手機中也安裝了Bhim和Icici,但他們沒有出現,並且「Phone Pe」被默認提出,所以我假設他們沒有將UPI uri Intent註冊到他們。

編輯:Android應用程序我可以打開電話Pe和BHIM,ICICI應用程序我猜沒有這個意圖註冊,所以它沒有顯示出來。