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.
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';
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.
Retorno ao aplicativo com Deep Links
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"
2. Configurar a recepção e gestão de Deep Links no Flutter
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.