littlefishpay_mypinpad_sdk 0.0.1 copy "littlefishpay_mypinpad_sdk: ^0.0.1" to clipboard
littlefishpay_mypinpad_sdk: ^0.0.1 copied to clipboard

PlatformAndroidiOS
unlisted

The littlefishpay mypinpad sdk plugin implementation.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'dart:async';
import 'dart:convert';
import 'package:dartz/dartz.dart' as dz;
import 'package:littlefish_interfaces/pos_result_interface.dart';

import 'package:flutter/services.dart';
import 'package:littlefishpay_mypinpad_sdk/littlefishpay_mypinpad_sdk.dart';
import 'package:littlefishpay_mypinpad_sdk/mypinpad_card_payment_gateway.dart';

import 'transaction_dialog.dart';

void main() {
  runApp(
    const MaterialApp(
      home: MyApp(),
    ),
  );
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

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

class _MyAppState extends State<MyApp> {
  String _result = "Initializing Terminal Please Wait....";
  final mppCardPaymentGateway = MypinpadCardPaymentGateway();

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

  Future<void> initPlatformState() async {
    String platformVersion = 'Initializing....';

    try {
      platformVersion = await LittlefishpayMypinpadSdk.createTerminal(
              primaryColorHex: "#800080",
              appName: "SimplyPurple",
              isoCurrencyCode: 710) ??
          'Unknown MyPinPad SDK version';
    } on PlatformException {
      platformVersion = 'Failed to get platform version.';
    }

    if (!mounted) return;
    Map<String, dynamic> parsedData = json.decode(platformVersion);
    setState(() {
      _result = parsedData["message"];
    });
  }

  Future<void> purchase(double amount) async {
    String result = 'Purchase Failed';

    try {
      result = await LittlefishpayMypinpadSdk.purchase(amount) ??
          'Unknown platform version';
    } on PlatformException {
      result = 'Purchase Failed';
    }

    if (!mounted) return;
    Map<String, dynamic> parsedData = json.decode(result);

    setState(() {
      _result = parsedData["transactionResponse"];
    });
  }

  Future<void> purchaseViaGateway(double amount) async {
    dz.Either<String, POSResultInterface> response;
    POSResultInterface? result;
    String? resultString;

    try {
      response = await mppCardPaymentGateway.charge(amount.toString());
      response.fold(
        (l) => resultString = l,
        (r) => result = r,
      );
    } on PlatformException {
      resultString = 'Purchase Failed';
    }

    if (!mounted) return;
    {
      if (result != null) {
        Map<String, dynamic> parsedData = result!.resultObject;

        setState(() {
          _result = parsedData["transactionResponse"];
        });
      } else {
        setState(() {
          _result = resultString ?? 'No result';
        });
      }
    }
  }

  Future<void> disposeTerminal() async {
    String result = 'Terminal Dispose Failed';

    try {
      result = await LittlefishpayMypinpadSdk.disposeTerminal() ??
          'Unknown platform version';
    } on PlatformException {
      result = 'Terminal Dispose Failed';
    }

    if (!mounted) return;
    Map<String, dynamic> parsedData = json.decode(result);

    setState(() {
      _result = parsedData["transactionResponse"];
    });
  }

  Future<void> openSDK() async {
    String result = 'Open SDK Failed';

    try {
      result =
          await LittlefishpayMypinpadSdk.openSDK ?? 'Unknown platform version';
    } on PlatformException {
      result = 'Open SDK Failed';
    }

    if (!mounted) return;

    setState(() {
      _result = result;
    });
  }

  Future<void> refund(double amount) async {
    String result = 'Refund Failed';

    try {
      result = await LittlefishpayMypinpadSdk.refund(amount) ??
          'Unknown platform version';
    } on PlatformException {
      result = 'Refund Failed';
    }

    if (!mounted) return;
    Map<String, dynamic> parsedData = json.decode(result);

    setState(() {
      _result = parsedData["transactionResponse"];
    });
  }

  Future<void> refundViaGateway(double amount) async {
    dz.Either<String, POSResultInterface> response;
    POSResultInterface? result;
    String? resultString;

    try {
      response = await mppCardPaymentGateway.refund(amount.toString());
      response.fold(
        (l) => resultString = l,
        (r) => result = r,
      );
    } on PlatformException {
      resultString = 'Refund Failed';
    }

    if (!mounted) return;
    {
      if (result != null) {
        Map<String, dynamic> parsedData = result!.resultObject;

        setState(() {
          _result = parsedData["transactionResponse"];
        });
      } else {
        setState(() {
          _result = resultString ?? 'No result';
        });
      }
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('My PinPad Example App'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              Text('Result: $_result\n'),

              // Button to open the terminal
              ElevatedButton(
                onPressed: () async {
                  if (_result == "Initializing Terminal Please Wait....") {
                    return;
                  }
                  await openSDK();
                },
                style: ElevatedButton.styleFrom(
                  foregroundColor:
                      _result == "Initializing Terminal Please Wait...."
                          ? Colors.grey
                          : Colors.blue,
                  shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.circular(20.0),
                  ),
                ),
                child: const Text('Open Terminal'),
              ),
              const SizedBox(height: 32),

              // Button to perform a transaction
              ElevatedButton(
                onPressed: () {
                  if (_result == "Initializing Terminal Please Wait....") {
                    return;
                  }
                  showDialog(
                    context: context,
                    builder: (context) {
                      return TransactionDialog(
                        onPurchase: (amount) async {
                          await purchaseViaGateway(amount);
                        },
                      );
                    },
                  );
                },
                style: ElevatedButton.styleFrom(
                  foregroundColor:
                      _result == "Initializing Terminal Please Wait...."
                          ? Colors.grey
                          : Colors.blue,
                  shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.circular(20.0),
                  ),
                ),
                child: const Text('Perform Transaction'),
              ),

              const SizedBox(height: 32),

              // Button to perform a refund
              ElevatedButton(
                onPressed: () async {
                  if (_result == "Initializing Terminal Please Wait....") {
                    return;
                  }
                  showDialog(
                    context: context,
                    builder: (context) {
                      return TransactionDialog(
                        onPurchase: (amount) async {
                          await refundViaGateway(amount);
                        },
                      );
                    },
                  );
                },
                style: ElevatedButton.styleFrom(
                  foregroundColor:
                      _result == "Initializing Terminal Please Wait...."
                          ? Colors.grey
                          : Colors.blue,
                  shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.circular(20.0),
                  ),
                ),
                child: const Text('Perform Refund'),
              ),
              const SizedBox(height: 32),
              ElevatedButton(
                onPressed: () async {
                  if (_result == "Initializing Terminal Please Wait....") {
                    return;
                  }
                  await disposeTerminal();
                },
                style: ElevatedButton.styleFrom(
                  foregroundColor:
                      _result == "Initializing Terminal Please Wait...."
                          ? Colors.grey
                          : Colors.blue,
                  shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.circular(20.0),
                  ),
                ),
                child: const Text('Dispose Terminal'),
              ),
              const SizedBox(height: 32),
            ],
          ),
        ),
      ),
    );
  }
}
0
likes
110
points
7
downloads

Documentation

API reference

Publisher

verified publisherlittlefishapp.com

Weekly Downloads

The littlefishpay mypinpad sdk plugin implementation.

Homepage

License

unknown (license)

Dependencies

dartz, flutter, littlefish_interfaces

More

Packages that depend on littlefishpay_mypinpad_sdk

Packages that implement littlefishpay_mypinpad_sdk