-
Notifications
You must be signed in to change notification settings - Fork 1
/
MainActivity.java
92 lines (80 loc) · 3.31 KB
/
MainActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package com.akashramjyothi.googlepaytest;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.tournaments.googlepaytest.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity {
public static final String GOOGLE_PAY_PACKAGE_NAME = "com.google.android.apps.nbu.paisa.user";
int GOOGLE_PAY_REQUEST_CODE = 123;
String amount;
String name = "Akash Ramjyothi";
String upiId = "akash.ramjyothi@icici";
String transactionNote = "Sample Pay";
String status;
Uri uri;
private ActivityMainBinding binding;
private static boolean isAppInstalled(Context context, String packageName) {
try {
context.getPackageManager().getApplicationInfo(packageName, 0);
return true;
} catch (PackageManager.NameNotFoundException e) {
return false;
}
}
private static Uri getUpiPaymentUri(String name, String upiId, String transactionNote, String amount) {
return new Uri.Builder()
.scheme("upi")
.authority("pay")
.appendQueryParameter("pa", upiId)
.appendQueryParameter("pn", name)
.appendQueryParameter("tn", transactionNote)
.appendQueryParameter("am", amount)
.appendQueryParameter("cu", "INR")
.build();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
binding.googlePayButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
amount = binding.amountEditText.getText().toString();
if (!amount.isEmpty()) {
uri = getUpiPaymentUri(name, upiId, transactionNote, amount);
payWithGPay();
} else {
binding.amountEditText.setError("Amount is required!");
binding.amountEditText.requestFocus();
}
}
});
}
private void payWithGPay() {
if (isAppInstalled(this, GOOGLE_PAY_PACKAGE_NAME)) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(uri);
intent.setPackage(GOOGLE_PAY_PACKAGE_NAME);
startActivityForResult(intent, GOOGLE_PAY_REQUEST_CODE);
} else {
Toast.makeText(MainActivity.this, "Please Install GPay", Toast.LENGTH_SHORT).show();
}
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (data != null) {
status = data.getStringExtra("Status").toLowerCase();
}
if ((RESULT_OK == resultCode) && status.equals("success")) {
Toast.makeText(MainActivity.this, "Transaction Successful", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "Transaction Failed", Toast.LENGTH_SHORT).show();
}
}
}