Integracao Flutter — Assinaturas com Cartao¶
Documento Atualizado
O conteudo desta pagina foi consolidado nos guias de integracao por gateway. Consulte os documentos abaixo para informacoes atualizadas.
Documentacao por Gateway¶
| Gateway | Documento | Metodos Suportados |
|---|---|---|
| Stripe | Integracao Stripe | Cartao de credito, PIX, Apple Pay, Google Pay |
| Asaas | Integracao Asaas | Cartao de credito, PIX, Boleto |
Quick Start Flutter — Stripe¶
// 1. Adicionar dependencia ao pubspec.yaml:
// flutter_stripe: ^10.0.0
// http: ^1.1.0
// 2. Obter publishable key do backend (NUNCA hardcodar)
final configResp = await http.get(Uri.parse('$baseUrl/api/v1/stripe/config'));
final publishableKey = jsonDecode(configResp.body)['publishable_key'];
Stripe.publishableKey = publishableKey;
await Stripe.instance.applySettings();
// 3. Coletar cartao via CardField (PCI Level 1)
// 4. Criar PaymentMethod
final pm = await Stripe.instance.createPaymentMethod(
params: PaymentMethodParams.card(paymentMethodData: PaymentMethodData()),
);
// 5. Criar assinatura
final resp = await http.post(
Uri.parse('$baseUrl/api/v1/stripe/subscribe'),
headers: {'Authorization': 'Bearer $token', 'Content-Type': 'application/json'},
body: jsonEncode({'plan_id': 'plan-basic', 'payment_method_id': pm.id}),
);
// 6. Tratar resultado
final data = jsonDecode(resp.body);
final info = data['info'];
if (info['payment_failed'] == true) {
// Cartao recusado — exibir info['message'] e permitir retry
} else if (info['client_secret'] != null) {
// 3D Secure — confirmar pagamento
await Stripe.instance.confirmPayment(paymentIntentClientSecret: info['client_secret']);
} else {
// Sucesso — navegar para home
}
Documentacao completa: Integracao Stripe
Quick Start Flutter — Asaas¶
// Asaas nao requer SDK adicional — use http padrao.
// Ver asaas-integration.md para fluxo completo de tokenizacao de cartao.
final resp = await http.post(
Uri.parse('$baseUrl/api/v1/asaas/subscribe'),
headers: {'Authorization': 'Bearer $token', 'Content-Type': 'application/json'},
body: jsonEncode({
'plan_id': 'plan-basic',
'payment_method': 'credit_card',
// Consulte asaas-integration.md para campos obrigatorios
}),
);
Documentacao completa: Integracao Asaas
Sincronizacao de Status no Login¶
O backend sincroniza automaticamente o status da assinatura com o gateway a cada login do customer (POST /token). Apos login, o frontend pode confiar que GET /customers/me/subscription retorna o status real.
// 1. Login
final loginResponse = await login(username, password);
saveToken(loginResponse.accessToken);
// 2. Verificar status da assinatura (ja sincronizado pelo backend)
final subscription = await getMySubscription(loginResponse.accessToken);
if (subscription.status == 'active') {
navigateTo(HomeScreen()); // Acesso liberado
} else {
navigateTo(SubscribeScreen()); // Redireciona para assinar
}
Ver Tambem¶
- Guia do Frontend — Fluxo completo de cadastro, assinatura e PIX
- Flutter Quick Start (5 min) — Setup minimo
- Integracao Stripe — Guia completo Stripe
- Integracao Asaas — Guia completo Asaas