如何解决Android google pay 集成失败,未显示付款确认页面
我正在尝试将 google pay 集成到我的 android 应用中。问题是在完成交易后,谷歌支付应用程序再次重定向到继续支付页面,而不显示确认。如果交易成功,则 onActivityResult 也不会执行,否则如果我取消付款,它会正常工作(显示吐司“用户取消付款。”)。请让我知道我在这里做错了什么。任何帮助,将不胜感激!提前致谢。
final int UPI_PAYMENT=0;
void payUsingUpi( String name,String upiId,String note,String amount) {
Log.e("main ","name "+name +"--up--"+upiId+"--"+ note+"--"+amount);
Uri uri = Uri.parse("upi://pay").buildUpon()
.appendQueryParameter("pa",upiId)
.appendQueryParameter("pn",name)
.appendQueryParameter("mc","")
//.appendQueryParameter("tid","02125412")
//.appendQueryParameter("tr","25584584")
.appendQueryParameter("tn",note)
.appendQueryParameter("am",amount)
.appendQueryParameter("cu","INR")
//.appendQueryParameter("refUrl","blueapp")
.build();
Intent upiPayIntent = new Intent(Intent.ACTION_VIEW);
upiPayIntent.setData(uri);
// will always show a dialog to user to choose an app
Intent chooser = Intent.createChooser(upiPayIntent,"Pay with");
// check if intent resolves
if(null != chooser.resolveActivity(getPackageManager())) {
startActivityForResult(chooser,UPI_PAYMENT);
} else {
Utils.T(getApplicationContext(),"No UPI app found,please install one to continue");
}
}
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data) {
super.onActivityResult(requestCode,resultCode,data);
Log.e("main ","response "+resultCode );
/*
E/main: response -1
E/UPI: onActivityResult: txnId=AXI4a3428ee58654a938811812c72c0df45&responseCode=00&Status=SUCCESS&txnRef=922118921612
E/UPIPAY: upiPaymentDataOperation: txnId=AXI4a3428ee58654a938811812c72c0df45&responseCode=00&Status=SUCCESS&txnRef=922118921612
E/UPI: payment successfull: 922118921612
*/
switch (requestCode) {
case UPI_PAYMENT:
if ((RESULT_OK == resultCode) || (resultCode == 11)) {
if (data != null) {
String trxt = data.getStringExtra("response");
Log.e("UPI","onActivityResult: " + trxt);
ArrayList<String> dataList = new ArrayList<>();
dataList.add(trxt);
upiPaymentDataOperation(dataList);
} else {
Log.e("UPI","onActivityResult: " + "Return data is null");
ArrayList<String> dataList = new ArrayList<>();
dataList.add("nothing");
upiPaymentDataOperation(dataList);
}
} else {
//when user simply back without payment
Log.e("UPI","onActivityResult: " + "Return data is null");
ArrayList<String> dataList = new ArrayList<>();
dataList.add("nothing");
upiPaymentDataOperation(dataList);
}
break;
}
}
private void upiPaymentDataOperation(ArrayList<String> data) {
if (isConnectionAvailable(getApplicationContext())) {
String str = data.get(0);
Log.e("UPIPAY","upiPaymentDataOperation: "+str);
String paymentCancel = "";
if(str == null) str = "discard";
String status = "";
String approvalRefNo = "";
String response[] = str.split("&");
for (int i = 0; i < response.length; i++) {
String equalStr[] = response[i].split("=");
if(equalStr.length >= 2) {
if (equalStr[0].toLowerCase().equals("Status".toLowerCase())) {
status = equalStr[1].toLowerCase();
}
else if (equalStr[0].toLowerCase().equals("ApprovalRefNo".toLowerCase()) || equalStr[0].toLowerCase().equals("txnRef".toLowerCase())) {
approvalRefNo = equalStr[1];
}
}
else {
paymentCancel = "Payment cancelled by user.";
}
}
if (status.equals("success")) {
//Code to handle successful transaction here.
Utils.T(getApplicationContext(),"Transaction successful.");
paymentstatus= "COMPLETED";
updateUPIPaymentStatus("UPI","PAID",approvalRefNo);
Log.e("UPI","payment successfull: "+approvalRefNo);
}
else if("Payment cancelled by user.".equals(paymentCancel)) {
Utils.T(getApplicationContext(),"Payment cancelled by user.");
txFailed( "Payment cancelled by user." );
Log.e("UPI","Cancelled by user: "+approvalRefNo);
Utils.SPadd( getApplicationContext(),"back","googlepay");
}
else {
Utils.T(getApplicationContext(),"Transaction Failed.Please try again");
txFailed( "Transaction Failed.Please try again" );
Log.e("UPI","Failed payment: "+approvalRefNo);
}
} else {
Utils.T(getApplicationContext(),"Internet issue:");
txFailed( "Internet issue:" );
Log.e("UPI","Internet issue: ");
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。