¿Cómo integrar el SDK de PayPal en Android?

PayPal es una de las famosas integraciones de pasarelas de pago, que es una de las pasarelas de pago más famosas del mundo que se utiliza en tantas aplicaciones y sitios web. En este artículo, veremos cómo implementar este SDK de PayPal en nuestra aplicación.

¿Qué vamos a construir en este artículo?

Construiremos una aplicación simple en la que mostraremos un EditText simple y un botón. De ese EditText obtendremos el monto ingresado por el usuario y luego, después de hacer clic en el botón, llamaremos a PayPal para realizar el pago. Con la ayuda de la interfaz de usuario de PayPal, podremos realizar pagos desde la tarjeta y desde la cuenta de PayPal. A continuación se muestra un video de muestra para tener una idea de lo que vamos a hacer en este artículo. Tenga en cuenta que vamos a implementar este proyecto utilizando el lenguaje Java

Implementación paso a paso para generar una ID de cliente 

Paso 1: navegue a la URL a continuación para crear su cuenta de sandbox 

Navegue a esta URL e inicie sesión con su nombre de usuario y contraseña de PayPal. Después de eso, podrás ver la siguiente página. En esa página, tenemos que crear nuestra cuenta de SandBox con algunos detalles básicos que se muestran en el siguiente formulario. 

Después de completar todos los detalles. Haga clic en la opción Crear cuenta para crear su cuenta de SandBox. 

Paso 2: Creación de una nueva aplicación para generar ID de cliente

Navegue a esta URL y dentro de esta agregue el nombre de su aplicación

Dentro de esta pantalla, debemos agregar nuestro Nombre de aplicación y seleccionarlo como Comerciante y luego hacer clic en la opción Crear aplicación para crear una nueva aplicación. Después de eso, podrá ver la identificación del cliente que debemos usar en nuestra aplicación. Ahora nos moveremos hacia Android Part.  

Implementación paso a paso en Android

Paso 1: Crear un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación.

Paso 2: Agregar dependencia en build.gradle

Vaya a la aplicación > Gradle Scripts > build.gradle y agregue la siguiente dependencia en la sección de dependencias.

implementation 'com.paypal.sdk:paypal-android-sdk:2.14.2'

Después de agregar esta dependencia, ahora sincronice su proyecto y avanzaremos hacia el trabajo con el archivo XML.

Paso 3: trabajar con el archivo activity_main.xml

Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. A continuación se muestra el código para el archivo  activity_main.xml .

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
 
    <!--Edit text for entering the amount-->
    <EditText
        android:id="@+id/idEdtAmount"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="20dp"
        android:layout_marginTop="50dp"
        android:layout_marginEnd="20dp"
        android:hint="Enter Amount to be Paid"
        android:inputType="numberDecimal" />
 
    <!--button for making a payment-->
    <Button
        android:id="@+id/idBtnPay"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/idEdtAmount"
        android:layout_centerInParent="true"
        android:layout_marginTop="10dp"
        android:text="Make Payment" />
 
    <!--text view for displaying payment status-->
    <TextView
        android:id="@+id/idTVStatus"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/idBtnPay"
        android:layout_marginStart="20dp"
        android:layout_marginTop="20dp"
        android:layout_marginEnd="20dp"
        android:padding="5dp"
        android:textAlignment="center"
        android:textColor="@color/purple_200"
        android:textSize="20sp" />
 
</RelativeLayout>

Paso 4: trabajar con el archivo MainActivity.java

Vaya al archivo MainActivity.java y consulte el siguiente código. A continuación se muestra el código del archivo MainActivity.java . Se agregan comentarios dentro del código para comprender el código con más detalle.

Java

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;
     
      // Paypal Configuration Object
    private static PayPalConfiguration config = new PayPalConfiguration()
            // Start with mock environment.  When ready,
              // switch to sandbox (ENVIRONMENT_SANDBOX)
            // or live (ENVIRONMENT_PRODUCTION)
            .environment(PayPalConfiguration.ENVIRONMENT_SANDBOX)
            // on below line we are passing a client id.
            .clientId(clientKey);
    private EditText amountEdt;
    private TextView paymentTV;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        // on below line we are initializing our variables.
        amountEdt = findViewById(R.id.idEdtAmount);
         
          // creating a variable for button, edit text and status tv.
        Button makePaymentBtn = findViewById(R.id.idBtnPay);
        paymentTV = findViewById(R.id.idTVStatus);
         
          // on below line adding click listener to our make payment button.
        makePaymentBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // calling a method to get payment.
                getPayment();
            }
        });
    }
 
    private void getPayment() {
         
          // Getting the amount from editText
        String amount = amountEdt.getText().toString();
         
          // Creating a paypal payment on below line.
        PayPalPayment payment = new PayPalPayment(new BigDecimal(String.valueOf(amount)), "USD", "Course Fees",
                PayPalPayment.PAYMENT_INTENT_SALE);
 
        // Creating Paypal Payment activity intent
        Intent intent = new Intent(this, PaymentActivity.class);
 
        //putting the paypal configuration to the intent
        intent.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, config);
 
        // Putting paypal payment to the intent
        intent.putExtra(PaymentActivity.EXTRA_PAYMENT, payment);
 
        // Starting the intent activity for result
        // the request code will be used on the method onActivityResult
        startActivityForResult(intent, PAYPAL_REQUEST_CODE);
    }
 
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
         
          // If the result is from paypal
        if (requestCode == PAYPAL_REQUEST_CODE) {
 
            // If the result is OK i.e. user has not canceled the payment
            if (resultCode == Activity.RESULT_OK) {
                 
                  // Getting the payment confirmation
                PaymentConfirmation confirm = data.getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION);
 
                // if confirmation is not null
                if (confirm != null) {
                    try {
                        // Getting the payment details
                        String paymentDetails = confirm.toJSONObject().toString(4);
                        // on below line we are extracting json response and displaying it in a text view.
                        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) {
                        // handling json exception on below line
                        Log.e("Error", "an extremely unlikely failure occurred: ", e);
                    }
                }
            } else if (resultCode == Activity.RESULT_CANCELED) {
                // on below line we are checking the payment status.
                Log.i("paymentExample", "The user canceled.");
            } else if (resultCode == PaymentActivity.RESULT_EXTRAS_INVALID) {
                // on below line when the invalid paypal config is submitted.
                Log.i("paymentExample", "An invalid Payment or PayPalConfiguration was submitted. Please see the docs.");
            }
        }
    }
}

Ahora ejecute su aplicación y vea el resultado de la aplicación.

Producción:

Nota: Como mi cuenta de PayPal no está verificada, los pagos no se realizarán de mi parte.

Publicación traducida automáticamente

Artículo escrito por chaitanyamunje y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *