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

PlatformAndroid

Flutter implementation of Billpocket for Android

Billpocket Plugin #

Introducing Billpocket: Simplifying Mobile Card Payments and Terminal Integration for Flutter

Show some ❤️ and star the repo to support the project

Getting Started #

Android #

You need to add the following permissions in android to request bluetooth access

    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

Dart #

Set your Billpocket token and development environment.

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Billpocket.config(
      isProduction: true,
      token: '{YOUR_TOKEN}');
  runApp(const MyAppPage());
}

Documentation #

SDK status #

You can check the status of the SDK initialization by calling the following line of code:

await Billpocket.getStatusSDK();

Which will return a bool value.

Terminal list #

You can get the list of all the terminals that have been paired via bluetooth with the following method:

await Billpocket.getReaders();

Which will return a List<Reader> value.

Connect terminal #

Once you have chosen a terminal you must call the following method sending the parameters obtained in Reader:

await Billpocket.connectReader(
          readerType: readerType,
          readerMacAddress: readerMacAddress,
          name: name);

Which will return a bool value.

Start a transaction #

await Billpocket.doTransaction(
                              amount: "10",
                              tip: "0",
                              latitude: 19.42691938620286,
                              longitude: -99.16780320031096,
                              description: "description");

Running this method will trigger a stream of events.

Billpocket.transactionStream().listen((event) {
      final eventName = event['event'];
      final message = event['message'];

      switch (eventName) {
        case 'onTransactionAborted':
          // Handle the onTransactionAborted event
          print('Transaction aborted: $message');
          break;
        case 'onBeforeTransaction':
          // Handle the onBeforeTransaction event
          print('Transaction before: $message');
          break;
        case 'onCardRead':
          // Handle the onCardRead event
          print('Transaction card read: $message');
          break;
        case 'getSignature':
          // Handle the getSignature event
          print('Transaction get signature: $message');
          break;
        case 'onReaderWaitingForCard':
          // Handle the onReaderWaitingForCard event
          print('Transaction reader waiting for card: $message');
          break;
        case 'onMsiDefined':
          // Handle the onMsiDefined event
          final list = event['list'];
          print('Transaction msi defined: $message');
          print('MSI list: $list');
          showMSI(list);
          break;
        case 'onGetPin':
          // Handle the onGetPin event
          print('Transaction get pin: $message');
          break;
        case 'onMagneticCardFound':
          // Handle the onMagneticCardFound event
          print('Transaction magnetic card found: $message');
          break;
        case 'onTransactionFinished':
          // Handle the onTransactionFinished event
          print('Transaction finished: $message');
          break;
        case 'onTransactionSuccessful':
          // Handle the onTransactionSuccessful event
          print('Transaction successful: $message');
          break;
        case 'resultStartTransaction':
          // Handle the resultStartTransaction event
          print('Transaction result start: $message');
          break;
        case 'resultStartTransactionSuccess':
          // Handle the resultStartTransactionSuccess event
          print('Transaction result start success: $message');
          break;
        case 'resultStartTransactionError':
          // Handle the resultStartTransactionError event
          print('Transaction result start error: $message');
          break;
        // Handle other events similarly
        default:
          print('Unknown event received: $eventName');
          break;
      }

Explanation of events

  • onGetPin and getSignature: These methods will open native screens so there is no need to handle the response.

  • onMsiDefined: This method will return a string that must be parsed to get a List<Installment>. Please review the example.

  • other methods: These methods are transactional so it depends on the use case.

Months without interest #

If the amount you have entered in doTransaction exceeds the limit of months without interest, the onMsiDefined event explained above will be triggered. As a list will be obtained and an interest-free months option must be chosen to continue with the transaction, you must call the following method sending the chosen parameters in Installment:

Billpocket.continueWithMsi(
                            commission: installment[pos].commission!,
                            installments: installment[pos].value!,
                            minAmount: installment[pos].minAmount!,
                          );

Calling that method will continue the flow in the stream explained above.

Issues #

Please file any issues, bugs, or feature requests in the GitHub repo.

Contributing #

If you wish to contribute a change to this repo, please send a pull request.

Acknowledgments #

This package was originally created by Abel Tarazona and Jared González.

5
likes
130
points
17
downloads

Publisher

verified publisherapprecio.mx

Weekly Downloads

Flutter implementation of Billpocket for Android

Homepage

Documentation

API reference

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on flutter_billpocket