Visita pub.dev para obtener más información sobre nuestro plugin de Flutter:

pub version

Una vez que haya configurado su proyecto correctamente, haya requerido los permisos necesarios, entonces solo tendrá que importar el paquete con:

import 'package:ironchip_lbfraud_plugin/ironchip_lbfraud.dart';

Para enviar una transacción, primero debe inicializar el SDK proporcionando una clave API válida.

    // Reemplace APIKEY con la clave API generada.
    // De forma predeterminada, nuestro plugin apunta al entorno de producción.
    // En caso de que desee apuntar a un entorno diferente:
    // LBFraudSDK fraud = new LbfraudFlutterPlugin.initFraudSDK("APIKEY", env: Environment.testing);
    await _lbfraudPlugin.initFraudSDK(apiKey);

Una vez que se ha inicializado el servicio, ahora puede realizar transacciones:

    try {
      // TransactionID (obligatorio, único): solicitud de identificador de transacción para resultados de fraude
      // UserID (obligatorio): identificador de usuario
      // extraData (opcional): información extra para análisis
      // Puedes omitir la espera en caso de que el resultado de la acción no sea necesario.
      var result =
          await _lbfraudPlugin.sendTransaction(transactionID, userID, {});

      _showResult = result!;
      _resultError = false;
    } catch (e) {
      _showResult = e.toString();
      _resultError = true;
    }

Aunque sendTransaction es asíncrono, no es necesario realizar un ‘await’ a menos que desee verificar el resultado real de la acción. Además, si deseas utilizar un proxy específico al realizar una transacción, puedes configurarlo usando:

   try {
      var result =
          await _lbfraudPlugin.setProxy(host, port);
    } catch (e) {
    }

Example

import 'package:flutter/material.dart';
import 'dart:async';
import 'dart:math';

import 'package:flutter/services.dart';
import 'package:ironchip_lbfraud/ironchip_lbfraud.dart';

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

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

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final _lbfraudPlugin = IronchipLbfraud();
  String apiKey =
      "APIKEY"; // Reemplace APIKEY con la clave API generada que desee.
  bool _isLbfraudInitialized = false;

  String userID = "john.doe@gmail.com"; // Identificador de usuario
  String _showResult = "";
  bool _resultError = false;

  @override
  void initState() {
    super.initState();
  }

  // Los métodos LBFraud son asíncronos, por lo que los inicializamos en un método asíncrono.
  Future<void> initLBFraudState() async {
    try {
      // Reemplace APIKEY con la clave API generada que desee.
      // De forma predeterminada, nuestro SDK se dirige al entorno de producción.
      // En caso de que desee apuntar a un entorno diferente:
      // LBFraudSDK fraud = new LbfraudFlutterPlugin.initFraudSDK("APIKEY", env: Environment.testing);
      await _lbfraudPlugin.initFraudSDK(apiKey);

      _isLbfraudInitialized = true;
    } catch (e) {
      _isLbfraudInitialized = false;
    }

    setState(() {
      _isLbfraudInitialized = _isLbfraudInitialized;
    });
  }

  String generateRandomTransactionID(int length) {
    const _chars =
        'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890';
    Random _rnd = Random();

    return String.fromCharCodes(Iterable.generate(
        length, (_) => _chars.codeUnitAt(_rnd.nextInt(_chars.length))));
  }

  Future<void> sendTransaction() async {
    try {
    // ID de transacción (obligatorio, único): solicitud de identificador de transacción para resultados de fraude
      // UserID (obligatorio): identificador de usuario
      // extraData (opcional): información extra para análisis
      // Puedes omitir la espera (await) en caso de que el resultado de la acción no sea necesario.

      var result = await _lbfraudPlugin
          .sendTransaction(generateRandomTransactionID(10), userID, {});

      _showResult = result!;
      _resultError = false;
    } catch (e) {
      _showResult = e.toString();
      _resultError = true;
    }

    setState(() {
      _resultError = _resultError;
      _showResult = _showResult;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
      appBar: AppBar(
        title: const Text('Ironchip LBFraud example app'),
        backgroundColor: Color(0xFF005255),
      ),
      body: Container(
        margin: EdgeInsets.all(40.0),
        child: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              TextField(
                onChanged: (value) {
                  apiKey = value;
                },
                decoration: const InputDecoration(labelText: "API Key"),
              ),
              SizedBox(height: 20),
              Text(
                _isLbfraudInitialized
                    ? "LBFraud initialized"
                    : "LBFraud is not initialized",
                style: TextStyle(
                  color: _isLbfraudInitialized
                      ? Color(0xFF495c11f)
                      : Color(0xFFF44336),
                ),
              ),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: initLBFraudState,
                style: ElevatedButton.styleFrom(
                  primary: Color(0xFF495c11f),
                ),
                child: Text('Initialize LBFraud'),
              ),
              TextField(
                onChanged: (value) {
                  userID = value;
                },
                decoration: const InputDecoration(labelText: "User ID"),
              ),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: _isLbfraudInitialized ? sendTransaction : null,
                style: ElevatedButton.styleFrom(
                  primary: Color(0xFF495c11f)
                ),
                child: Text('Send Transaction'),
              ),
              SizedBox(height: 20),
              Text(
                _showResult,
                style: TextStyle(
                  color: _resultError ? Color(0xFFF44336) : Colors.black,
                ),
              ),
            ],
          ),
        ),
      ),
    ));
  }
}