nyartech / hyperpay

A Flutter plugin to wrap HyperPay SDK for iOS and Android.
MIT License
15 stars 34 forks source link

[HyperpayPlugin/pay] MissingPluginException(No implementation found for method start_payment_transaction on channel hyperpay) #9

Closed lambdatechdev closed 2 years ago

lambdatechdev commented 2 years ago

Hey,

I have followed the provided documentation step by step (https://pub.dev/packages/hyperpay) but the plugin is throwing an error on pay() i.e E[/DartMessenger]()(19361): at io.flutter.embedding.engine.dart.DartMessenger.lambda$handleMessageFromDart$0$DartMessenger(DartMessenger.java:206) E[/DartMessenger]()(19361): at io.flutter.embedding.engine.dart.-$$Lambda$DartMessenger$6ZD1MYkhaLxyPjtoFDxe45u43DI.run(Unknown Source:12) E[/DartMessenger]()(19361): at android.os.Handler.handleCallback(Handler.java:883) E[/DartMessenger]()(19361): at android.os.Handler.dispatchMessage(Handler.java:100) E[/DartMessenger]()(19361): at android.os.Looper.loop(Looper.java:264) E[/DartMessenger]()(19361): at android.app.ActivityThread.main(ActivityThread.java:7684) E[/DartMessenger]()(19361): at java.lang.reflect.Method.invoke(Native Method) E[/DartMessenger]()(19361): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) E[/DartMessenger]()(19361): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:980) [HyperpayPlugin[/pay]()] MissingPluginException(No implementation found for method start_payment_transaction on channel hyperpay) Code to reproduce:

Init Function:

Future<void> initPaymentSession(
    BrandType brandType,
    double amount,
  ) async {
    CheckoutSettings _checkoutSettings =
        CheckoutSettings(brand: brandType, amount: amount, headers: {
      'Authorization': "Bearer " + accessToken,
    }, additionalParams: {
      'merchantTransactionId': '#123456',
      'invoice_id': "",
      'brand': "$brandType['id']",
    });

    hyperpay.initSession(checkoutSetting: _checkoutSettings);
    sessionCheckoutID = await hyperpay.getCheckoutID;
  }

The Payment Method

CardInfo card = CardInfo(
        holder: holderNameController.text,
        cardNumber: cardNumberController.text.replaceAll(' ', ''),
        cvv: cvvController.text,
        expiryMonth: expiryController.text.split('/')[0],
        expiryYear: '20' + expiryController.text.split('/')[1],
      );

      try {
        // Start transaction
        if (sessionCheckoutID.isEmpty) {
        await initPaymentSession(BrandType.visa, 1);
        }
        print("Asdad");
        final result = await hyperpay.pay(card);

Flutter Doctor Output: Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel stable, 2.8.1, on macOS 11.6 20G165 darwin-x64, locale en-PK) [✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0) [✓] Xcode - develop for iOS and macOS (Xcode 13.1) [✓] Chrome - develop for the web [✓] Android Studio (version 2020.3) [✓] VS Code (version 1.63.2) [✓] Connected device (2 available)

• No issues found!

pr-Mais commented 2 years ago

What is the API version number are you testing on? is it an emulator? Could you please try cleaning:

flutter clean

Also, have you opened the project in Android studio and allowed it to sync gradle?

pr-Mais commented 2 years ago

Without additional information we cannot provide help, if anyone else is going through this issue I will reopen.