如果您要在android应用程序中出售任何产品或提供任何服务,那么您应该已经在android应用程序中集成了一项功能,您可以在其中允许用户通过您的应用程序进行付款。在本文中,我们将介绍Android中支付网关集成的实现。在本文中,我们将使用Easy UPI Payment网关库添加此功能。
我们将在本文中构建什么?
我们将创建一个简单的应用程序,其中将显示多个编辑文本字段,我们将在其中允许用户输入进行付款的详细信息。点击“付款”按钮后,我们将向用户显示一个对话框,供用户通过安装在用户设备中的不同应用进行付款。下面是视频,我们将在其中观看我们将要构建的内容。
分步实施
步骤1:创建一个新项目
要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Java作为编程语言。
步骤2:在Android中为轻松付款网关添加依赖项
导航至应用程序> Gradle脚本> build.gradle(:app),然后在“依赖项”部分添加以下依赖项。
implementation ‘com.shreyaspatil:EasyUpiPayment:2.0’
添加此依赖项后,现在同步您的项目,现在我们将朝着添加Internet权限的方向发展。
步骤3:在AndroidManifest.xml中添加互联网权限。
导航到app> AndroidManifest.xml,然后将以下代码添加到其中。
XML
XML
Java
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.shreyaspatil.EasyUpiPayment.EasyUpiPayment;
import com.shreyaspatil.EasyUpiPayment.listener.PaymentStatusListener;
import com.shreyaspatil.EasyUpiPayment.model.TransactionDetails;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class MainActivity extends AppCompatActivity implements PaymentStatusListener {
// initializing variables for our edit text and button.
private EditText amountEdt, upiEdt, nameEdt, descEdt;
private TextView transactionDetailsTV;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// initializing all our variables.
amountEdt = findViewById(R.id.idEdtAmount);
upiEdt = findViewById(R.id.idEdtUpi);
nameEdt = findViewById(R.id.idEdtName);
descEdt = findViewById(R.id.idEdtDescription);
Button makePaymentBtn = findViewById(R.id.idBtnMakePayment);
transactionDetailsTV = findViewById(R.id.idTVTranscationDetails);
// on below line we are getting date and then we are setting this date as transaction id.
Date c = Calendar.getInstance().getTime();
SimpleDateFormat df = new SimpleDateFormat("ddMMyyyyHHmmss", Locale.getDefault());
String transcId = df.format(c);
// on below line we are adding click listener for our payment button.
makePaymentBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// on below line we are getting data from our edit text.
String amount = amountEdt.getText().toString();
String upi = upiEdt.getText().toString();
String name = nameEdt.getText().toString();
String desc = descEdt.getText().toString();
// on below line we are validating our text field.
if (TextUtils.isEmpty(amount) && TextUtils.isEmpty(upi) && TextUtils.isEmpty(name) && TextUtils.isEmpty(desc)) {
Toast.makeText(MainActivity.this, "Please enter all the details..", Toast.LENGTH_SHORT).show();
} else {
// if the edit text is not empty then
// we are calling method to make payment.
makePayment(amount, upi, name, desc, transcId);
}
}
});
}
private void makePayment(String amount, String upi, String name, String desc, String transcationId) {
// on below line we are calling an easy payment method and passing
// all parameters to it such as upi id,name, description and others.
final EasyUpiPayment easyUpiPayment = new EasyUpiPayment.Builder()
.with(this)
// on below line we are adding upi id.
.setPayeeVpa(upi)
// on below line we are setting name to which we are making oayment.
.setPayeeName(name)
// on below line we are passing transaction id.
.setTransactionId(transcationId)
// on below line we are passing transaction ref id.
.setTransactionRefId(transcationId)
// on below line we are adding description to payment.
.setDescription(desc)
// on below line we are passing amount which is being paid.
.setAmount(amount)
// on below line we are calling a build method to build this ui.
.build();
// on below line we are calling a start
// payment method to start a payment.
easyUpiPayment.startPayment();
// on below line we are calling a set payment
// status listener method to call other payment methods.
easyUpiPayment.setPaymentStatusListener(this);
}
@Override
public void onTransactionCompleted(TransactionDetails transactionDetails) {
// on below line we are getting details about transaction when completed.
String transcDetails = transactionDetails.getStatus().toString() + "\n" + "Transaction ID : " + transactionDetails.getTransactionId();
transactionDetailsTV.setVisibility(View.VISIBLE);
// on below line we are setting details to our text view.
transactionDetailsTV.setText(transcDetails);
}
@Override
public void onTransactionSuccess() {
// this method is called when transaction is successful and we are displaying a toast message.
Toast.makeText(this, "Transaction successfully completed..", Toast.LENGTH_SHORT).show();
}
@Override
public void onTransactionSubmitted() {
// this method is called when transaction is done
// but it may be successful or failure.
Log.e("TAG", "TRANSACTION SUBMIT");
}
@Override
public void onTransactionFailed() {
// this method is called when transaction is failure.
Toast.makeText(this, "Failed to complete transaction", Toast.LENGTH_SHORT).show();
}
@Override
public void onTransactionCancelled() {
// this method is called when transaction is cancelled.
Toast.makeText(this, "Transaction cancelled..", Toast.LENGTH_SHORT).show();
}
@Override
public void onAppNotFound() {
// this method is called when the users device is not having any app installed for making payment.
Toast.makeText(this, "No app found for making transaction..", Toast.LENGTH_SHORT).show();
}
}
步骤4:使用activity_main.xml文件
导航到应用程序> res>布局> activity_main.xml,然后将以下代码添加到该文件中。以下是activity_main.xml文件的代码。
XML格式
步骤5:使用MainActivity。 Java文件
转到MainActivity。 Java文件并参考以下代码。下面是MainActivity的代码。 Java文件。在代码内部添加了注释,以更详细地了解代码。
Java
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.shreyaspatil.EasyUpiPayment.EasyUpiPayment;
import com.shreyaspatil.EasyUpiPayment.listener.PaymentStatusListener;
import com.shreyaspatil.EasyUpiPayment.model.TransactionDetails;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class MainActivity extends AppCompatActivity implements PaymentStatusListener {
// initializing variables for our edit text and button.
private EditText amountEdt, upiEdt, nameEdt, descEdt;
private TextView transactionDetailsTV;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// initializing all our variables.
amountEdt = findViewById(R.id.idEdtAmount);
upiEdt = findViewById(R.id.idEdtUpi);
nameEdt = findViewById(R.id.idEdtName);
descEdt = findViewById(R.id.idEdtDescription);
Button makePaymentBtn = findViewById(R.id.idBtnMakePayment);
transactionDetailsTV = findViewById(R.id.idTVTranscationDetails);
// on below line we are getting date and then we are setting this date as transaction id.
Date c = Calendar.getInstance().getTime();
SimpleDateFormat df = new SimpleDateFormat("ddMMyyyyHHmmss", Locale.getDefault());
String transcId = df.format(c);
// on below line we are adding click listener for our payment button.
makePaymentBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// on below line we are getting data from our edit text.
String amount = amountEdt.getText().toString();
String upi = upiEdt.getText().toString();
String name = nameEdt.getText().toString();
String desc = descEdt.getText().toString();
// on below line we are validating our text field.
if (TextUtils.isEmpty(amount) && TextUtils.isEmpty(upi) && TextUtils.isEmpty(name) && TextUtils.isEmpty(desc)) {
Toast.makeText(MainActivity.this, "Please enter all the details..", Toast.LENGTH_SHORT).show();
} else {
// if the edit text is not empty then
// we are calling method to make payment.
makePayment(amount, upi, name, desc, transcId);
}
}
});
}
private void makePayment(String amount, String upi, String name, String desc, String transcationId) {
// on below line we are calling an easy payment method and passing
// all parameters to it such as upi id,name, description and others.
final EasyUpiPayment easyUpiPayment = new EasyUpiPayment.Builder()
.with(this)
// on below line we are adding upi id.
.setPayeeVpa(upi)
// on below line we are setting name to which we are making oayment.
.setPayeeName(name)
// on below line we are passing transaction id.
.setTransactionId(transcationId)
// on below line we are passing transaction ref id.
.setTransactionRefId(transcationId)
// on below line we are adding description to payment.
.setDescription(desc)
// on below line we are passing amount which is being paid.
.setAmount(amount)
// on below line we are calling a build method to build this ui.
.build();
// on below line we are calling a start
// payment method to start a payment.
easyUpiPayment.startPayment();
// on below line we are calling a set payment
// status listener method to call other payment methods.
easyUpiPayment.setPaymentStatusListener(this);
}
@Override
public void onTransactionCompleted(TransactionDetails transactionDetails) {
// on below line we are getting details about transaction when completed.
String transcDetails = transactionDetails.getStatus().toString() + "\n" + "Transaction ID : " + transactionDetails.getTransactionId();
transactionDetailsTV.setVisibility(View.VISIBLE);
// on below line we are setting details to our text view.
transactionDetailsTV.setText(transcDetails);
}
@Override
public void onTransactionSuccess() {
// this method is called when transaction is successful and we are displaying a toast message.
Toast.makeText(this, "Transaction successfully completed..", Toast.LENGTH_SHORT).show();
}
@Override
public void onTransactionSubmitted() {
// this method is called when transaction is done
// but it may be successful or failure.
Log.e("TAG", "TRANSACTION SUBMIT");
}
@Override
public void onTransactionFailed() {
// this method is called when transaction is failure.
Toast.makeText(this, "Failed to complete transaction", Toast.LENGTH_SHORT).show();
}
@Override
public void onTransactionCancelled() {
// this method is called when transaction is cancelled.
Toast.makeText(this, "Transaction cancelled..", Toast.LENGTH_SHORT).show();
}
@Override
public void onAppNotFound() {
// this method is called when the users device is not having any app installed for making payment.
Toast.makeText(this, "No app found for making transaction..", Toast.LENGTH_SHORT).show();
}
}
现在运行您的应用程序,并查看该应用程序的输出。
Note: Make sure to run your app on a real device and you should be having an app for making payments. And put the amount in decimal.
输出: