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

Squad payment sdk for flutter. Supports both Android and IOS.

Android #

IOS #

Flutter Squad Package #

A Flutter package for making payments via Squad Payment Gateway. Android and iOS supported.

Getting Started #

To use this package, add flutter_squad as a dependency in your pubspec.yaml file.

How to use #

import 'package:flutter_squad/flutter_squad.dart';

SquadTransactionResponse? response = await Squad.checkout(context, charge(), sandbox: true);

 Charge charge() {
    return Charge(
        amount: 10000,
        publicKey: [Your Public Key], // e.g "sandbox_pk_a7ce8374b818a8e2b67444440027f256b7d53ec0645dc7a3b",
        secretKey: [Your Secret Key], // e.g  "sandbox_sk_a7ce8374b818a8e2b67444440127f5f6f7133f30a25a50d3d"
        email: "customer@gmail.com",
        currencyCode: "NGN",
        transactionRef: [Your Transaction Ref], // e.g "SQUAD-PYM-JIKW1223_"
        paymentChannels: ["card", "bank", "ussd", "transfer"],
        customerName: "Customer Name",
        callbackUrl: null,
        metadata: {"deviceType": "ios"},
        passCharge: false);
  }
 

No other configuration required—the plugin works out of the box.

Parameters #

To initialize a transaction, you need to pass details such as email, first name, last name, amount, transaction reference, etc to the Squad.checkout() method. The Email, amount, and currency are required. You can also pass any other additional information in the metadata field.

Example #


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

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        title: 'Squad Example',
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        home: const SquadExample());
  }
}

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

  @override
  State<SquadExample> createState() => _SquadExampleState();
}

class _SquadExampleState extends State<SquadExample> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: SizedBox(
      width: MediaQuery.of(context).size.width,
      height: MediaQuery.of(context).size.height,
      child: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            TextButton(
              child: const Text("Pay With Squad"),
              onPressed: () async {
                SquadTransactionResponse? response =
                    await Squad().checkout(context, charge(), sandbox: true);
                
              },
            ),
          ],
        ),
      ),
    ));
  }

  Charge charge() {
    return Charge(
        amount: 10000,
        publicKey:
            "sandbox_pk_a7ce8374b818a8e2b67444440027f256b7d53ec0645dc7a3b",
        secretKey:
            "sandbox_sk_a7ce8374b818a8e2b67444440127f5f6f7133f30a25a50d3d",
        email: "emma@yopmail.com",
        currencyCode: "NGN",
        transactionRef: "SQUAD-PYM-${generateRandomString(10)}",
        paymentChannels: ["card", "bank", "ussd", "transfer"],
        customerName: "Emmanuel Izedomi",
        callbackUrl: null,
        metadata: {"name": "Damilare", "age": 45},
        passCharge: false);
  }

  String generateRandomString(int len) {
    const chars =
        'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890';
    Random rnd = Random();
    return String.fromCharCodes(Iterable.generate(
        len, (_) => chars.codeUnitAt(rnd.nextInt(chars.length))));
  }
}

The Squad.checkout() method returns a SquadTransactionResponse object for a successful transaction with the following properties:

  int? status;
  bool? success;
  String? message;
  Data? data;

The transaction is successful if status is 200 or 202. 200 represents a verified successful transaction. 202 represents an unverified successful transaction.

More on verifying a transaction, see docs here

For a verified successful transaction (i.e status is 200) the data property on the SquadTransactionResponse contains a Data object with the transaction details:

  int? transactionAmount;
  String? transactionRef;
  String? email;
  String? transactionStatus;
  String? transactionCurrencyId;
  DateTime? createdAt;
  String? transactionType;
  String? merchantName;
  String? merchantBusinessName;
  String? gatewayTransactionRef;
  String? merchantEmail;
  dynamic meta;

For an unverified successful transaction (i.e status is 202) the data property on the SquadTransactionResponse is null

It is recommended to verify the transaction status with the backend before providing value. By default, the package does not verify your transactions. To allow the flutter_squad package verify your transaction after successful payment, provide the transactionRef and secretKey to the charge object.

For a failed transaction, the Squad.checkout() method returns null.

Customizations #

To Customize the appbar to suit your project's theme color use the appbar argument on Squad.checkout().


await Squad.checkout(
    context, charge(),
    sandbox: true,
    appBar: AppBarConfig(
        color: Colors.green,
        leadingIcon: const Icon(Icons.close)));

If you prefer to use without the appbar, set showAppbar argumment to false

 await Squad.checkout(
    context, charge(),
    sandbox: true,
    showAppbar: false,
 );

Contributing, Issues and Bug Reports #

The project is open to public contribution. Please feel very free to contribute. Experienced an issue or want to report a bug? Please, report it here. Remember to be as descriptive as possible.

Need More Information? #

For further info about Squad Payment, including transaction response types, see Squad API Documentation

0
likes
120
pub points
35%
popularity

Publisher

unverified uploader

Squad payment sdk for flutter. Supports both Android and IOS.

Repository (GitHub)
View/report issues

Documentation

API reference

License

BSD-2-Clause (LICENSE)

Dependencies

dio, flutter, fluttertoast, webview_flutter_plus

More

Packages that depend on flutter_squad