Antes de comenzar, ten en cuenta que en esta versión sólo puedes integrar el SDK mobile para Argentina, México, Brasil y Colombia*.
Si necesitas integrarte desde otro lugar, puedes ver qué países soportamos en la nueva versión.
*En Colombia sólo soportamos pagos con tarjetas de crédito.
¿Demasiado rápido? Te damos todo tan resuelto que nos animamos a decirte eso.
Y además hicimos cuentas, cada paso lleva 50 segundos.
Algunos desarrolladores amigos ya lo lograron. ¡Increíble! Solo tienes que decirnos qué quieres cobrar y nos encargamos del resto.
Paso a paso en video.
¿Usas Gradle? Agrégala en el build.gradle del módulo donde nos integres.
Sino descarga el SDK de Mercado Pago.
dependencies {
compile 'com.mercadopago:sdk:'
}
Inicia el checkout de Mercado Pago desde un botón:
Crea un Activity para insertar el botón (MainActivity, por ejemplo).
Agrega un campo de texto, para mostrar el resultado del pago.
Pega este código de ejemplo en res/layout/activity_main.xml.
Pruébalo con nuestros datos:
Usa este código con nuestros datos, así podrás probar rápido la experiencia completa.
Cuando quieras ir a producción, sólo necesitarás usar tus propios datos.
Para iniciar nuestro checkout sólo necesitas:
// Método ejecutado al hacer clic en el botón
public void submit(View view) {
// Iniciar el checkout de Mercado Pago
new MercadoPago.StartActivityBuilder()
.setActivity(this)
.setPublicKey("TEST-ad365c37-8012-4014-84f5-6c895b3f8e0a")
.setCheckoutPreferenceId("150216849-ceed1ee4-8ab9-4449-869f-f4a8565d386f")
.startCheckoutActivity();
}
* A modo de prueba, estamos usando una preferencia cuyo producto es un Bajo de $100 con todos los medios de pago disponibles en Mercado Pago.
// Método ejecutado al hacer clic en el botón
public void submit(View view) {
//Puedes cambiar los colores
DecorationPreference decorationPreference = new DecorationPreference();
//Puedes obtener el color desde un recurso de tu colors.xml
decorationPreference.setBaseColor(ContextCompat.getColor(context, R.color.your_color));
//O con un código de color hexadecimal
decorationPreference.setBaseColor("#77B2D2");
//También puedes habilitar la fuente oscura
decorationPreference.enableDarkFont();
// Iniciar el checkout de Mercado Pago
new MercadoPago.StartActivityBuilder()
.setActivity(this)
.setPublicKey("TEST-ad365c37-8012-4014-84f5-6c895b3f8e0a")
.setCheckoutPreferenceId("150216849-ceed1ee4-8ab9-4449-869f-f4a8565d386f")
.setDecorationPreference(decorationPreference)
.startCheckoutActivity();
}
El SDK devolverá siempre un resultado del pago.
Si hubo algún error insalvable o el usuario lo abandonó, devolverá una excepción para que puedas entender qué pasó.
Estos son los atributos más importantes del pago:
Conoce más sobre el objeto Payment aquí.
// Espera los resultados del checkout
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
if (requestCode == MercadoPago.CHECKOUT_REQUEST_CODE) {
if (resultCode == RESULT_OK && data != null) {
// Listo! El pago ya fue procesado por MP.
Payment payment = JsonUtil.getInstance()
.fromJson(data.getStringExtra("payment"), Payment.class);
TextView results = (TextView) findViewById(R.id.mp_results);
if (payment != null) {
results.setText("PaymentID: " + payment.getId() +
" - PaymentStatus: " + payment.getStatus());
} else {
results.setText("El usuario no concretó el pago.");
}
} else {
if ((data != null) && (data.hasExtra("mpException"))) {
MPException mpException = JsonUtil.getInstance()
.fromJson(data.getStringExtra("mpException"), MPException.class);
// Manejá tus errores.
}
}
}
}
Usa estas tarjetas de prueba para testear los diferentes resultados del pago.
Luego podrás usar nuestra herramienta de preferencias de pago, para que trabajes con diferentes configuraciones:
Tarjetas para probar nuestro checkout:
Prefijos del nombre del titular de la tarjeta.
APROJuan Perez retornará un pago acreditado.
Primero:
Desde tu servidor:
Sólo tienes que crear una preferencia de pago y retornar la respuesta que te dan nuestros servicios.
Hazlo desde tu servidor, porque tendrás que firmarla con tu clave privada. De esta forma nos aseguramos proteger tanto al comprador, como a tu propio usuario vendedor. Cómo crear una preferencia desde tu servidor.
Las preferencias completas funcionan mucho mejor.
Envíanos toda la información que puedas y verás que ofrecerás tan buena experiencia para los compradores, que ¡tendrás más pagos acreditados!
Desde tu aplicación:
Te ofrecemos una clase llamada MerchantServer que se conecta con tu servidor. El método createPreference hace un POST y envía como cuerpo del mensaje el mapa que hayas definido (preferenceMap). Indícanos tu URL base (https://api.tunombre.com) y la URI (/create_preference) donde esperas los datos para crear la preferencia.
MerchantServer se encargará de transformar la respuesta de tu servicio (la misma que los servicios de Mercado Pago) en un objeto CheckoutPreference cuyo ID es el punto de entrada a nuestro checkout.
// Cuidado! Es el callback de Mercado Pago.
import com.mercadopago.callbacks.Callback;
public void submit(View view) {
// Crea un mapa con los datos de la compra y el mail de tu cliente.
Map<String, Object> preferenceMap = new HashMap<>();
preferenceMap.put("item_id", "1");
preferenceMap.put("amount", new BigDecimal(10));
preferenceMap.put("currency_id", "ARS");
preferenceMap.put("payer_email", "mail_de_tu_cliente@gmail.com");
// Envía la información a tu servidor
MerchantServer.createPreference(this, "https://api.tunombre.com",
"/create_preference", preferenceMap, new Callback<CheckoutPreference>() {
@Override
public void success(CheckoutPreference checkoutPreference) {
// La preferencia se creó correctamente.
// Aquí puedes iniciar el Checkout de MercadoPago.
new MercadoPago.StartActivityBuilder()
.setActivity(mActivity)
.setPublicKey("TEST-ad365c37-8012-4014-84f5-6c895b3f8e0a")
.setCheckoutPreferenceId(checkoutPreference.getId())
.startCheckoutActivity();
}
@Override
public void failure(ApiException error) {
// Ups, ocurrió un error
}
});
}