Giter VIP home page Giter VIP logo

purplesoftsrl / sumup_flutter_plugin Goto Github PK

View Code? Open in Web Editor NEW
14.0 4.0 15.0 196 KB

A Flutter wrapper to use the SumUp SDK. With this plugin, your app can easily connect to a SumUp terminal, login and accept card payments on Android and iOS.

Home Page: https://www.purplesoft.io

License: MIT License

Kotlin 33.18% Ruby 5.46% Swift 24.56% Objective-C 1.44% Dart 35.35%
payments credit-card sumup flutter-plugin dart flutter

sumup_flutter_plugin's People

Contributors

davidhole avatar lvolland avatar sstasi95 avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar

sumup_flutter_plugin's Issues

Payment only works once then hangs

Hi there,
i've just updated to version 0.6.0 and have the problem that a SumUp payment only once works fine. When trying the 2nd time it just tries to connect to the card reader and never finishes - although the bluetooth sign appears on the card reader's display.
Only when i shutdown the app it works once again.
The problem only seems to happen on Android.
This is the output i get:

D/BluetoothAdapter(26346): isLeEnabled(): ON
D/BluetoothGatt(26346): connect() - device: F4:94:E3:9C:3B:32, auto: false
D/BluetoothGatt(26346): registerApp()
D/BluetoothGatt(26346): registerApp() - UUID=1941db0a-0c8c-4d08-88ec-b4c6e3cb6df6
D/BluetoothGatt(26346): onClientRegistered() - status=0 clientIf=6
D/BluetoothGatt(26346): onClientConnectionState() - status=0 clientIf=6 device=F4:94:E3:9C:3B:32
D/BluetoothGatt(26346): requestConnectionPriority() - params: 1
D/BluetoothGatt(26346): discoverServices() - device: F4:94:E3:9C:3B:32
D/BluetoothGatt(26346): onConnectionUpdated() - Device=F4:94:E3:9C:3B:32 interval=12 latency=0 timeout=500 status=0
D/BluetoothGatt(26346): onConnectionUpdated() - Device=F4:94:E3:9C:3B:32 interval=6 latency=0 timeout=500 status=0
D/BluetoothGatt(26346): onSearchComplete() = Device=F4:94:E3:9C:3B:32 Status=0
D/BluetoothGatt(26346): setCharacteristicNotification() - uuid: 22ffc547-1bef-48e2-aa87-b87e23ac0bbd enable: true
D/BluetoothGatt(26346): onConnectionUpdated() - Device=F4:94:E3:9C:3B:32 interval=12 latency=0 timeout=500 status=0
D/BluetoothGatt(26346): onConnectionUpdated() - Device=F4:94:E3:9C:3B:32 interval=48 latency=0 timeout=800 status=0
D/BluetoothGatt(26346): setCharacteristicNotification() - uuid: 1f6b14c9-97fa-4f1e-aaa6-7e152fdd04f4 enable: true
D/BluetoothGatt(26346): cancelOpen() - device: F4:94:E3:9C:3B:32
D/BluetoothGatt(26346): onClientConnectionState() - status=0 clientIf=6 device=F4:94:E3:9C:3B:32
D/BluetoothGatt(26346): close()
D/BluetoothGatt(26346): unregisterApp() - mClientIf=6

So actually no real error.
Could you please try on your side if this is a general problem?

I've tested with an app version, where i still use version 0.5.0 and there several payments just work fine.

Urgent: If you change the applicationid / packagename, it doesn't work

Hello,

Hope you can help me fast.

If you change the applicationid / packagename, it doesn't work, which means you can't release on playstore where you have to change the package name.

When I try to login after changing, I get the "Event rpcEventLogin - Reason: These login details are not valid. Please check your username and password and try again."

If I change the package names and application id's back to the default, then it works fine.

Please help :-)

Crash: Unsupported Swift architecture - sumup 0.7.0

Environment

  • Flutter channel: stable
  • Flutter version: 3.10.2
  • Sumup version: 0.7.0
  • Xcode version: 14.3.1
  • macOS version: 13.3.1

Terminal Output Error:

Swift Compiler Error (Xcode): Unsupported Swift architecture
/Users/lcsvcn/Documents/GitHub/super_totem/build/ios/Debug-iphonesimulator/XCFrameworkIntermediates/SumUpSDK/SumUpSDK.framework/Headers/SumUp-GeneratedHeader-Swift.h:262:1

Swift Compiler Error (Xcode): Could not build Objective-C module 'SumUpSDK'
/Users/lcsvcn/.pub-cache/hosted/pub.dev/sumup-0.7.0/ios/Classes/SwiftSumupPlugin.swift:1:7

Could not build the application for the simulator.
Error launching application on iPad Pro (11-inch) (4th generation).

I already tried this post and also to clean all cache (for flutter and podfile). The issue persisted.

Important Note: When I downgrade to sumup version 0.6.1, it works fine. Seems like an issue with version 0.7.0.

Android crash in combination with FilePicker

I have this very special app crash when aborting a FilePicker->pickFiles action on Android by clicking the native back button, if the Sumup package is installed.
The error log looks like this:

I/FilePickerDelegate( 8742): User cancelled the picker request
D/SumupPlugin( 8742): onActivityResult - RequestCode: 24176 - Result Code: 0
D/AndroidRuntime( 8742): Shutting down VM
E/AndroidRuntime( 8742): FATAL EXCEPTION: main
E/AndroidRuntime( 8742): Process: com.test.staging, PID: 8742
E/AndroidRuntime( 8742): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=24176, result=0, data=null} to activity {com.test.staging/com.example.riverpod.MainActivity}: kotlin.UninitializedPropertyAccessException: lateinit property currentOperation has not been initialized
E/AndroidRuntime( 8742): 	at android.app.ActivityThread.deliverResults(ActivityThread.java:5340)
E/AndroidRuntime( 8742): 	at android.app.ActivityThread.handleSendResult(ActivityThread.java:5379)
E/AndroidRuntime( 8742): 	at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:67)
E/AndroidRuntime( 8742): 	at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
E/AndroidRuntime( 8742): 	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
E/AndroidRuntime( 8742): 	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
E/AndroidRuntime( 8742): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2252)
E/AndroidRuntime( 8742): 	at android.os.Handler.dispatchMessage(Handler.java:106)
E/AndroidRuntime( 8742): 	at android.os.Looper.loopOnce(Looper.java:201)
E/AndroidRuntime( 8742): 	at android.os.Looper.loop(Looper.java:288)
E/AndroidRuntime( 8742): 	at android.app.ActivityThread.main(ActivityThread.java:7842)
E/AndroidRuntime( 8742): 	at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime( 8742): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
E/AndroidRuntime( 8742): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
E/AndroidRuntime( 8742): Caused by: kotlin.UninitializedPropertyAccessException: lateinit property currentOperation has not been initialized
E/AndroidRuntime( 8742): 	at io.purplesoft.sumup.SumupPlugin.onActivityResult(SumupPlugin.kt:204)
E/AndroidRuntime( 8742): 	at io.flutter.embedding.engine.FlutterEngineConnectionRegistry$FlutterEngineActivityPluginBinding.onActivityResult(FlutterEngineConnectionRegistry.java:805)
E/AndroidRuntime( 8742): 	at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.onActivityResult(FlutterEngineConnectionRegistry.java:428)
E/AndroidRuntime( 8742): 	at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onActivityResult(FlutterActivityAndFragmentDelegate.java:802)
E/AndroidRuntime( 8742): 	at io.flutter.embedding.android.FlutterActivity.onActivityResult(FlutterActivity.java:724)
E/AndroidRuntime( 8742): 	at android.app.Activity.dispatchActivityResult(Activity.java:8385)
E/AndroidRuntime( 8742): 	at android.app.ActivityThread.deliverResults(ActivityThread.java:5333)
E/AndroidRuntime( 8742): 	... 13 more
I/Process ( 8742): Sending signal. PID: 8742 SIG: 9

