Giter VIP home page Giter VIP logo

wilburx9 / flutter_paystack Goto Github PK

View Code? Open in Web Editor NEW
204.0 204.0 344.0 1.45 MB

:credit_card: A robust Flutter plugin for making payments via Paystack Payment Gateway. Completely supports Android and iOS

Home Page: https://pub.dartlang.org/packages/flutter_paystack

License: Apache License 2.0

Kotlin 5.18% Objective-C 6.71% Dart 87.24% Ruby 0.88%
flutter flutter-paystack flutter-plugin money payment payment-gateway paystack paystack-api paystack-sdk

flutter_paystack's Introduction

πŸ’³ Paystack Plugin for Flutter

build status Coverage Status pub package

A Flutter plugin for making payments via Paystack Payment Gateway. Fully supports Android and iOS.

πŸš€ Installation

To use this plugin, add flutter_paystack as a dependency in your pubspec.yaml file.

Then initialize the plugin preferably in the initState of your widget.

import 'package:flutter_paystack/flutter_paystack.dart';

class _PaymentPageState extends State<PaymentPage> {
  var publicKey = '[YOUR_PAYSTACK_PUBLIC_KEY]';
  final plugin = PaystackPlugin();

  @override
  void initState() {
    plugin.initialize(publicKey: publicKey);
  }
}

No other configuration requiredβ€”the plugin works out of the box.

πŸ’² Making Payments

There are two ways of making payment with the plugin.

  1. Checkout: This is the easy way; as the plugin handles all the processes involved in making a payment (except transaction initialization and verification which should be done from your backend).
  2. Charge Card: This is a longer approach; you handle all callbacks and UI states.

1. 🌟 Checkout (Recommended)

You initialize a charge object with an amount, email & accessCode or reference. Pass an accessCode only when you have initialized the transaction from your backend. Otherwise, pass a reference.

Charge charge = Charge()
      ..amount = 10000
      ..reference = _getReference()
       // or ..accessCode = _getAccessCodeFrmInitialization()
      ..email = '[email protected]';
    CheckoutResponse response = await plugin.checkout(
      context context,
      method: CheckoutMethod.card, // Defaults to CheckoutMethod.selectable
      charge: charge,
    );

Please, note that an accessCode is required if the method is CheckoutMethod.bank or CheckoutMethod.selectable.

plugin.checkout() returns the state and details of the payment in an instance of CheckoutResponse .

It is recommended that when plugin.checkout() returns, the payment should be verified on your backend.

2. ⭐ Charge Card

You can choose to initialize the payment locally or via your backend.

A. Initialize Via Your Backend (Recommended)

1.a. This starts by making a HTTP POST request to paystack on your backend.

1.b If everything goes well, the initialization request returns a response with an access_code. You can then create a Charge object with the access code and card details. The charge is in turn passed to the plugin.chargeCard() function for payment:

  PaymentCard _getCardFromUI() {
    // Using just the must-required parameters.
    return PaymentCard(
      number: cardNumber,
      cvc: cvv,
      expiryMonth: expiryMonth,
      expiryYear: expiryYear,
    );
  }

  _chargeCard(String accessCode) async {
    var charge = Charge()
      ..accessCode = accessCode
      ..card = _getCardFromUI();

    final response = await plugin.chargeCard(context, charge: charge);
    // Use the response
  }

The transaction is successful if response.status is true. Please, see the documentation of CheckoutResponse for more information.

2. Initialize Locally

Just send the payment details to plugin.chargeCard

      // Set transaction params directly in app (note that these params
      // are only used if an access_code is not set. In debug mode,
      // setting them after setting an access code would throw an error
      Charge charge = Charge();
      charge.card = _getCardFromUI();
      charge
        ..amount = 2000
        ..email = '[email protected]'
        ..reference = _getReference()
        ..putCustomField('Charged From', 'Flutter PLUGIN');
      _chargeCard();

πŸ”§ πŸ”© Validating Card Details

You are expected but not required to build the UI for your users to enter their payment details. For easier validation, wrap the TextFormFields inside a Form widget. Please check this article on validating forms on Flutter if this is new to you.

NOTE: You don't have to pass a card object to Charge. The plugin will call-up a UI for the user to input their card.

You can validate the fields with these methods:

card.validNumber

This method helps to perform a check if the card number is valid.

