Introduction

SDK

Lo primero que tenemos que hacer es agregar el SDK de mercado pago a nuestro proyecto. El SDK de MercadoPago nos provee de muchos componentes “prefabricados” que hacen que utilizar MP sea más fácil, además de varios ejemplos de como usarlos. El SDK es una librería, y se puede ver en https://github.com/mercadopago/sdk-androidarrow-up-right. Es open source, así que se puede customizar según las necesidades que se tengan.

Para agregar el SDK a nuestro proyecto, solo hace falta incluirlo como dependencia:

dependencies {
    // MercadoPago SDK and dependencies
    compile ('com.mercadopago:android-sdk:0.9.9@aar') { transitive = true }
}

A empezar a usarlo

MercadoPago pide que el usuario seleccione el método de pago (la tarjeta de crédito con la cual se va a pagar), para ello nos provee de una activity con todas las tarjetas de crédito disponibles. Lo unico que tenemos que hacer es invocarla y luego manejar su respuesta con un onActivityResult.

// Set the supported payment method types
protected List<string> mSupportedPaymentTypes = new ArrayList<string>(){
    add("credit_card");
    add("debit_card");
    add("prepaid_card");
};


public void getPaymentMethods() {
    new MercadoPago.StartActivityBuilder()
            .setActivity(this)
            .setPublicKey(yourPublicKey)
            .setSupportedPaymentTypes(mSupportedPaymentTypes)
            .startPaymentMethodsActivity();
}

// Process user's choice
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == MercadoPago.PAYMENT_METHODS_REQUEST_CODE) {
        if (resultCode == RESULT_OK) {

            // Set payment method
            PaymentMethod paymentMethod = JsonUtil.getInstance().fromJson(data.getStringExtra("paymentMethod"), PaymentMethod.class);

            // TODO: here call card activity
        }
    }
}

Ahora hay que obtener la información de la tarjeta de crédito seleccionada. Para ello hay que crear una nueva activity (CardActivity) y se puede combinar con el layout activity_card.xml (del SDK) para así obtener todo el formulario de carga de datos de la tarjeta ya implementado.

En el onCreate debemos settear el objeto MercadoPago con la public key que identifica a la app dentro de MP:

Dependiendo del país en el que el usuario de la app este pagando, se debe pedir tipo y numero de documento. Para ello, MP ofrece una llamada a la api. Nosotros debemos invocarla (en el onCreate) y manejar los resultados, de esta manera:

Para estar seguros de que la información ingresada por el usuario es válida, debemos validar el formulario de carga. Para ello, debemos crear un metodo que valide todos los campos y se llame antes del submit del formulario.

Ahora hay que crear un cardToken (de forma segura) para identificar el pago (es un identificador unico de la tarjeta en mercado pago).

Ahora estamos listos para mandarle la info al server. Asi que luego de crear el cardToken debemos hacer la request al server.

Si todo salió bien al realizar el pago, ya se puede mostrar la pantalla final de éxito:

La forma rápida

Para tener andando MercadoPago de forma rápida hay que: 1. Agregar el SDK. 2. Agregar la clase CardActivity. 3. Agregar la clase Utils (para no ensuciar la activity). 4. Agregar el manejo de MercadoPago en la activity donde se lo llama.

1- Agregar el SDK

Seguir los pasos que se indican al inicio del documento.

2- Agregar la clase CardActivity

Crear la clase CardActivity.java (se recomienda que sea dentro del package mercadopago para que asi quede bien diferenciado) que contenga lo siguiente:

Customizar según corresponda.

3- Agregar la clase Utils

Crear la clase Utils.java (se recomienda que sea dentro del package mercadopago para que asi quede bien diferenciado) que contenga lo siguiente:

Customizar según corresponda. Esta clase va a permitir tener ciertas herramientas útiles separadas del flujo principal para no contaminarlo y que sea mas claro.

4- Agregar el manejo de MercadoPago en la activity donde se lo llama

En la activity desde la cual deseamos realizar el pago (supongamos que es SummaryActivity), debemos agregar:

Customizar según corresponda.

Last updated