It's enough that Sumup plugin is installed, but never used. The only thing i added in Manifest.xml is this:

<activity
               android:name="net.openid.appauth.RedirectUriReceiverActivity"
               tools:node="merge"
               android:exported="true" tools:ignore="MissingClass"/>

As soon as i uninstall the Sumup package the mentioned abort action works fine.
The code to reproduce this is simple:

// call this from a button click and hit the native back button after the picking dialog has opened
void pick() async {
    FilePickerResult? result = await FilePicker.platform.pickFiles();

    if (result != null) {
      File file = File(result.files.single.path!);
      print(file.path);
    } else {
      print('no file selected');
    }
  }

pubspec.yaml:

file_picker: ^4.6.1
sumup: ^0.4.0

I hope you have a fix for this. Thanks a lot.

Can't compil on Android studio <Unable to find matching .xcframework slice>

Step to reproduce :

-Create a new project
-Add the dependency
-Import the package
-Run

Not compilable in master branch nor dev branch .

However i can compil normally directly in XCODE.

warning: [CP] Unable to find matching .xcframework slice in /Users/aaa/Desktop/OLD/aaaae/ios/Pods/SumUpSDK/SumUpSDK.xcframework SumUpSDK framework ios-armv7_arm64 ios-i386_x86_64-simulator' for the current build architectures (arm64 x86_64 i386).

 warning: [CP] Unable to find matching .xcframework slice in '/Users/aaaa/Desktop/OLD/flutter_app/ios/Pods/SumUpSDK/SumUpSDK.xcframework SumUpSDK framework ios-armv7_arm64 ios-i386_x86_64-simulator' for the current build architectures (arm64 x86_64).
    /Users/aaaa/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/sumup-0.2.0/ios/Classes/SwiftSumupPlugin.swift:2:8: error: no such module 'SumUpSDK'
    import SumUpSDK
           ^
    1 error generated.
    /Users/aaaa/Desktop/OLD/flutter_app/build/ios/Debug-iphonesimulator/sumup/sumup.framework/Modules/module.modulemap:9:12: error: header 'sumup-Swift.h' not found
        header "sumup-Swift.h"
               ^
    /Users/aaaa/Desktop/OLD/flutter_app/ios/Runner/GeneratedPluginRegistrant.m:8:9: note: submodule of top-level module 'sumup' implicitly imported here
    #import <sumup/SumupPlugin.h>
            ^
    /Users/aaaa/Desktop/OLD/flutter_app/ios/Runner/GeneratedPluginRegistrant.m:16:4: error: use of undeclared identifier 'SumupPlugin'
      [SumupPlugin registerWithRegistrar:[registry registrarForPlugin:@"SumupPlugin"]];
       ^
    2 errors generated.
    mkdir -p /Users/aaaa/Desktop/OLD/flutter_app/build/ios/Debug-iphonesimulator/Runner.app/Frameworks
    /Users/aaaa/Desktop/OLD/flutter_app/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh: line 42: source: unbound variable
    Command PhaseScriptExecution failed with a nonzero exit code
    note: Using new build system
    note: Building targets in parallel
    note: Planning build
    note: Constructing build description

App is crashing in Android 7

Hello,

I am trying to make a payment with Android 7 and the app is always crashing with the following exception. SumUp app is working without any problem.

Unfortunately I haven't found anything in google about that, maybe you can give me some clue.

Thank you in advance!

Kind Regards

E/AndroidRuntime(14624): FATAL EXCEPTION: main
E/AndroidRuntime(14624): Process: com.orders.tracker.v2, PID: 14624
E/AndroidRuntime(14624): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.orders.tracker.v2/com.sumup.merchant.reader.ui.activities.CardReaderPaymentAPIDrivenPageActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object com.sumup.merchant.reader.ReaderModuleCoreState.get(java.lang.Class)' on a null object reference
E/AndroidRuntime(14624):        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
E/AndroidRuntime(14624):        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
E/AndroidRuntime(14624):        at android.app.ActivityThread.-wrap12(ActivityThread.java)
E/AndroidRuntime(14624):        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
E/AndroidRuntime(14624):        at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(14624):        at android.os.Looper.loop(Looper.java:154)
E/AndroidRuntime(14624):        at android.app.ActivityThread.main(ActivityThread.java:6119)
E/AndroidRuntime(14624):        at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(14624):        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
E/AndroidRuntime(14624):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
E/AndroidRuntime(14624): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object com.sumup.merchant.reader.ReaderModuleCoreState.get(java.lang.Class)' on a null object reference
E/AndroidRuntime(14624):        at com.sumup.merchant.reader.ui.activities.SumUpReaderModuleBaseActivity.onCreate(SourceFile:1)
E/AndroidRuntime(14624):        at android.app.Activity.performCreate(Activity.java:6743)
E/AndroidRuntime(14624):        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
E/AndroidRuntime(14624):        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
E/AndroidRuntime(14624):        ... 9 more

ThrowIfNotLoggedIn bug

E/flutter (21836): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: type 'Future<bool?>' is not a subtype of type 'FutureOr' in type cast

I get this error on the login check, was also there in the 2.0 version

init(key) always true

Hello,

No matter what key I use, fx simply "k" in the init(key) method, I always get returned true, as in:
I/flutter ( 9386): Method: initSDK, status: true, message: {initialized: true}

