DocumentaciĆ³n
Recursos
Certificaciones
Comunidad

Recursos

Revisa las actualizaciones de nuestras soluciones y operatividad del sistema o pide soporte tƩcnico.

Comunidad

Recibe las Ćŗltimas novedades, pide ayuda a otros integradores y comparte tus conocimientos.

Cobros online
Cobros presenciales
Herramientas y recursos
APIs y SDKS
Integrar con Flutter - iOS - Mercado Pago Developers

Integrar con Flutter

Para integrar Checkout Pro en una aplicaciĆ³n mĆ³vil desarrollada con Flutter, deberĆ”s mostrar el checkout web dentro de la aplicaciĆ³n. Para lograr esto, existen varias opciones, entre las cuales se destacan el uso de Custom Tabs. Esta tecnologĆ­a te permitirĆ” abrir pĆ”ginas web en un navegador nativo integrado en la aplicaciĆ³n, brindando una experiencia de navegaciĆ³n mĆ”s fluida y coherente para los usuarios.

Importante
Antes de comenzar a integrar Checkout Pro para Mobile, deberĆ”s contar con una preferencia creada en tu backend. Si aĆŗn no lo has hecho, ve a Crear preferencias.

En este paso vamos a implementar Custom Tabs en una aplicaciĆ³n de Flutter utilizando flutter_custom_tabs. Te mostraremos cĆ³mo realizar la instalaciĆ³n de las bibliotecas necesarias, cĆ³mo configurar las dependencias y te daremos ejemplos prĆ”cticos de cĆ³mo abrir pĆ”ginas web utilizando Custom Tabs.

InstalaciĆ³n de la dependencia Flutter Custom Tabs

Client-Side

Para la instalaciĆ³n de la dependencia Flutter Custom Tabs, 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: ^1.2.1 al archivo pubspec.yaml del paquete. TambiƩn ejecutarƔ un comando implƭcito flutter pub get.

Nota
Te invitamos a conocer mĆ”s en la documentaciĆ³n oficial de Flutter Custom Tabs .

Para hacer uso de la dependencia deberĆ”s importarla primero en el cĆ³digo Dart donde vayas a requerir mostrar el Checkout. Para hacerlo, agrega la siguiente lĆ­nea en tu cĆ³digo:

dart

import 'package:flutter_custom_tabs/flutter_custom_tabs.dart';

Ejemplo de integraciĆ³n de Flutter Custom Tabs

A continuaciĆ³n, compartimos un ejemplo de integraciĆ³n de Flutter usando Custom Tabs:

dart

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

class MyApp extends StatelessWidget {
  @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 {
    try {
      await launch(
        'https://flutter.dev',
        customTabsOption: CustomTabsOption(
          toolbarColor: Theme.of(context).primaryColor,
          enableDefaultShare: true,
          enableUrlBarHiding: true,
          showPageTitle: true,
          animation: CustomTabsAnimation.slideIn(),
          // or user defined animation.
          animation: const CustomTabsAnimation(
            startEnter: 'slide_up',
            startExit: 'android:anim/fade_out',
            endEnter: 'android:anim/fade_in',
            endExit: 'slide_down',
          ),
          extraCustomTabs: const <String>[
            // ref. https://play.google.com/store/apps/details?id=org.mozilla.firefox
            'org.mozilla.firefox',
            // ref. https://play.google.com/store/apps/details?id=com.microsoft.emmx
            'com.microsoft.emmx',
          ],
        ),                    
        safariVCOption: SafariViewControllerOption(
          preferredBarTintColor: Theme.of(context).primaryColor,
          preferredControlTintColor: Colors.white,
          barCollapsingEnabled: true,
          entersReaderIfAvailable: false,
          dismissButtonStyle: SafariViewControllerDismissButtonStyle.close,        
        ),
      );
    } catch (e) {
      // An exception is thrown if browser app is not installed on Android device.
      debugPrint(e.toString());
    }
  }
}
Personalizar la visualizaciĆ³n segĆŗn la plataforma
Es posible personalizar el look & feel de la pantalla a ser mostrada especificando opciones para cada plataforma. Para personalizar la apariencia en iOS, deberĆ”s hacerlo con SFSSafariViewController. Conoce mĆ”s en la documentaciĆ³n oficial .

CĆ³mo volver a tu App

Client-Side

Los Deep Links, tambiĆ©n conocidos como enlaces profundos, son una forma poderosa de permitir la navegaciĆ³n directa a pantallas o secciones especĆ­ficas de una aplicaciĆ³n mĆ³vil. En Flutter, configurar correctamente los Deep Links es esencial para garantizar una experiencia de usuario fluida y sin problemas.

En esta secciĆ³n de la documentaciĆ³n, encontrarĆ”s cĆ³mo configurar los Deep Links en una aplicaciĆ³n de Flutter basados en la documentaciĆ³n oficial de Flutter.

Con la configuraciĆ³n adecuada de los Deep Links en Flutter, podrĆ”s ofrecer a los usuarios la capacidad de acceder directamente a contenido especĆ­fico en tu aplicaciĆ³n, mejorando la navegaciĆ³n y la experiencia general del usuario.

Desde el Checkout es posible configurar Deep Links para volver a tu aplicaciĆ³n, ya sea haciendo click en un link de ā€œVolverā€, o de forma automĆ”tica al terminar todo un flujo de pago exitoso, para luego ser redirigido a tu App.

Para esto debes agregar en la creaciĆ³n de la preferencia de pago las propiedades back_urls y auto_return segĆŗn corresponda.

Para conocer mĆ”s, puedes acceder a la documentaciĆ³n de URLs de retorno.

Client-Side

Flutter admite utilizar Deep Links en iOS y navegadores web. Al abrir una URL, se mostrarĆ” esa pantalla en tu app. A continuaciĆ³n, te mostraremos cĆ³mo puedes lanzar y mostrar rutas creando rutas con nombre (ya sea con el parĆ”metro routes o con onGenerateRoute), o con el widget Router.

Importante
Las rutas con nombre ya no se recomiendan para la mayorĆ­a de las aplicaciones.

Si se ejecuta la aplicaciĆ³n en un navegador web, no es necesaria ninguna configuraciĆ³n adicional. Las rutas se gestionan del mismo modo que un enlace profundo de iOS. Por defecto, las aplicaciones web leen la ruta del enlace profundo a partir del fragmento de url utilizando el patrĆ³n /#/path/to/app/screen, pero esto puede cambiarse configurando la estrategia de URL para tu app.

Para conocer mĆ”s, ingresa a las documentaciones oficiales sobre cĆ³mo manejar DeepLinks para aplicaciones Flutter y cĆ³mo configurar Universal Link para iOS