import
android.app.Activity;
import
android.content.Intent;
import
android.os.Bundle;
import
android.util.Log;
import
android.view.View;
import
android.widget.Button;
import
android.widget.EditText;
import
android.widget.TextView;
import
androidx.annotation.Nullable;
import
androidx.appcompat.app.AppCompatActivity;
import
com.paypal.android.sdk.payments.PayPalConfiguration;
import
com.paypal.android.sdk.payments.PayPalPayment;
import
com.paypal.android.sdk.payments.PayPalService;
import
com.paypal.android.sdk.payments.PaymentActivity;
import
com.paypal.android.sdk.payments.PaymentConfirmation;
import
org.json.JSONException;
import
org.json.JSONObject;
import
java.math.BigDecimal;
public
class
MainActivity
extends
AppCompatActivity {
public
static
final
String clientKey =
"Enter your client id here"
;
public
static
final
int
PAYPAL_REQUEST_CODE =
123
;
private
static
PayPalConfiguration config =
new
PayPalConfiguration()
.environment(PayPalConfiguration.ENVIRONMENT_SANDBOX)
.clientId(clientKey);
private
EditText amountEdt;
private
TextView paymentTV;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
amountEdt = findViewById(R.id.idEdtAmount);
Button makePaymentBtn = findViewById(R.id.idBtnPay);
paymentTV = findViewById(R.id.idTVStatus);
makePaymentBtn.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View v) {
getPayment();
}
});
}
private
void
getPayment() {
String amount = amountEdt.getText().toString();
PayPalPayment payment =
new
PayPalPayment(
new
BigDecimal(String.valueOf(amount)),
"USD"
,
"Course Fees"
,
PayPalPayment.PAYMENT_INTENT_SALE);
Intent intent =
new
Intent(
this
, PaymentActivity.
class
);
intent.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, config);
intent.putExtra(PaymentActivity.EXTRA_PAYMENT, payment);
startActivityForResult(intent, PAYPAL_REQUEST_CODE);
}
@Override
protected
void
onActivityResult(
int
requestCode,
int
resultCode,
@Nullable
Intent data) {
super
.onActivityResult(requestCode, resultCode, data);
if
(requestCode == PAYPAL_REQUEST_CODE) {
if
(resultCode == Activity.RESULT_OK) {
PaymentConfirmation confirm = data.getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION);
if
(confirm !=
null
) {
try
{
String paymentDetails = confirm.toJSONObject().toString(
4
);
JSONObject payObj =
new
JSONObject(paymentDetails);
String payID = payObj.getJSONObject(
"response"
).getString(
"id"
);
String state = payObj.getJSONObject(
"response"
).getString(
"state"
);
paymentTV.setText(
"Payment "
+ state +
"\n with payment id is "
+ payID);
}
catch
(JSONException e) {
Log.e(
"Error"
,
"an extremely unlikely failure occurred: "
, e);
}
}
}
else
if
(resultCode == Activity.RESULT_CANCELED) {
Log.i(
"paymentExample"
,
"The user canceled."
);
}
else
if
(resultCode == PaymentActivity.RESULT_EXTRAS_INVALID) {
Log.i(
"paymentExample"
,
"An invalid Payment or PayPalConfiguration was submitted. Please see the docs."
);
}
}
}
}