This makes it hard for me to alert my users that the key they set doesn't work. Can you do something about this?

Thank you. And thanks for responding fast in general.

Crash on iOS device

Hi there,
in rare cases i see these kind of Crashlytics crash report on iOS devices:

Crashed: com.apple.main-thread
0  Runner                         0x494b4c closure #4 in SwiftSumupPlugin.handle(_:result:) + 406652
1  Runner                         0x49824c partial apply for closure #1 in SwiftSumupPlugin.checkout(request:completion:) + 420732 (<compiler-generated>:420732)
2  Runner                         0x494e4c thunk for @escaping @callee_guaranteed (@guaranteed SMPCheckoutResult?, @guaranteed Error?) -> () + 407420 (<compiler-generated>:407420)
3  SumUpSDK                       0x830f0 __69+[SMPSumUpSDK didCreateCheckout:error:fromViewController:completion:]_block_invoke.162 + 252
4  SumUpSDK                       0x31b54 -[SMPHandlerChain invokeIndex:object:sortedHandlers:] + 304
5  SumUpSDK                       0x31c04 __53-[SMPHandlerChain invokeIndex:object:sortedHandlers:]_block_invoke + 52
6  SumUpSDK                       0x6af84 -[SMPFirmwareUpdateManager didGetFirmwareUpdate:error:completion:] + 332
7  SumUpSDK                       0x6ae14 __77-[SMPFirmwareUpdateManager paymentNavigationControllerDidDismiss:completion:]_block_invoke + 88
8  libdispatch.dylib              0x2460 _dispatch_call_block_and_release + 32
9  libdispatch.dylib              0x3f88 _dispatch_client_callout + 20
10 libdispatch.dylib              0x127f4 _dispatch_main_queue_drain + 928
11 libdispatch.dylib              0x12444 _dispatch_main_queue_callback_4CF + 44
12 CoreFoundation                 0x9a6c8 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 16
13 CoreFoundation                 0x7c02c __CFRunLoopRun + 2036
14 CoreFoundation                 0x80eb0 CFRunLoopRunSpecific + 612
15 GraphicsServices               0x1368 GSEventRunModal + 164
16 UIKitCore                      0x3a1668 -[UIApplication _run] + 888
17 UIKitCore                      0x3a12cc UIApplicationMain + 340
18 Runner                         0x5444 main + 5 (AppDelegate.swift:5)
19 ???                            0x1bc46c960 (Fehlt)

The device had iOS version 16.3.1 installed.
I cannot tell what happens on a device where this crash happens (i.e. if the user encounters that crash or if the Flutter app is also targeted by this crash).
Sumup plugin version 0.6.1 is used.
Have you seen such a crash report on your side and/or do you know if anything can be done (Flutter or the Sumup plugin) to prevent these kind of crashes?

Error message at checkout attempt

E/SumUp (26429): (SourceFile:186)@main | Event rpcEventTerminalSDKCheckoutResponse - Reason: Sorry, but we've experienced an unexpected error. Please try closing the app and logging in again, or contact our Support Team (quote: UKN-36SAH)
E/SumUp (26429): (SourceFile:186)@main | Event rpcEventTerminalSDKCheckoutResponse - Reason: Sorry, but we've experienced an unexpected error. Please try closing the app and logging in again, or contact our Support Team (quote: UKN-1ZURN)

I get this error message, when I try to perform a checkout in my app in very rare cases (seems to appear if I open it after it has been in the background, meanwhile a payment is waiting or similar).

I get the error visually and in console, but the response still seems to return a checkout.success = true, which appears odd to me. I have implemented a try/catch to fix it, but I'd still like if you could help me.

Can you help or should I contact sumup directly?

java.lang.IncompatibleClassChangeError

Hello again, i figured out what is crashing my app at the LOGIN step of sumup

FATAL EXCEPTION: main
Process: com.####.####, PID: 5276
java.lang.IncompatibleClassChangeError: Found interface com.google.android.gms.location.FusedLocationProviderClient, but class was expected (declaration of 'com.google.android.gms.location.FusedLocationProviderClient' appears in /data/app/~~uva7Djt9LW_u1XF9mQdN3g==/com.####.####-fwUgzRHPHIfZaq3OvFXB7A==/base.apk!classes19.dex)
at com.sumup.base.common.location.GoogleLocationServicesManager.requestLocationUpdates(Unknown Source:28)
at com.sumup.base.common.location.GoogleLocationServicesManager.startLocationScanning(Unknown Source:31)
at com.sumup.merchant.reader.identitylib.ui.activities.LoginActivity.onResume(SourceFile:11)
at ... etc

I think com.google.android.gms.location.FusedLocationProviderClient is part of the geolocator package which i rely on since our app is a taxi/uber-like app and we need to track driver position constantly, sumup would be very appreciated in order to have the payment tool at hand when terminating a ride, for non-prepaid rides.

I tried forcing adding this to build.gradle

allprojects {
repositories {
google()
mavenCentral()

    #this is the part for the workaround
    configurations.all{
        resolutionStrategy{
            force "com.google.android.gms:play-services-location:21.0.1"
        }
    }
}

}

but without success, any ideas or hint on how to solve this?

Skip failed screen

Can you make it possible to set skipFailedScreen to true, like you have done with the success screen?

Great plugin btw and thanks for fast replies

Feature request: Automate email address

Our app already has the email address of the person making the payment. Is it possible for me to push this into the transaction and have a receipt sent automatically?

MissingPluginException

When issuing an init I get the message:
Error: MissingPluginException(No implementation found for method initSDK on channel sumup)
Is there an upgrade needed or something else?

Response message and error codes

Hello, thanks again for making this plugin.

Is it possible for you to make it possible to get the response message and potential error codes after running a checkout?

Attached picture from SumUp android SDK about what I'm referring to.

image

Kind regards

Android build error when including in pubspec.yaml

This plugin causes a build error on Android when simply being included in pubspec.yaml, without any other changes being made to my project:

Execution failed for task ':app:checkDebugDuplicateClasses'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
   > Duplicate class org.threeten.bp.Clock found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
   > ... (hundreds of similar errors)

My minSdkVersion is 24, above the 21 required in the README file.

Error On payment.

Error found on LoadSumUpPaymentsActivity.java line 473

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
       at com.sumup.merchant.api.LoadSumUpPaymentsActivity.createAffiliateResponseIntent(LoadSumUpPaymentsActivity.java:473)
       at com.sumup.merchant.api.LoadSumUpPaymentsActivity.sendAffiliateResponse(LoadSumUpPaymentsActivity.java:577)
       at com.sumup.merchant.ui.Activities.CheckoutAPIDrivenPageActivity.onBackPressed(CheckoutAPIDrivenPageActivity.java:243)
       at com.sumup.merchant.ui.Activities.SumUpBaseActivity.onOptionsItemSelected(SumUpBaseActivity.java:95)
       at android.app.Activity.onMenuItemSelected(Activity.java:3245)
       at androidx.fragment.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:384)
       at androidx.appcompat.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:219)
       at androidx.appcompat.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:109)
       at androidx.appcompat.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:109)
       at androidx.appcompat.widget.ToolbarWidgetWrapper$1.onClick(ToolbarWidgetWrapper.java:188)
       at android.view.View.performClick(View.java:5656)
       at android.view.View$PerformClick.run(View.java:22452)
       at android.os.Handler.handleCallback(Handler.java:751)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:154)
       at android.app.ActivityThread.main(ActivityThread.java:6119)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

