zoop_payment_tech 1.0.0 copy "zoop_payment_tech: ^1.0.0" to clipboard
zoop_payment_tech: ^1.0.0 copied to clipboard

PlatformAndroid

Plugin Flutter para integração com o SDK Zoop SmartPOS. Permite realizar pagamentos, PIX, login e cancelamentos através de terminais SmartPOS da Zoop.

example/lib/main.dart

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

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Zoop Payment Tech Example',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const PaymentPage(),
    );
  }
}

class PaymentPage extends StatefulWidget {
  const PaymentPage({super.key});

  @override
  State<PaymentPage> createState() => _PaymentPageState();
}

class _PaymentPageState extends State<PaymentPage> implements IZoopHandler {
  late Payment _payment;
  String _statusMessage = '';
  bool _isLoading = false;
  String? _qrCode;
  String? _token;

  @override
  void initState() {
    super.initState();
    // Inicializar o plugin com o handler
    _payment = ZoopPaymentTech.I.initPayment(handler: this);
  }

  Future<void> _login() async {
    setState(() {
      _statusMessage = 'Iniciando login...';
      _isLoading = true;
    });
    await _payment.login();
  }

  Future<void> _checkZoopKey() async {
    setState(() {
      _statusMessage = 'Verificando chave...';
      _isLoading = true;
    });
    await _payment.checkZoopKey();
  }

  Future<void> _makePayment() async {
    setState(() {
      _statusMessage = 'Iniciando pagamento...';
      _isLoading = true;
    });
    await _payment.creditPayment(amount: 500); // R$ 5,00
  }

  Future<void> _makePixPayment() async {
    setState(() {
      _statusMessage = 'Iniciando pagamento PIX...';
      _isLoading = true;
    });
    await _payment.pixPayment(amount: 500); // R$ 5,00
  }

  Future<void> _voidTransaction() async {
    setState(() {
      _statusMessage = 'Carregando transações...';
      _isLoading = true;
    });
    await _payment.voidTransaction();
  }

  Future<void> _cancelOperation() async {
    await _payment.cancelOperation();
    setState(() {
      _statusMessage = 'Operação cancelada';
      _isLoading = false;
    });
  }

  @override
  Future<void> onSuccess(String message) async {
    setState(() {
      _statusMessage = '✅ $message';
      _isLoading = false;
    });
  }

  @override
  Future<void> onError(String message) async {
    setState(() {
      _statusMessage = '❌ Erro: $message';
      _isLoading = false;
    });
  }

  @override
  Future<void> onMessage(String message) async {
    setState(() {
      _statusMessage = message;
    });
  }

  @override
  Future<void> onLoading(bool show) async {
    setState(() {
      _isLoading = show;
    });
  }

  @override
  Future<void> onQRCode(String qrCode) async {
    setState(() {
      _qrCode = qrCode;
    });
  }

  @override
  Future<void> onToken(String token) async {
    setState(() {
      _token = token;
      _statusMessage = 'Token gerado: $token\nInsira no dashboard para continuar.';
    });
  }

  @override
  Future<void> onVoidTransactionList(List<Map<String, dynamic>> transactions) async {
    setState(() {
      _statusMessage = '${transactions.length} transação(ões) encontrada(s)';
      _isLoading = false;
    });
    // Aqui você pode mostrar uma lista de transações para o usuário selecionar
    // Exemplo: await _payment.selectVoidTransaction(transactionKey);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: const Text('Zoop Payment Tech'),
      ),
      body: SingleChildScrollView(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: [
            if (_isLoading)
              const Padding(
                padding: EdgeInsets.all(16.0),
                child: Center(child: CircularProgressIndicator()),
              ),
            if (_statusMessage.isNotEmpty)
              Card(
                child: Padding(
                  padding: const EdgeInsets.all(16.0),
                  child: Text(
                    _statusMessage,
                    style: const TextStyle(fontSize: 16),
                    textAlign: TextAlign.center,
                  ),
                ),
              ),
            if (_token != null)
              Card(
                color: Colors.amber[50],
                child: Padding(
                  padding: const EdgeInsets.all(16.0),
                  child: Column(
                    children: [
                      const Text(
                        'Token para ativação:',
                        style: TextStyle(fontWeight: FontWeight.bold),
                      ),
                      const SizedBox(height: 8),
                      Text(
                        _token!,
                        style: const TextStyle(
                          fontSize: 24,
                          fontWeight: FontWeight.bold,
                          letterSpacing: 2,
                        ),
                      ),
                    ],
                  ),
                ),
              ),
            if (_qrCode != null)
              Card(
                child: Padding(
                  padding: const EdgeInsets.all(16.0),
                  child: Column(
                    children: [
                      const Text('QR Code PIX:'),
                      const SizedBox(height: 8),
                      // Aqui você pode usar um pacote para exibir QR Code
                      // Por exemplo: qr_flutter
                      Container(
                        width: 200,
                        height: 200,
                        color: Colors.grey[300],
                        child: const Center(
                          child: Text('QR Code aqui\n(use pacote qr_flutter)'),
                        ),
                      ),
                    ],
                  ),
                ),
              ),
            const SizedBox(height: 16),
            ElevatedButton(
              onPressed: _isLoading ? null : _login,
              child: const Text('Login/Ativar Terminal'),
            ),
            const SizedBox(height: 8),
            ElevatedButton(
              onPressed: _isLoading ? null : _checkZoopKey,
              child: const Text('Verificar Chave Zoop'),
            ),
            const SizedBox(height: 8),
            ElevatedButton(
              onPressed: _isLoading ? null : _makePayment,
              child: const Text('Pagamento Crédito (R\$ 5,00)'),
            ),
            const SizedBox(height: 8),
            ElevatedButton(
              onPressed: _isLoading ? null : _makePixPayment,
              child: const Text('Pagamento PIX (R\$ 5,00)'),
            ),
            const SizedBox(height: 8),
            ElevatedButton(
              onPressed: _isLoading ? null : _voidTransaction,
              child: const Text('Cancelar Transação'),
            ),
            const SizedBox(height: 8),
            OutlinedButton(
              onPressed: _isLoading ? _cancelOperation : null,
              child: const Text('Cancelar Operação Atual'),
            ),
          ],
        ),
      ),
    );
  }
}
0
likes
140
points
6
downloads

Publisher

verified publisherjylabtech.com.br

Weekly Downloads

Plugin Flutter para integração com o SDK Zoop SmartPOS. Permite realizar pagamentos, PIX, login e cancelamentos através de terminais SmartPOS da Zoop.

Homepage

Documentation

API reference

License

unknown (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on zoop_payment_tech

Packages that implement zoop_payment_tech