intive / adyen_flutter

A Flutter plugin for the Adyen Payment Provider DropIn UI
MIT License
11 stars 26 forks source link

Optional Google Pay configuration #20

Open Matej-Hlatky opened 1 year ago

Matej-Hlatky commented 1 year ago

Hi, when Google Pay is enabled on Adyen environment, it needs additional configuration, that cannot be passed into FlutterAdyen.openDropIn function call.

Error in console (see "Unable to initiate paywithgoogle"):

D/CO.DropInActivityKt(25442): requestPaymentsCall
E/CO.DropInActivityKt(25442): service is disconnected, adding to queue
D/CO.BaseComponentDialogFragment(25442): onBackPressed - false
D/CO.DropInActivityKt(25442): showPaymentMethodsDialog
D/EGL_emulation(25442): eglMakeCurrent: 0x7dd212643980: ver 2 0 (tinfo 0x7dd2a2456700)
W/InputEventReceiver(25442): Attempted to finish an input event but the input event receiver has already been disposed.
D/CO.PaymentMethodListDialogFragmentKt(25442): onAttach
D/CO.PaymentMethodListDialogFragmentKt(25442): onCreateView
D/CO.PaymentMethodsListViewModel(25442): onPaymentMethodsResponseChanged
D/CO.PaymentMethodsListViewModel(25442): onAvailabilityResult - scheme: true
D/CO.PaymentMethodsListViewModel(25442): onAvailabilityResult - bcmc: true
D/CO.PaymentMethodsListViewModel(25442): No details required - directEbanking
D/CO.PaymentMethodsListViewModel(25442): No details required - ebanking_FI
D/CO.PaymentMethodsListViewModel(25442): No details required - giropay
D/CO.PaymentMethodsListViewModel(25442): onAvailabilityResult - ideal: true
E/CO.ComponentParsingProvider(25442): Unable to initiate paywithgoogle
E/CO.ComponentParsingProvider(25442): com.adyen.checkout.core.exception.ComponentException: GooglePay merchantAccount not found. Update your API version or pass it manually inside your GooglePayConfiguration
E/CO.ComponentParsingProvider(25442):   at com.adyen.checkout.googlepay.model.GooglePayParams.getPreferredGatewayMerchantId(GooglePayParams.kt:50)
E/CO.ComponentParsingProvider(25442):   at com.adyen.checkout.googlepay.model.GooglePayParams.<init>(GooglePayParams.kt:28)
E/CO.ComponentParsingProvider(25442):   at com.adyen.checkout.googlepay.GooglePayProvider.isAvailable(GooglePayProvider.kt:77)
E/CO.ComponentParsingProvider(25442):   at com.adyen.checkout.googlepay.GooglePayProvider.isAvailable(GooglePayProvider.kt:36)
E/CO.ComponentParsingProvider(25442):   at com.adyen.checkout.dropin.ComponentParsingProviderKt.checkPaymentMethodAvailability(ComponentParsingProvider.kt:176)
E/CO.ComponentParsingProvider(25442):   at com.adyen.checkout.dropin.ui.paymentmethods.PaymentMethodsListViewModel.setupPaymentMethods(PaymentMethodsListViewModel.kt:101)
E/CO.ComponentParsingProvider(25442):   at com.adyen.checkout.dropin.ui.paymentmethods.PaymentMethodsListViewModel.<init>(PaymentMethodsListViewModel.kt:52)
E/CO.ComponentParsingProvider(25442):   at com.adyen.checkout.dropin.ui.paymentmethods.PaymentMethodListDialogFragment$onCreateView$$inlined$getViewModel$1.create(ViewModelExt.kt:42)
E/CO.ComponentParsingProvider(25442):   at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:187)
E/CO.ComponentParsingProvider(25442):   at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:150)
E/CO.ComponentParsingProvider(25442):   at com.adyen.checkout.dropin.ui.paymentmethods.PaymentMethodListDialogFragment.onCreateView(PaymentMethodListDialogFragment.kt:156)
E/CO.ComponentParsingProvider(25442):   at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2963)
E/CO.ComponentParsingProvider(25442):   at androidx.fragment.app.DialogFragment.performCreateView(DialogFragment.java:489)
E/CO.ComponentParsingProvider(25442):   at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:518)
E/CO.ComponentParsingProvider(25442):   at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282)
E/CO.ComponentParsingProvider(25442):   at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189)
E/CO.ComponentParsingProvider(25442):   at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2100)
E/CO.ComponentParsingProvider(25442):   at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002)
E/CO.ComponentParsingProvider(25442):   at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:524)
E/CO.ComponentParsingProvider(25442):   at android.os.Handler.handleCallback(Handler.java:883)
E/CO.ComponentParsingProvider(25442):   at android.os.Handler.dispatchMessage(Handler.java:100)
E/CO.ComponentParsingProvider(25442):   at android.os.Looper.loop(Looper.java:214)
E/CO.ComponentParsingProvider(25442):   at android.app.ActivityThread.main(ActivityThread.java:7356)
E/CO.ComponentParsingProvider(25442):   at java.lang.reflect.Method.invoke(Native Method)
E/CO.ComponentParsingProvider(25442):   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
E/CO.ComponentParsingProvider(25442):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
D/CO.PaymentMethodsListViewModel(25442): onAvailabilityResult - paywithgoogle: false
E/CO.PaymentMethodsListViewModel(25442): paywithgoogle NOT AVAILABLE
D/CO.PaymentMethodsListViewModel(25442): onAvailabilityResult - sepadirectdebit: true
D/CO.PaymentMethodsListViewModel(25442): onPaymentMethodsReady: 0 - 7
D/CO.PaymentMethodListDialogFragmentKt(25442): paymentMethods changed

The builder requires at least these parameters:

See GooglePayConfiguration.kt on Adyen Android SDK.

bschmalb commented 10 months ago

I decided to fork the package, add some more functionality like more payment methods (Paypal, Apple Pay, Google Pay and more), update to the latest adyen dropin sdks for Android and iOS and publish it.

You can find it here: https://pub.dev/packages/adyen_flutter_dropin I hope this helps.