Checkout not working bug - transaction cancelled - checkout process not completing (prEvent, emv, internal error)

Running the example code. I think it's a wonderful plugin.

First time it worked and allowed me to touch the reader with phone (using developer credentials on the sumup_flutter app and changed the currency to 'GBP'). Thereafter it when button pressed to checkout it briefly flashes the screen to find the reader then goes to a page saying transaction failed and it was a network error.

I don't understand why it's not working. I've googled everywhere. The console shows this:

Event prEvent Checkout - Reason: Internal error E/SumUp ( 3450): (Source File:1)@main | Error for in emv response: Internal error

I'm also seeing the following:
Expecting binder but got null!

W/EventBus(14688): Subscriber to unregister was not registered before: class com.sumup.merchant.reader.identitylib.ui.activities.LoginActivity

'W/MaterialButton(14688): MaterialButton manages its own background to control elevation, shape, color and states. Consider using backgroundTint, shapeAppearance and other attributes where available. A custom background will ignore these attributes and you should consider handling interaction states such as pressed, focused and disabled'

'E/WindowManager(14688): android.view.WindowLeaked: Activity com.sumup.merchant.reader.ui.activities.CardReaderPaymentAPIDrivenPageActivity has leaked window DecorView@d8e3d07[CardReaderPaymentAPIDrivenPageActivity] that was originally added here
E/WindowManager(14688): at android.view.ViewRootImpl.(ViewRootImpl.java:916)
E/WindowManager(14688): at android.view.ViewRootImpl.(ViewRootImpl.java:900)
E/WindowManager(14688): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:386)
E/WindowManager(14688): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
E/WindowManager(14688): at android.app.Dialog.show(Dialog.java:352)
E/WindowManager(14688): at com.sumup.merchant.reader.helpers.ProgressDialogHelper.createDialog(SourceFile:3)
E/WindowManager(14688): at com.sumup.merchant.reader.helpers.ProgressDialogHelper.getDialog(SourceFile:1)
E/WindowManager(14688): at com.sumup.merchant.reader.helpers.ProgressDialogHelper.getDialog(SourceFile:2)
E/WindowManager(14688): at com.sumup.merchant.reader.helpers.ProgressDialogHelper.getProcessingDialog(SourceFile:1)
E/WindowManager(14688): at com.sumup.merchant.reader.ui.activities.CardReaderPaymentAPIDrivenPageActivity.sendTerminalSDKCheckoutRequest(SourceFile:1)
E/WindowManager(14688): at com.sumup.merchant.reader.ui.activities.CardReaderPaymentAPIDrivenPageActivity.onSafeCreate(SourceFile:19)
E/WindowManager(14688): at com.sumup.base.common.ui.SumUpBaseActivity.onCreate(Unknown Source:159)
E/WindowManager(14688): at com.sumup.merchant.reader.ui.activities.CardReaderPaymentAPIDrivenPageActivity.onCreate(SourceFile:2)
E/WindowManager(14688): at android.app.Activity.performCreate(Activity.java:8291)
E/WindowManager(14688): at android.app.Activity.performCreate(Activity.java:8270)
E/WindowManager(14688): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1384)
E/WindowManager(14688): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3664)
E/WindowManager(14688): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3820)
E/WindowManager(14688): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
E/WindowManager(14688): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
E/WindowManager(14688): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
E/WindowManager(14688): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2315)
E/WindowManager(14688): at android.os.Handler.dispatchMessage(Handler.java:107)
E/WindowManager(14688): at android.os.Looper.loopOnce(Looper.java:201)
E/WindowManager(14688): at android.os.Looper.loop(Looper.java:288)
E/WindowManager(14688): at android.app.ActivityThread.main(ActivityThread.java:7935)
E/WindowManager(14688): at java.lang.reflect.Method.invoke(Native Method)
E/WindowManager(14688): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
E/WindowManager(14688): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1149)
D/BluetoothGatt(14688): onClientConnectionState() - status=0 clientIf=6 device=C8:54:DE:EE:AD:50
D/BluetoothGatt(14688): close()
D/BluetoothGatt(14688): unregisterApp() - mClientIf=6
E/SumUp (14688): (SourceFile:13)@BtSmart-Receiver | onFatalError() CardReaderError{Name = TRANSPORT_DISCONNECTED mErrorCode=3}
E/SumUp (14688): (SourceFile:2)@BtSmart-Receiver | onTransportError() CardReaderError{Name = TRANSPORT_DISCONNECTED mErrorCode=3}
'

When adding sumup to pubspec.yaml orientation gets forced into landscape mode

Hello guys

I just found out, that when adding sumup to my dependencies in pubspec.yaml, the screen gets forced into landscape mode as soon as the app starts. Im building for android, I don't know, if this also happens on iOS.
Sumup package version: 0.2.0

Thanks!

Edit: just looked over the code, probably has something to do with:

activity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE

Android Runtime (IncompatibleClassChangeError ) for FusedLocationProviderClient

Runtime when Call login function
java.lang.IncompatibleClassChangeError: Found interface com.google.android.gms.location.FusedLocationProviderClient, but class was expected (declaration of 'com.google.android.gms.location.FusedLocationProviderClient' appears in /data/app/~~aLsQyx34djnpZQZY8NmTrg==/com.app-SBEeHAYr9zP0HYjw4NI1MA==/base.apk!classes20.dex)

On my Project, We use Google Navigation, geocoding and geolocator Plugins

project run smoothly but when call your login function throw this error

What Model works with this API

Hi,

We are looking to integrate a new payment gateway with API capabilities for our platform. However, I am confused about witch models actually support this SDK.

Is this SDK going to be sending the information over Bluetooth to the device or some sort of local WebSocket will be used?

Thank you

Still crashing on Android due to old version of com.google.android.gms:play-services-location

Hi,