card.validCVC

Method that checks if the card security code is valid.

card.validExpiryDate

Method checks if the expiry date (combination of year and month) is valid.

card.isValid

Method to check if the card is valid. Always do this check, before charging the card.

card.getType

This method returns an estimate of the string representation of the card type(issuer).

βœ”οΈ Verifying Transactions

This is quite easy. Just send a HTTP GET request to https://api.paystack.co/transaction/verify/$[TRANSACTION_REFERENCE]. Please, check the official documentaion on verifying transactions.

🚁 Testing your implementation

Paystack provides tons of payment cards for testing.

▢️ Running Example project

For help getting started with Flutter, view the online documentation.

An example project has been provided in this plugin. Clone this repo and navigate to the example folder. Open it with a supported IDE or execute flutter run from that folder in terminal.

πŸ“ 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.

πŸ† Credits

Thanks to the authors of Paystack iOS and Android SDKS. I leveraged on their work to bring this plugin to fruition.

flutter_paystack's People

Contributors

itope84 avatar nuelsoft avatar wilburx9 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flutter_paystack's Issues

MissingPluginException(No implementation found for method getUserAgent on channel flutter_paystack)

[ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: MissingPluginException(No implementation found for method getUserAgent on channel flutter_paystack)
E/flutter (24457): #0 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:319:7)
E/flutter (24457):
E/flutter (24457): #1 PaystackPlugin.initialize (package:flutter_paystack/src/common/paystack.dart:50:48)
E/flutter (24457): #2 _PaymentActivity.initState (package:mykab/ui/activities/payment_gateway.dart:28:20)
E/flutter (24457): #3 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4355:58)
E/flutter (24457): #4 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
E/flutter (24457): #5 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (24457): #6 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (24457): #7 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
E/flutter (24457): #8 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (24457): #9 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (24457): #10 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
E/flutter (24457): #11 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
E/flutter (24457): #12 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
E/flutter (24457): #13 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
E/flutter (24457): #14 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (24457): #15 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (24457): #16 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
E/flutter (24457): #17 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (24457): #18 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (24457): #19 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
E/flutter (24457): #20 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (24457): #21 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (24457): #22 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
E/flutter (24457): #23 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
E/flutter (24457): #24 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
E/flutter (24457): #25 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
E/flutter (24457): #26 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
E/flutter (24457): #27 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (24457): #28 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (24457): #29 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
E/flutter (24457): #30 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (24457): #31 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (24457): #32 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
E/flutter (24457): #33 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (24457): #34 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (24457): #35 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
E/flutter (24457): #36 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
E/flutter (24457): #37 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
E/flutter (24457): #38 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
E/flutter (24457): #39 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
E/flutter (24457): #40 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (24457): #41 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (24457): #42 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
E/flutter (24457): #43 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
E/flutter (24457): #44 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart

Error when building

Got the error below. Please help

The Android Gradle plugin supports only Kotlin Gradle plugin version 1.3.0 and higher.
The following dependencies do not satisfy the required version:
project ':flutter_paystack' -> org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.71

Processing Paystack payment error

I couldn't complete payment on Paystack. It keeps showing "loading..." icon without throwing any error or terminating the process.

Couldn't set up the plugin in my project

I followed the documentation but doesn't seem to talk about how to implement, I tried calling it on click of a button, but got errors on the get reference method and context

Capture

FlutterPaystackPlugin.h' file not found

I get this error flutter_paystack/FlutterPaystackPlugin.h' file not found when I open my flutter project in Xcode, it started happening the moment I added the flutter_paystack to the app.

Missing file in the new version

I just upgraded to the latest version 1.0.3 and i"m getting the error below which suggests a file is missing.

Couldn't read file LocalFile:
'/Users/omotayo/flutter_paystack/android/src/main/kotlin/io/flutter/plugins/webviewflutter/WebViewF
lutterPlugin.kt' even though it exists. Please verify that this file has read permission and try
again.

Project fails to build after adding dependency

My project is not building anymore after adding the flutter_paystack: ^1.0.3+1 to the pubspec.yaml file.
Error on debug console: Couldn't read file LocalFile: 'C:\flutter code\playground\android\src\main\kotlin\co\paystack\flutterpaystack\FlutterPaystackPlugin.kt' even though it exists. Please verify that this file has read permission and try again.

Gradle task assembleDebug failed with exit code 1 in v0.10.0

Please i'm having this issue after installing the package and trying to run on Android device or build an APK.

FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:preDebugBuild'.
> Android dependency 'com.android.support:support-core-ui' has different version for the compile (27.1.1) and runtime (28.0.0) classpath. You should manually set the same version via DependencyResolution
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 2s
Gradle task assembleDebug failed with exit code 1

What can i do please?

Transaction terminated CheckoutResponse.message typo

If a user cancels the transaction by clicking the close icon button, the returned message field of the CheckoutResponse class has a minor typo. It returns "Transactio terminated" instead of "Transaction terminated"

Question

Can you add payment with USSD?

update amount

please how do i update each user record. Especially the amount

ANDROID X ERROR, WHENEVER THE BUILDING AND INSTALLATION IS THE PROGRESS

ANYTIME I ADD THE PLUGIN AND TRY TO BUILD OR INSTALL THE APP ON MY PHONE, IT GIVES ANDROID X IMCOMPOTABILTIES AND WHENEVER I REMOVE THE DEPENDENCY OR PLUGIN THE APP BUILDS AND INSTALL SUCCESSFULLY. DON'T KNOW MAYBE THERE ARE SOME CERTAIN INSTRUCTIONS WE NEED TO FOLLOW BEFORE USING YOUR DEPENDENCY OR A BUG IN THE DEPENDENCY.

IF THERE IS NOTHING WITH THE DEPENDENCY, I WOULD LIKE TO REQUEST A DETAILED PROCESS OF INSTALLING AND USING YOUR DEPENDENCY.

IN VERSION
^1.0.1, AND
^1.0.1+1

Screenshot (15)

Why checkout require secret key ?

Putting the secret key in the client code imposes security risks. and this behavior is being recommended in the README file. Shouldn't we process the info related to the secret key in the backend?

Am I right? if so how can use the checkout process without the need for the secret key?

Android dependency issues preventing build

Awesome plugin. Although I am not able to build on Android. It throws this error

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':app:preDebugBuild'.

Android dependency 'com.android.support:support-fragment' has different version for the compile (27.1.1) and runtime (28.0.0) classpath. You should manually set the same version via DependencyResolution

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 1s
Finished with error: Gradle task assembleDebug failed with exit code 1

Any advice on how to solve this is highly appreciated. Thanks.

error on app integration

after integrating this package i'm getting this error

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':app:preDebugBuild'.

Android dependency 'androidx.core:core' has different version for the compile (1.0.0) and runtime (1.1.0-alpha03) classpath. You should manually set the same version via DependencyResolution

Access code has expired

I keep getting Access code has expired and transaction keeps repeating it self because of this line

if (e is ExpiredAccessCodeException) { _startAfreshCharge(); _chargeCard(charge); print(e); return; }

Androidx Error when using firebase_auth

Thanks for your plugin.

Been battling for hours with this.
When I use these two plugins together, it always pops up Androidx errors:

firebase_auth: 0.7.0
flutter_paystack: ^1.0.1

When I use either of them separately, the code works fine.

Here are my android dependencies:
dependencies {
classpath 'com.android.tools.build:gradle:3.3.1'
classpath 'com.google.gms:google-services:3.2.1'
}

What could be wrong?

Version Solving Failure

Hi Wilberforce
When i try to install the package in my application, i get the error below,

Please let me know how i may be able to resolve it

Because flutter_paystack >=1.0.1+1 depends on intl ^0.16.0 and datetime_picker_formfield 0.4.3 depends on intl ^0.15.8, flutter_paystack >=1.0.1+1 is incompatible with datetime_picker_formfield 0.4.3.
And because no versions of datetime_picker_formfield match >0.4.3 <0.5.0, flutter_paystack >=1.0.1+1 is incompatible with datetime_picker_formfield ^0.4.3.

I Can't use in sandbox environment

The Plugin fails to initialize for sandbox environment.

Could it be that logic in the validateChargeAndKey prevents the use of sandbox public keys because they start with pk_?

Screenshot 2020-02-24 at 4 11 31 PM

Failed android build

I must say , the library is brilliant. works well on ios out of the box without any complex form of configuration, but on android fails to build completely
with these completely annoying error

e: /Users/iammaugost/.pub-cache/hosted/pub.dartlang.org/flutter_paystack-0.9.1+1/android/src/main/kotlin/co/paystack/flutterpaystack/FlutterPaystackPlugin.kt: (44, 44): Type mismatch: inferred type is String? but String was expected

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':flutter_paystack:compileReleaseKotlin'.

Compilation error. See log for more details

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 1m 10s

..please help look into it

Selectable and Bank Checkout method doesn't work

When I choose Selectable or Bank as Checkout method, the app loads infinitely.
Here is the error it throws
To safely refer to a widget's ancestor in its dispose() method, save a reference to the ancestor by calling inheritFromWidgetOfExactType() in the widget's didChangeDependencies() method.

Make OTP input field hint generic

The OTP widget is currently being used not only for an actual OTP input but for any other non-pin numeric authentication input.

And the hint text currently says "OTP". This is misleading to users when the input requires anything other than an actual OTP, e.g a phone number.

See screenshot:

image

OTP input field should be alphanumeric

There's a current restriction on the OTP input field that makes it accept only numeric characters. I feel this should be loosened up. Though I have never heard of cases where banks send alphanumeric OTP, I don't think it would hurt to remove this restriction and make this field accept other characters.

Another case for removing this restriction is that the OTP input is also used for other authentication inputs. So this means if the authentication flow requires something like the user's mother's maiden name, the user would get stuck.

Web OTP fails on iOS

When making transactions that require web OTP on iOS, it fails with Authorization was abandoned. Please try again.

How to reproduce:

  1. Use a debit card that requires web OTP (e.g Fidelity VISA card).
  2. After inputting the OTP and submitting, the page closes but the transactions fail with Authorization was abandoned. Please try again error.

What the problem is
This is as a result of the custom headers required for transactions coming from iOS which is missing from this plugin.

Patch
A patch for this is in the works and will come ASAP.

TimeOut errors dumps the raw HTML response on the checkout UI

Currently, timeout errors dump the HTML response unto the checkout UI. In my opinion, this is a bad experience for users.

Solution: Return user-readable messages for Timeout errors. This will also be valuable for developers using chargeCard option.

Plugin version 0.10.0 fails on Android

Hi @Wilburt, I tried using the plugin's new release in my Flutter Project and it keeps failing due to some reason I don't seem to understand

This is what I get on Gradle task assembleDebug

** FAILURE: Build failed with an exception.

  • What went wrong:
    Could not resolve all files for configuration ':app:debugRuntimeClasspath'.

Could not download appcompat-v7.aar (com.android.support:appcompat-v7:28.0.0)
Could not get resource 'https://dl.google.com/dl/android/maven2/com/android/support/appcompat-v7/28.0.0/appcompat-v7-28.0.0.aar'.
> Could not GET 'https://dl.google.com/dl/android/maven2/com/android/support/appcompat-v7/28.0.0/appcompat-v7-28.0.0.aar'.
> Connect to dl.google.com:443 [dl.google.com/172.217.23.14] failed: Connection timed out: connect

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 26s
Gradle task 'assembleDebug'... Done 27.2s
Gradle task assembleDebug failed with exit code 1 **

Getting customer name

on the paystack customer page, there is a need for full name, phone number, pls how do i get this from the checkout page on my flutter app, tried adding a new textformfield to the page that gets this details, but dont know how to get it to paystack customer page, thanks

App stopped while running headless service.

The plugin works fine for transactions and that is great.
My app has an audio player and it runs in the background, any time the play button has been tapped the app crashed and the following stack trace is given.

java.lang.IllegalStateException: registrar.activity() must not be null
E/AndroidRuntime(14901): at co.paystack.flutterpaystack.FlutterPaystackPlugin$Companion.registerWith(FlutterPaystackPlugin.kt:18)
E/AndroidRuntime(14901): at co.paystack.flutterpaystack.FlutterPaystackPlugin.registerWith(Unknown Source:2)
E/AndroidRuntime(14901): at io.flutter.plugins.GeneratedPluginRegistrant.registerWith(GeneratedPluginRegistrant.java:29)

I am guessing you will need to guard against Headless service which doesn't have an activity in them.

Paystack SDK error

Hello, I've been trying to use your plugin to charge cards for a movie service app i'm working on but its bringing up the error "Paystack SDK has not been initialized. The SDK has to be initialized before use" yet i am getting the access code. Any suggestions, here is the code:

Future chargeCard(BuildContext context, {String cardNumber, String cvv, int expiryMonth, int expiryYear}) async{
paymentInProgress = true;
try{
http.Response response = await http.post('https://api.paystack.co/transaction/initialize', headers: {'Authorization' : 'Bearer sk_test_6ijijijijijhuyg8'}, body: {'callback_url' : 'https://com.com', 'plan' : 'PLN_n18ffa5f3455uomc', 'email' : signedInUser.email});
// print(response.body);
Map<String, dynamic> responseData = json.decode(response.body);
if(responseData.containsKey('data')){
fetchedAccessCode = responseData['data']['access_code'];
notifyListeners();
print(fetchedAccessCode);

    cardToCharge = PaymentCard(
      number: cardNumber,
      cvc: cvv,
      expiryMonth: expiryMonth,
      expiryYear: expiryYear
    );
    notifyListeners();
    print('${cardNumber}, ${cvv}, ${expiryMonth}, ${expiryYear}');

    var currentCharge = Charge()
      ..accessCode = fetchedAccessCode
      ..card = cardToCharge;

    PaystackPlugin.chargeCard(context, 
      charge: currentCharge,
      beforeValidate: (Transaction transaction){},
      onSuccess: (Transaction transaction){
        paymentCompleted = true;
        notifyListeners();
      },
      onError: (Object e, Transaction transaction){
        paymentInProgress = false;
        paymentCompleted = false;
        notifyListeners();
      },
    );
  }
}catch(e){
  paymentInProgress = false;
  notifyListeners();
  print(e);
}
notifyListeners();

}

How can I charge user without the Paystack interface showing up again

Hi, how can I make direct charge from users account with just a button click, I've designed a add card page seperately for the users to insert their card details, and save them locally, but using your paystack package It shows a form again for users to enter details which i don't want, I can retrieve the stored details on the payment page but I don't know if its possible for direct charge on a click of a button on my payment page, maybe it'll work by sending an http request to the paystack url, but doing that also, I'm considering the chance of the users asking for Software or Hardware token, is there a way I can go about this

Building Apk failed after installing paystack dependency

Hello i am getting this error after I added flutter_paystack dependency to my project
`FAILURE: Build completed with 2 failures.

1: Task failed with an exception.


  • Where:

Build file 'C:\Android_Setup\flutter.pub-cache\hosted\pub.dartlang.org\flutter_paystack-1.0.3+1\android\build.gradle' line: 25

  • What went wrong:

A problem occurred evaluating project ':flutter_paystack'.

Could not find implementation class 'org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPluginWrapper' for plugin 'kotlin-android' specified in jar:file:/C:/Users/Administrator/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin/1.3.61/d7dff46dc66708f3f01e5721178dd75403ea7853/kotlin-gradle-plugin-1.3.61.jar!/META-INF/gradle-plugins/kotlin-android.properties.

  • Try:

Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

==============================================================================

2: Task failed with an exception.


  • What went wrong:

A problem occurred configuring project ':flutter_paystack'.

compileSdkVersion is not specified.

  • Try:

Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

==============================================================================

BUILD FAILED in 1m 45s`

PayStack Live Mode, User Email and Amount Issue

Please how do you actually get PayStack to use the actual email and amount for different users in live mode? I understand in test mode these values can be set to constant values. But I need an explanation for how the the live situation works for flutter integration. πŸ™πŸΎ

_getReference()

_getRefrence() is respected severs times in your documentation but what exactly are we supposed to do here

Thanks

How to avoiding AndroidX using your plugin

Hi, great job done.
After including your plugin, i ran into build issue, how can i avoid AndroidX issue?

BUILD FAILED in 12s
*******************************************************************************************
The Gradle failure may have been because of AndroidX incompatibilities in this Flutter app.
See https://goo.gl/CP92wY for more information on the problem and how to fix it.
*******************************************************************************************

Failing with Intl plugin upgrade to 16.0.0

I am using the older version on Intl and Intl_translation. But When I am trying to upgrade these plugins to latest version its conflicting with flutter_paystack and showing that version solving failed.
Your plugin requires intl: ^0.15.7. Can you please upgrade it to 16.0.0 and push the plugin

Could you please upgrade the plugin asap

Thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.