Flutter - Integração para aplicações móveis - Mercado Pago Developers

Integrar com Flutter

Para integrar o Checkout Pro do Mercado Pago em um aplicativo para dispositivos móveis, é necessário exibir o fluxo de pagamento web dentro do aplicativo. Para isso, utilize o Custom Tabs para Android e o Safari View Controller para iOS.

Nesta documentação, você encontrará instruções detalhadas sobre como realizar essa integração utilizando Flutter e Custom Tabs. Serão apresentados os passos para instalação das bibliotecas necessárias, configuração das dependências e exemplos práticos de como abrir páginas web usando Custom Tabs.

Antes de integrar o Checkout Pro para aplicativos móveis, é necessário criar uma preferência de pagamento no seu backend. Se ainda não o fez, consulte a documentação sobre como Criar e configurar uma preferência de pagamento.

Em seguida, selecione o sistema operacional e siga o passo a passo correspondente.

Nesta etapa, você irá instalar e configurar as dependências necessárias para implementar Custom Tabs no seu projeto desenvolvido em Flutter.

Instalar a dependência Flutter Custom Tabs

Para instalar a dependência Flutter Custom Tabs, que permite abrir páginas web dentro de um aplicativo móvel, execute o seguinte comando no diretório raiz do projeto:

terminal

$ flutter pub add flutter_custom_tabs

Isso adicionará a linha dependencies: flutter_custom_tabs: ^2.4.0 ao arquivo pubspec.yaml do pacote. O comando flutter pub get será executado automaticamente.

Para utilizar Custom Tabs em seu código, importe o pacote no arquivo Dart onde deseja exibir o checkout:

dart

import 'package:flutter_custom_tabs/flutter_custom_tabs.dart';
Para mais informações, consulte a documentação oficial do Flutter Custom Tabs.

Implementar o Flutter Custom Tabs

Para implementar o Custom Tabs em seu aplicativo Flutter, siga o exemplo abaixo, que demonstra como abrir o checkout do Mercado Pago em um 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) {
      // Uma exceção é lançada caso não haja nenhum navegador instalado no dispositivo Android.
      debugPrint(e.toString());
    }
  }
}

Você pode personalizar a aparência da tela exibida especificando opções para cada plataforma. Para isso, utilize a classe de configuração CustomTabsOption, que permite definir parâmetros como cores, animações e comportamentos da aba do navegador nativo. Para mais detalhes, consulte a documentação oficial.

Para que o usuário possa voltar ao seu aplicativo após completar o pagamento, você precisará configurar Deep Links. Isso permite que, ao finalizar o fluxo de pagamento ou ao clicar em um botão de retorno, o usuário seja redirecionado automaticamente para uma tela específica do seu aplicativo.

1. Configurar as URLs de retorno na preferência de pagamento

Ao criar a preferência de pagamento no seu backend, adicione os parâmetros back_urls e auto_return. Para mais informações, consulte a documentação sobre como Criar e configurar uma preferência de pagamento.

json

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

O Flutter permite gerenciar Deep Links tanto no Android quanto no iOS. Para isso, utilize pacotes como uni_links ou go_router para detectar e gerenciar a navegação interna quando o aplicativo é aberto via Deep Link.

A configuração de Deep Links é um procedimento comum para todas as tecnologias móveis. Consulte a documentação oficial do Flutter sobre Deep Links, além do guia de App Links para Android ou Universal Links para iOS, conforme corresponda.