the current plugin version (0.8.0) is still crashing when calling login() or loginWithToken(), due to com.google.android.gms:play-services-location: it looks like the plugin is still using version 19.0.1 instead of 21.0.1 — here's a crash log:

D/AndroidRuntime(20273): Shutting down VM
E/AndroidRuntime(20273): FATAL EXCEPTION: main
E/AndroidRuntime(20273): Process: com.***., PID: 20273
E/AndroidRuntime(20273): java.lang.IncompatibleClassChangeError: Found interface com.google.android.gms.location.FusedLocationProviderClient, but class was expected (declaration of 'com.google.android.gms.location.FusedLocationProviderClient' appears in /data/app/~~KqT6s3BuQuWvKU2N_0ATzg==/com.vantea.vxp-q_SLUQcKr8z_uVaUC_5s5g==/base.apk)
E/AndroidRuntime(20273): at com.sumup.base.common.location.GoogleLocationServicesManager.updateLatestLocation(Unknown Source:2)
E/AndroidRuntime(20273): at com.sumup.base.common.location.GoogleLocationServicesManager.getLatestLocation(Unknown Source:29)
E/AndroidRuntime(20273): at com.sumup.merchant.reader.network.rpcActions.rpcAction.addLocation(SourceFile:1)
E/AndroidRuntime(20273): at com.sumup.merchant.reader.network.rpcActions.rpcAction.(SourceFile:168)
E/AndroidRuntime(20273): at com.sumup.merchant.reader.identitylib.network.rpcActions.rpcActionLogin.(SourceFile:1)
E/AndroidRuntime(20273): at com.sumup.merchant.reader.identitylib.network.rpcActions.rpcActionLoginWithAccessToken.(SourceFile:1)
E/AndroidRuntime(20273): at com.sumup.merchant.reader.identitylib.ui.activities.LoginActivity.logInWithAccessToken(SourceFile:1)
E/AndroidRuntime(20273): at com.sumup.merchant.reader.identitylib.ui.activities.LoginActivity.handleLogIn(SourceFile:54)
E/AndroidRuntime(20273): at com.sumup.merchant.reader.identitylib.ui.activities.LoginActivity.doAutoLogin(SourceFile:2)
E/AndroidRuntime(20273): at com.sumup.merchant.reader.identitylib.ui.activities.LoginActivity.onCreate(SourceFile:118)
E/AndroidRuntime(20273): at android.app.Activity.performCreate(Activity.java:8290)
E/AndroidRuntime(20273): at android.app.Activity.performCreate(Activity.java:8270)
E/AndroidRuntime(20273): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329)
E/AndroidRuntime(20273): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4009)
E/AndroidRuntime(20273): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4201)
E/AndroidRuntime(20273): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
E/AndroidRuntime(20273): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
E/AndroidRuntime(20273): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
E/AndroidRuntime(20273): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2438)
E/AndroidRuntime(20273): at android.os.Handler.dispatchMessage(Handler.java:106)
E/AndroidRuntime(20273): at android.os.Looper.loopOnce(Looper.java:226)
E/AndroidRuntime(20273): at android.os.Looper.loop(Looper.java:313)
E/AndroidRuntime(20273): at android.app.ActivityThread.main(ActivityThread.java:8669)
E/AndroidRuntime(20273): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(20273): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
E/AndroidRuntime(20273): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)

Note: this occurs with or without the force "com.google.android.gms:play-services-location" hack in build.gradle — the above log is with the hack.

Any workaround, or ideas about when this will be fixed?

Thank you,
D.

How to check if card reader is connected from flutter app?

Sometimes the card reader disconnects due to power, inactivity etc. Can I automatically scan for the card reader and connect without user interaction?

I want to display a page if it can't find the card reader so it prompts user to go through reconnection process.

Android duplicate classes issue

FAILURE: Build completed with 2 failures.

1: Task failed with an exception.

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

