我使用intent深度链接了我的Android原生应用中的UPI应用。我用各种UPI应用程序测试了这个,如BHIM,PhonePe,AXIS,UnionBank,Pockets等。
我创建了推送付款URI。我能够启动各种UPI应用程序。但是行为非常不一致。
" UPI://支付PA = XXXXX @ UPI&安培; PN =收款人&安培; AM = 5.00&安培; TN = Test_Transaction"
任何人 - 任何评论?为什么这种不一致的行为?
令人惊讶的是没有与BHIM应用程序合作的深层链接。
如果有人想要尝试,我可以分享Android代码。
答案 0 :(得分:6)
它也适用于BHIM应用程序。使用此代码,它就像每个支持PSP的应用程序的魅力一样。
注意:而不是使用"%"更好地使用" +"从URL中替换空格。这更好。
private String getUPIString(String payeeAddress, String payeeName, String payeeMCC, String trxnID, String trxnRefId,
String trxnNote, String payeeAmount, String currencyCode, String refUrl) {
String UPI = "upi://pay?pa=" + payeeAddress + "&pn=" + payeeName
+ "&mc=" + payeeMCC + "&tid=" + trxnID + "&tr=" + trxnRefId
+ "&tn=" + trxnNote + "&am=" + payeeAmount + "&cu=" + currencyCode
+ "&refUrl=" + refUrl;
return UPI.replace(" ", "+");
}
然后传递方法中的参数并以这种方式将字符串传递给Intent:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse(UPI));
Intent chooser = Intent.createChooser(intent, "Pay with...");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
startActivityForResult(chooser, 1, null);
}
答案 1 :(得分:0)
要正确显示付款页面,您必须setAction(Intent.ACTION_VIEW)
了解您的意图。
我只通过在Intent数据上使用getStringsExtra("response")
从BHIM app获得回复。
答案 2 :(得分:0)
PATH
答案 3 :(得分:-1)
这是我为Redmi Note 5 Pro和其他MI手机解决的方法:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(UPI));
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
} else {
Toast.makeText(this, "No application available to handle this request!", Toast.LENGTH_SHORT).show();
}