Flutter - Integración para aplicaciones móviles - Mercado Pago Developers

Integrar con Flutter

Para integrar el Checkout Pro de Mercado Pago en una aplicación para dispositivos móviles, es necesario mostrar el flujo de pago web dentro de la aplicación. Para esto, utiliza Custom Tabs para Android y Safari View Controller para iOS.

En esta documentación, encontrarás instrucciones detalladas sobre cómo realizar esta integración utilizando Flutter y Custom Tabs. Se presentarán los pasos para instalar las bibliotecas necesarias, configurar las dependencias y se proporcionarán ejemplos prácticos de cómo abrir páginas web usando Custom Tabs.

Antes de integrar el Checkout Pro para aplicaciones móviles, es necesario crear una preferencia de pago en tu backend. Si aún no lo has hecho, consulta la documentación sobre cómo Crear y configurar una preferencia de pago.

A continuación, selecciona el sistema operativo y sigue el paso a paso correspondiente.

En esta etapa, instalarás y configurarás las dependencias necesarias para implementar Custom Tabs en tu proyecto desarrollado en Flutter.

Instalar la dependencia Flutter Custom Tabs

Para instalar la dependencia Flutter Custom Tabs, que te permitirá abrir páginas web dentro de una aplicación móvil, ejecuta el siguiente comando en el directorio raíz de tu proyecto:

terminal

$ flutter pub add flutter_custom_tabs

Esto agregará la línea dependencies: flutter_custom_tabs: ^2.4.0 al archivo pubspec.yaml del paquete. El comando flutter pub get se ejecutará automáticamente.

Para utilizar Custom Tabs en tu código, importa el paquete en el archivo Dart donde deseas mostrar el checkout:

dart

import 'package:flutter_custom_tabs/flutter_custom_tabs.dart';
Para más información, consulta la documentación oficial de Flutter Custom Tabs.

Implementar Flutter Custom Tabs

Para implementar Custom Tabs en tu aplicación Flutter, sigue el ejemplo a continuación, que demuestra cómo abrir el checkout de Mercado Pago en un navegador nativo integrado:

dart

import 'package:flutter/material.dart';
import 'package:flutter_custom_tabs/flutter_custom_tabs.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        body: Center(
          child: TextButton(
            child: const Text('Show Flutter homepage'),
            onPressed: () => _launchURL(context),
          ),
        ),
      ),
    );
  }

  void _launchURL(BuildContext context) async {
    final theme = Theme.of(context);
    try {
      await launchUrl(
        Uri.parse('https://flutter.dev'),
        customTabsOptions: CustomTabsOptions(
          colorSchemes: CustomTabsColorSchemes.defaults(
            toolbarColor: theme.colorScheme.surface
          ),
          shareState: CustomTabsShareState.on,
          urlBarHidingEnabled: true,
          showTitle: true,
          closeButton: CustomTabsCloseButton(
            icon: CustomTabsCloseButtonIcons.back
          ),
          animations: const CustomTabsAnimations(
            startEnter: 'slide_up',
            startExit: 'android:anim/fade_out',
            endEnter: 'android:anim/fade_in',
            endExit: 'slide_down',
          ),
        ),    
      );
    } catch (e) {
      // Se lanza una excepción si no hay una aplicación de navegador instalada en el dispositivo Android.
      debugPrint(e.toString());
    }
  }
}

Puedes personalizar la apariencia de la pantalla especificando opciones para cada plataforma. Para esto, utiliza la clase de configuración CustomTabsOption, que te permite definir parámetros como colores, animaciones y comportamientos de la pestaña del navegador nativo. Para más detalles, consulta la documentación oficial.

Para que el usuario pueda volver a tu aplicación después de completar el pago, necesitarás configurar Deep Links. Esto permite que el usuario sea redirigido automáticamente a una pantalla específica de tu aplicación al finalizar el flujo de pago o al hacer clic en un botón de retorno.

1. Configurar las URLs de retorno en la preferencia de pago

Al crear la preferencia de pago en tu backend, agrega los parámetros back_urls y auto_return. Para más información, consulta la documentación sobre cómo Crear y configurar una preferencia de pago.

json

"back_urls": {
 "success": "tuapp://success",
 "failure": "tuapp://failure",
 "pending": "tuapp://pending"
},
"auto_return": "approved"

Flutter te permite gestionar Deep Links tanto en Android como en iOS. Para esto, utiliza paquetes como uni_links o go_router para detectar y gestionar la navegación interna cuando la aplicación es abierta mediante un Deep Link.

La configuración de Deep Links es un procedimiento común para todas las tecnologías móviles. Consulta la documentación oficial de Flutter sobre Deep Links, así como la guía de App Links para Android o Universal Links para iOS, según corresponda.