A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
Duplicate class org.threeten.bp.Clock found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.Clock$FixedClock found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.Clock$OffsetClock found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.Clock$SystemClock found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.Clock$TickClock found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.DateTimeException found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.DateTimeUtils found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.DayOfWeek found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.DayOfWeek$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.Duration found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.Duration$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.Instant found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.Instant$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.Instant$2 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.LocalDate found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.LocalDate$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.LocalDate$2 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.LocalDateTime found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.LocalDateTime$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.LocalDateTime$2 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.LocalTime found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.LocalTime$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.LocalTime$2 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.Month found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.Month$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.Month$2 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.MonthDay found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.MonthDay$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.MonthDay$2 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.OffsetDateTime found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.OffsetDateTime$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.OffsetDateTime$2 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.OffsetDateTime$3 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.OffsetTime found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.OffsetTime$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.OffsetTime$2 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.Period found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.Ser found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.Year found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.Year$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.Year$2 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.YearMonth found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.YearMonth$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.YearMonth$2 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.ZoneId found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.ZoneId$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.ZoneId$2 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.ZoneOffset found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.ZoneOffset$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.ZoneRegion found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.ZonedDateTime found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.ZonedDateTime$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.ZonedDateTime$2 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.AbstractChronology found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.ChronoDateImpl found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.ChronoDateImpl$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.ChronoLocalDate found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.ChronoLocalDate$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.ChronoLocalDateTime found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.ChronoLocalDateTime$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.ChronoLocalDateTimeImpl found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.ChronoLocalDateTimeImpl$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.ChronoPeriod found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.ChronoPeriodImpl found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.ChronoZonedDateTime found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.ChronoZonedDateTime$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.ChronoZonedDateTime$2 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.ChronoZonedDateTimeImpl found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.ChronoZonedDateTimeImpl$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.Chronology found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.Chronology$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.Chronology$2 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.Era found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.HijrahChronology found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.HijrahDate found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.HijrahDate$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.HijrahEra found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.IsoChronology found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.IsoEra found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.JapaneseChronology found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.JapaneseChronology$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.JapaneseDate found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.JapaneseDate$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.JapaneseEra found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.MinguoChronology found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.MinguoChronology$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.MinguoDate found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.MinguoDate$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.MinguoEra found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.Ser found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.ThaiBuddhistChronology found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.ThaiBuddhistChronology$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.ThaiBuddhistDate found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.ThaiBuddhistDate$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.chrono.ThaiBuddhistEra found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeBuilder found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatStyleProvider found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatter found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatter$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatter$2 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatter$ClassicFormat found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$2 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$3 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$4 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$CharLiteralPrinterParser found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$ChronoPrinterParser found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$CompositePrinterParser found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$DateTimePrinterParser found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$DefaultingParser found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$FractionPrinterParser found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$InstantPrinterParser found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$LocalizedOffsetPrinterParser found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$LocalizedPrinterParser found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$NumberPrinterParser found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$OffsetIdPrinterParser found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$PadPrinterParserDecorator found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$ReducedPrinterParser found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$SettingsParser found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$StringLiteralPrinterParser found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$TextPrinterParser found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$WeekFieldsPrinterParser found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$ZoneIdPrinterParser found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$ZoneIdPrinterParser$SubstringTree found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$ZoneTextPrinterParser found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeFormatterBuilder$ZoneTextPrinterParser$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeParseContext found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeParseContext$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeParseContext$Parsed found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeParseException found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimePrintContext found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimePrintContext$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeTextProvider found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DateTimeTextProvider$ProviderSingleton found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.DecimalStyle found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.FormatStyle found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.ResolverStyle found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.SignStyle found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.SimpleDateTimeFormatStyleProvider found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.SimpleDateTimeTextProvider found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.SimpleDateTimeTextProvider$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.SimpleDateTimeTextProvider$LocaleStore found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.format.TextStyle found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.jdk8.DefaultInterfaceEra found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.jdk8.DefaultInterfaceTemporal found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.jdk8.DefaultInterfaceTemporalAccessor found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.jdk8.Jdk8Methods found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.ChronoField found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.ChronoUnit found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.IsoFields found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.IsoFields$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.IsoFields$Field found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.IsoFields$Field$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.IsoFields$Field$2 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.IsoFields$Field$3 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.IsoFields$Field$4 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.IsoFields$Unit found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.JulianFields found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.JulianFields$Field found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.Temporal found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.TemporalAccessor found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.TemporalAdjuster found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.TemporalAdjusters found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.TemporalAdjusters$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.TemporalAdjusters$DayOfWeekInMonth found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.TemporalAdjusters$Impl found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.TemporalAdjusters$RelativeDayOfWeek found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.TemporalAmount found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.TemporalField found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.TemporalQueries found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.TemporalQueries$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.TemporalQueries$2 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.TemporalQueries$3 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.TemporalQueries$4 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.TemporalQueries$5 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.TemporalQueries$6 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.TemporalQueries$7 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.TemporalQuery found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.TemporalUnit found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.UnsupportedTemporalTypeException found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.ValueRange found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.WeekFields found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.temporal.WeekFields$ComputedDayOfField found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.zone.Ser found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.zone.StandardZoneRules found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.zone.TzdbZoneRulesProvider found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.zone.TzdbZoneRulesProvider$Version found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.zone.ZoneOffsetTransition found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.zone.ZoneOffsetTransitionRule found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.zone.ZoneOffsetTransitionRule$1 found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.zone.ZoneOffsetTransitionRule$TimeDefinition found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.zone.ZoneRules found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.zone.ZoneRules$Fixed found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.zone.ZoneRulesBuilder found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.zone.ZoneRulesBuilder$TZRule found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.zone.ZoneRulesBuilder$TZWindow found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.zone.ZoneRulesException found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.zone.ZoneRulesInitializer found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.zone.ZoneRulesInitializer$DoNothingZoneRulesInitializer found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.zone.ZoneRulesInitializer$ServiceLoaderZoneRulesInitializer found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)
Duplicate class org.threeten.bp.zone.ZoneRulesProvider found in modules jetified-threetenbp-1.4-no-tzdb.2-no-tzdb (org.threeten:threetenbp:1.4.2) and jetified-threetenbp-1.4.2 (org.threeten:threetenbp:1.4.2)

 Go to the documentation to learn how to <a href="d.android.com/r/tools/classpath-sync-errors">Fix dependency resolution errors</a>.
  • 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:
    Execution failed for task ':app:mergeDebugJavaResource'.

A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
More than one file was found with OS independent path 'org/threeten/bp/format/ChronologyText.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.
    ==============================================================================

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

Fatal error and app crash

Hello, I'm occurring in a fatal error with app crash if I close the Sumup bottom sheet when there is the selection for terminal vs payment link.

`[connection] nw_endpoint_handler_set_adaptive_read_handler [C9.1 104.18.16.137:443 ready channel-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, dns)] unregister notification for read_timeout failed
[connection] nw_endpoint_handler_set_adaptive_write_handler [C9.1 104.18.16.137:443 ready channel-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, dns)] unregister notification for write_timeout failed
SUMUP SDK WARNING: tipAmount <= 0 will be ommitted. Tip amount will be reset to nil.
sumup/SwiftSumupPlugin.swift:79: Fatal error: Unexpectedly found nil while unwrapping an Optional value
sumup/SwiftSumupPlugin.swift:79: Fatal error: Unexpectedly found nil while unwrapping an Optional value

  • thread #1, queue = 'com.apple.main-thread', stop reason = Fatal error: Unexpectedly found nil while unwrapping an Optional value
    frame #0: 0x00000001a70b7060 libswiftCore.dylib_swift_runtime_on_report libswiftCore.dylib_swift_runtime_on_report:
    -> 0x1a70b7060 <+0>: ret
    libswiftCore.dylib_swift_reportToDebugger: 0x1a70b7064 <+0>: b 0x1a70b7060 ; _swift_runtime_on_report libswiftCore.dylib_swift_shouldReportFatalErrorsToDebugger:
    0x1a70b7068 <+0>: adrp x8, 324407
    0x1a70b706c <+4>: ldrb w0, [x8, #0xfd1]
    Target 0: (Runner) stopped.
    Lost connection to device.`

Reason when Checkout fails

Hi there,

i wonder if the SumUp SDK is returning some sort of reason to this plugin when a checkout fails, and if yes, if that reason could be added into SumupPluginCheckoutResponse as a new field (and included in SumupPluginCheckoutResponse.fromMap(...))?
Best would be an enum with types like userAbortedPayment, wrongCurrency, amountTooSmall, etc.
At the moment the plugin only says that success is false which is quite a limited information and doesn't help much when trying to analyze problems around the payment process.

Usage oauth2

Has anyone succeeded in using oauth2 with sumup and is he/she willing to share the process and code?

Return internal_id

Hey, thanks for making the plugin

Can you also return the internal_id from sumUp for the checkout?

Thanks

Build for Android "targetSdkVersion 31" produces error "android:exported needs to be explicitly specified for <activity>"

If i do compile my project with target SDK version 31, the build fails with the following error:

