微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android google pay 集成失败,未显示付款确认页面

如何解决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 举报,一经查实,本站将立刻删除。