Skip to content

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