android:exported needs to be explicitly specified for <activity>. Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported` when the corresponding component has an intent filter defined. See [https://developer.android.com/guide/topics/manifest/activity-element#exported]() for details.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:processDebugMainManifest'.
> Manifest merger failed : android:exported needs to be explicitly specified for <activity>. Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported` when the corresponding component has an intent filter defined. See [https://developer.android.com/guide/topics/manifest/activity-element#exported]() for details.

If i remove the sum-up package, everything works fine. Could you please fix this issue by updating the package?

Best regards,

Daniel

[✓] Flutter (Channel stable, 2.10.2, on macOS 12.2.1 21D62 darwin-x64, locale en-DE)
    • Flutter version 2.10.2 at /Users/danielwolf/Documents/GitHub/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 097d3313d8 (2 weeks ago), 2022-02-18 19:33:08 -0600
    • Engine revision a83ed0e5e3
    • Dart version 2.16.1
    • DevTools version 2.9.2

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /Users/danielwolf/Library/Android/sdk
    • Platform android-31, build-tools 31.0.0
    • ANDROID_SDK_ROOT = /Users/danielwolf/Library/Android/sdk/
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.11+0-b60-7590822)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 13.2.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • CocoaPods version 1.11.2

[✓] Android Studio (version 2021.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.11+0-b60-7590822)

[✓] VS Code (version 1.65.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.36.0

[✓] Connected device (2 available)
    • Pixel 3a (mobile)        • 94JAY0PRFA                • android-arm64 • Android 12 (API 31)
    • iPhone von Esys (mobile) • 00008030-000235D821A1802E • ios           • iOS 15.3.1 19D52

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

Crash on iOS when Logging in: UUID Exception

Environment

Flutter Version: 3.13.5
SumUp flutter plugin Version: 0.8.0
iOS Version: 17.1.2

Issue Description

When attempting to log in using the SumUp package on an iOS device, the application crashes with an NSInternalInconsistencyException. This issue seems specific to iOS version 17.1.2.

Steps to Reproduce

Initialize SumUp SDK.
Trigger login process.
Application crashes during login.

Expected Behavior

The login process should complete without causing the application to crash.

Actual Behavior

Application crashes with the following exception:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'String does not represent a valid UUID' *** First throw call stack: (0x1b4e9c870 0x1ad1b7c00 0x1b4406d18 0x1d95a6634 0x1d95a68a8 0x1d9569130 0x1d9568cd8 0x103c037a0 0x10375eb34 0x103760690 0x103c03750 0x103c12828 0x103c12780 0x103c005e4 0x103c0033c 0x103c00478 0x103c001cc 0x103bffb54 0x1b4ddf4c8 0x1b4ddee90 0x1b4ddedd8 0x1b4dde328 0x1b3d7a864 0x103c336fc 0x103c320d8 0x103c271a4 0x103c25800 0x1b60f9d88 0x1b60f9d2c 0x1b60f9e48 0x1b60211a4 0x1b601f9ac 0x10375eb34 0x103762530 0x1b60d65e8 0x1b4dd48b0 0x1b60d64d8 0x1b60d8bbc 0x1b4de731c 0x1b4de6598 0x1b4de4d4c 0x1b4de3a88 0x1b4de3668 0x1f81ae5ec 0x1b72002b4 0x1b71ff8f0 0x102a60558 0x1d7836dcc) libc++abi: terminating due to uncaught exception of type NSException

Offer loginWithCredentials

I would like to discuss a new login variant loginWithCredentials which allows to pass the credentials from the Flutter app (e.g. by storing them in shared preferences) instead of relying on the autofill method when a user has already entered his credentials once in the login form.
Since loginWithToken only seems to work for merchants but not for employees this would be a nice addition to this plugin, where a user could enter his credentials once in the app.

What do you think?

Unsupported Swift architecture |. Could not build Objective-C module 'SumUpSDK'

I am gotting error when implementing sumup example which it is giving on ios simulator

Swift Compiler Error (Xcode): Unsupported Swift architecture
/Users/safiullahparvez/Flutter%20Applications/stripe/build/ios/Debug-iphonesimulator/XCFrameworkIntermediates/SumUpSDK/SumUpSDK.framework/Headers/SumUp-GeneratedHeader-Swift.h:262:1

Swift Compiler Error (Xcode): Could not build Objective-C module 'SumUpSDK'
/Users/safiullahparvez/.pub-cache/hosted/pub.dev/sumup-0.8.1/ios/Classes/SwiftSumupPlugin.swift:1:7

Flutter Version: Flutter 3.16.9
Sumup Version: sumup: ^0.8.1

Please tell me the solution

Cover Android 12 & 13 in the example app

Today i've tested my Flutter app with an Android 13 device and got this error message:

Fatal Exception: java.lang.SecurityException: Need android.permission.BLUETOOTH_SCAN permission for android.content.AttributionSource@80b0b746: GattService registerScanner

Below Android 12 no permission was needed in order to use the SumUp package.
I would like to know what permissions are needed to set in AndroidManifest.xml for using SumUp successfully?
I started using these 4 permissions:

<uses-permission android:name="android.permission.BLUETOOTH"
                 android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"
                 android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

Also it would be great if you could update the package's example app regarding the Android part in order to reflect working on Android 12 & 13 as well.

Thank you very much.

EDIT: From what i understand is that the app crashes even if BLUETOOTH_SCAN and BLUETOOTH_CONNECT are defined, since those declarations do not lead to the allowance of accessing nearby devices. Only if i allow that permission manually in the app's permission settings i can use and pay with the SumUp device on an Android 13 device.

Localizing the screens

Hello,

first of all thank you for the great plugin.

I have a question about the localisations. Login or checkout screens will be shown in english. How can we make these screens appear in German for example?

Thanks in advance!

Build error on iOS

Failed to build iOS app
Error output from Xcode build:

** BUILD FAILED **
Xcode's output:

/Users/xxx/flutter/.pub-cache/hosted/pub.dartlang.org/sumup-0.2.2/ios/Classes/SwiftSumupPlugin.swift:2:8: error: no such module 'SumUpSDK'
import SumUpSDK
^

Refund money on paymentterminal

I'm having trouble refunding money through the terminal.

Does SumUp not allow this, besides refunding through their website dashboard? I have trouble finding an answer online.

Error on payment link (iOS)

Hi,
first of all I want to thank you so much for this plugin!

I found a bug when trying to pay through Payment link on iOS:

  • on payment link, as we are processing an online payment, card is empty, and so we need to add a null safe, otherwise the app crashes:
    Screenshot 2022-11-30 at 18 22 59
  • on payment link, checkoutResult.additionalInfo?["installments"] is returned, but its type is string and so on dart side the code breaks (SumupPluginCheckoutResponse.dart):

Screenshot 2022-11-30 at 18 25 09

I have not yet tried the functionality on Android devices.

Thanks!

Usage for contractors

Hi there,
i'm building a Flutter app which contractors of a company should use and get paid by customers using Sumup.
But the contractors all have to use the same merchant id from the company, and they are not supposed to log in to that account.
Is there a way to cover this scenario as well? Or could contractors have separate logins for the merchant's account with a different role, where they can only see their own history of payments when logged in?

Documentation request: What do the Payment title and SumupPaymentRequest info fields do?

In the example code, I see two fields that are not clear to me:

                var payment = SumupPayment(
                  title: 'Test payment',    <----------------
                  total: 1.2,
                  currency: 'EUR',
                  foreignTransactionId: '',
                  saleItemsCount: 0,
                  skipSuccessScreen: false,
                  tip: .0,
                );

When I run an actual transaction, this information does not appear on the banking record for the consumer, although I do see it on the Sumup receipt that was emailed to the customer.

The SumupPaymentRequest also has an "info" field. and I do not see where this is reflected in the bank statement or on the receipt of the customer.

                var request = SumupPaymentRequest(payment, info: {
                  'AccountId': 'taxi0334',
                  'From': 'Paris',
                  'To': 'Berlin',
                });

Is there any way for me to push into the system information that will be displayed to the consumer in either the description or reference field of the transaction?

Thanks for the great plug-in. Very easy to implement!

iOS login failure

Greetings,

In my testing I'm having trouble getting the SumUp login to work on iOS devices.

Following is a list of steps I take to reproduce this issue:

  • I call Sumup.init(key) with an affiliate key that my company maintains (this call returns a successful plugin response)
  • I double check the affiliate key matches the one in the SumUp dashboard which has a respective application ID that matches the app bundle ID specified in the Info.plist
  • I call Sumup.login() and attempt to login with an account which is registered in the SumUp dashboard. Both the overarching account credentials and the employee credentials produce the same result.
    -> The SumUp overlay fails with the following message: "Server error. These credentials are incorrect. Please check your username and password and try again" (translated from Dutch as I work for a Dutch company)

This was tested on an iPhone 8 running iOS 16.3. It recently updated to this version so I tried this same flow in iOS simulators with earlier versions. Both iOS 14.5 and 15.5 produce the same output so I can only conclude this is unrelated.
The same codepath runs fine on Android devices with the same credentials.

Additional thoughts: The Info.plist contains usage strings for both Location and Bluetooth usage.
Me and my co-workers are stumped.

Screen Shot 2023-01-31 at 14 12 13

compatibility with Theme.Appcompat and Theme.MaterialComponents

I am unable to figure out if the app is crashing because of incompatibility with the app theme.

Actually i have to use this kind of android configuration in styles.xml in order to use other packages:

<style name="LaunchTheme" parent="Theme.AppCompat.Light.NoActionBar"> @drawable/launch_background </style> <style name="NormalTheme" parent="Theme.MaterialComponents"> ?android:colorBackground </style>

and i think this is not working with sumup package.

Anyway, this is the logcat output (package name omitted and substituted with com.********* for privacy and security reasons)

onAttachedToEngine
16:35:07.108 D onMethodCall: initSDK
16:35:07.155 D onMethodCall: login
16:35:07.159 I START u0 {cmp=com./com.sumup.merchant.reader.identitylib.ui.activities.LoginActivity (has
extras) mCallingUid=10270} from uid 10270
16:35:07.166 D isSupportZoomModeWithPolicyLocked: target
= com.
/com.sumup.merchant.reader.identitylib.ui.activities.LoginActivity
16:35:07.169 D add ActivityRecord{2eda08 u0
com./com.sumup.merchant.reader.identitylib.ui.activities.LoginActivity} t70} to mActivityRecordSum
= Counter{com.
/.MainActivity(1) com./com.sumup.merchant.reader.identitylib.ui.activities.LoginActivity(1) }
16:35:07.169 D getStartingWindowType: newTask=false, taskSwitch=false, processRunning=true, allowTaskSnapshot=true, activityCreated=false, snapshot=null, record:ActivityRecord{2eda08
u0 com.
/com.sumup.merchant.reader.identitylib.ui.activities.LoginActivity} t70}
16:35:07.169 D isSupportZoomModeWithPolicyLocked: target
= com./com.sumup.merchant.reader.identitylib.ui.activities.LoginActivity
16:35:07.186 I setFocusedApplication displayId=0 ActivityRecord{2eda08 u0
com.
/com.sumup.merchant.reader.identitylib.ui.activities.LoginActivity} t70}
16:35:07.426 E FATAL EXCEPTION: main
Process: com., PID: 30289
java.lang.RuntimeException: Unable to resume activity
{com.
/com.sumup.merchant.reader.identitylib.ui.activities.LoginActivity}: java.lang.IllegalMonitorStateException: object
not locked by thread before wait()
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:5060)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:5103)
at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:60)
at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2466)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:240)
at android.os.Looper.loop(Looper.java:351)
at android.app.ActivityThread.main(ActivityThread.java:8381)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:584)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)
Caused by: java.lang.IllegalMonitorStateException: object not locked by thread before wait()
at java.lang.Object.wait(Native Method)
at com.sumup.base.common.location.GoogleLocationServicesManager.requestLocationUpdates(Unknown Source:28)
at com.sumup.base.common.location.GoogleLocationServicesManager.startLocationScanning(Unknown Source:31)
at com.sumup.merchant.reader.identitylib.ui.activities.LoginActivity.onResume(SourceFile:11)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1550)
at android.app.Activity.performResume(Activity.java:8540)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:5042)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:5103) 
at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:60) 
at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45) 
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176) 
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2466) 
at android.os.Handler.dispatchMessage(Handler.java:106) 
at android.os.Looper.loopOnce(Looper.java:240) 
at android.os.Looper.loop(Looper.java:351) 
at android.app.ActivityThread.main(ActivityThread.java:8381) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:584) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013) 
16:35:07.437 W Force finishing activity com./com.sumup.merchant.reader.identitylib.ui.activities.LoginActivity
16:35:07.599 D remove ActivityRecord{2eda08 u0
com.
/com.sumup.merchant.reader.identitylib.ui.activities.LoginActivity} t-1 f}} to
mActivityRecordSum = Counter{com./.MainActivity(1) }
16:35:07.625 D reparent to null sequence=474, seq[1], name=ActivityRecord{2eda08 u0
com.
/com.sumup.merchant.reader.identitylib.ui.activities.LoginActivity}#474
16:35:07.625 D ~Layer() sequence=474, name=ActivityRecord{2eda08 u0
com./com.sumup.merchant.reader.identitylib.ui.activities.LoginActivity}#474
16:35:07.938 W Activity top resumed state loss timeout for ActivityRecord{2eda08 u0
com.
/com.sumup.merchant.reader.identitylib.ui.activities.LoginActivity} t-1 f}}

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.