Code Monkey home page Code Monkey logo

sdk-android's Introduction

sdk-android's People

Contributors

andreafilyo avatar astro-choco avatar attila-izettle avatar avilkovpaypal avatar bobzettle avatar chezhongsdk avatar fabriciovergara avatar fparmak avatar isabellr avatar iznatalia avatar jamesrmckie avatar karyamane avatar mfareed-pp avatar moelbehiry avatar mohammed-io avatar pp-laszlopinter avatar pvoid avatar rafa-izettle avatar upillaipp avatar

Stargazers

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

Watchers

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

sdk-android's Issues

java.lang.IllegalStateException when CardPaymentActivity invokes setRequestedOrientation() in release-1.14.15

Expected Behavior

No crash

Current Behavior

Crash with stack:

java.lang.RuntimeException:
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3303)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3411)
at android.app.ActivityThread.-wrap12 (Unknown Source)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1994)
at android.os.Handler.dispatchMessage (Handler.java:108)
at android.os.Looper.loop (Looper.java:166)
at android.app.ActivityThread.main (ActivityThread.java:7529)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:245)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:921)
Caused by: java.lang.IllegalStateException:
at android.os.Parcel.readException (Parcel.java:1962)
at android.os.Parcel.readException (Parcel.java:1900)
at android.app.IActivityManager$Stub$Proxy.setRequestedOrientation (IActivityManager.java:5704)
at android.app.Activity.setRequestedOrientation (Activity.java:6132)
at com.izettle.payments.android.ui.payment.CardPaymentActivity.onCreate (CardPaymentActivity.java:83)
at android.app.Activity.performCreate (Activity.java:7383)
at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1218)
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3256)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3411)
at android.app.ActivityThread.-wrap12 (Unknown Source)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1994)
at android.os.Handler.dispatchMessage (Handler.java:108)
at android.os.Looper.loop (Looper.java:166)
at android.app.ActivityThread.main (ActivityThread.java:7529)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:245)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:921)

Steps to Reproduce

We can't reproduce, the crashes come from Google Play Console reports, but suspect it is this issue:

https://stackoverflow.com/questions/50976174/illegalstateexception-on-setrequestedorientation/50984372

Context

User is running

Huawei HUAWEI MediaPad T3 10
Android 8.0 (SDK 26)

Failure Logs

Can't complete OAuth login flow after upgrading from 1.25.6 to 1.30.1

Expected Behavior

After logging in and authorizing the app, the flow should return to the client app with a valid access token, prompting the user to select card readers.

Current Behavior

App remains on the page with the login button. The app doesn't appear to receive the OAuth access token.

Steps to Reproduce

Update a previously working integration from 1.25.6 to 1.30.1

Are there any related known issues with 1.30.1 that are being worked on? Has anyone else reported similar issues after upgrading to 1.30.1?

Context

Please provide any relevant information about your setup. This is important in case the issue is not reproducible except for under certain conditions.

  • Tested on Android Version: 30, 31
  • Android Target SDK version: 32

Logs

Here's the request to the browser:

2022-07-08 13:44:33.404 20232-20232/com.planetcoops.android.taximeter I/AuthWebLauncherImpl: Launching browser with URI https://oauth.zettle.com/authorize?client_id=[redacted]&scope=READ%3APAYMENT%20WRITE%3APAYMENT%20READ%3AUSERINFO&redirect_uri=com.planetcoops.taximeter%3A%2F%2Fauth&code_challenge=W8w60LUSwxLY0EKDSGCJKA5gHNkJA51Ll0Vd6h_u7Co&code_challenge_method=S256&response_type=code&app=payments-sdk&prompt=login&app_version=1.1.130&os=android&os_version=30&udid=ADb45e84249597414bb782a0f3578b8fd8ec07c4&locale=en-GB&state=eyJjYWxsaW5nQWN0aXZpdHlDbGFzcyI6ImNvbS5pemV0dGxlLnBheW1lbnRzLmFuZHJvaWQudWkucGF5bWVudC5DYXJkUGF5bWVudEFjdGl2aXR5IiwidGFza0lkIjoiODdjNWY5MDktMWI1Yi00ZDczLTg5Y2MtZDhlOTgwMjZmMjFhIiwidGFza1R5cGUiOiJjb20uaXpldHRsZS5hbmRyb2lkLmF1dGgudGFza3MuT0F1dGhMb2dpblRhc2sifQ
at com.izettle.android.auth.log.StackTraceKt.withStackTrace(SourceFile:1)
at com.izettle.android.auth.AuthWebLauncherImpl.launchInBrowser(SourceFile:1)
at com.izettle.android.auth.OAuthActivity.onResume(SourceFile:10)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1456)
at android.app.Activity.performResume(Activity.java:8135)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4434)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4476)
at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52)
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:2066)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

Query Connected Reader Details

As part of our Android app, we would like to alert the user to the fact that they are (or are not) connected to a zettle reader.

I understand I can open the CardReadersActivity to show the connected reader with the following code:

val intent = CardReadersActivity.newIntent(context)
startActivity(intent)

But what I would like to do is just to get the details of the connected reader in code, and display the name/number of the connected reader in our header on every activity.

Is there a method in the sdk to get the name/number of the connected reader? Or a handle to the connected reader that might return a null if there is no reader connected?

Also, is there any documentation for the SDK apart from this github page? Any class/method reference?

Thanks,
Chris

SecurityException when calling getNetworkCapabilities() on Android 11 in release-1.14.15

Expected Behavior

No crash

Current Behavior

Crash with stack:

java.lang.RuntimeException:
at android.app.ActivityThread.handleBindApplication (ActivityThread.java:6759)
at android.app.ActivityThread.access$1400 (ActivityThread.java:244)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1952)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loop (Looper.java:223)
at android.app.ActivityThread.main (ActivityThread.java:7700)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:612)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:997)
Caused by: java.lang.SecurityException:
at android.os.Parcel.createExceptionOrNull (Parcel.java:2373)
at android.os.Parcel.createException (Parcel.java:2357)
at android.os.Parcel.readException (Parcel.java:2340)
at android.os.Parcel.readException (Parcel.java:2282)
at android.net.IConnectivityManager$Stub$Proxy.getNetworkCapabilities (IConnectivityManager.java:2456)
at android.net.ConnectivityManager.getNetworkCapabilities (ConnectivityManager.java:1417)
at com.izettle.android.commons.network.NetworkImplV21. (NetworkImplV21.java:199)
at com.izettle.android.commons.network.NetworkImplV21. (NetworkImplV21.java:190)
at com.izettle.android.commons.network.Network$Companion.create (Network.java:111)
at com.izettle.payments.android.sdk.IZettleSDK$Instance.init (IZettleSDK.java:139)
at com.izettle.payments.android.sdk.IZettleSDK$Instance.init (IZettleSDK.java:113)
at com.planetcoops.android.taximeter.TaximeterApplication.onCreate (TaximeterApplication.java:88)
at android.app.Instrumentation.callApplicationOnCreate (Instrumentation.java:1192)
at android.app.ActivityThread.handleBindApplication (ActivityThread.java:6754)
at android.app.ActivityThread.access$1400 (ActivityThread.java:244)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1952)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loop (Looper.java:223)
at android.app.ActivityThread.main (ActivityThread.java:7700)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:612)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:997)
Caused by: android.os.RemoteException:
at android.app.AppOpsManager.checkPackage (AppOpsManager.java:7757)
at com.android.server.MtkConnectivityService.getNetworkCapabilities (MtkConnectivityService.java:1724)
at android.net.IConnectivityManager$Stub.onTransact (IConnectivityManager.java:978)
at android.os.Binder.execTransactInternal (Binder.java:1154)
at android.os.Binder.execTransact (Binder.java:1123)

Steps to Reproduce

Appears to crash on Android 11 when calling the iZettle SDK's init. The SecurityException is thrown when calling the ConnectivityManager's getNetworkCapabilites() and the issue is described here, https://stackoverflow.com/questions/67886957/securityexception-when-calling-getnetworkcapabilities-on-android-11

It would appear to be intermittent so catching the exception and retrying might be a way to workaround the issue?

Context

Nokia 2.4 running Android 11
SDK 1.14.15

Failure Logs

Send Payment Links - Android SDK

This might not be the best place to post this as it's not an issue as such. I would like to include the capability to send Payment Links from a bespoke app for a private client. My client is currently using the IZettle app, but they are exploring their own bespoke solutions catered for their use case integrated with the IZettle card reader and also have the capability to send Payment Links from this bespoke app for their business. Is this currently possible with the SDK? If not, then is there any plans to add this in the future?

Thanks,

xeb

πŸ”’ GitHub Advanced Security has been enabled

GitHub Advanced Security has been enabled on this repository as part of our automatic phased rollout.

Secret Scanning

Secret Scanning is now active, which means that in the "Security" tab, you may now see identified secrets that needs to be handled.

Code Scanning

Code Scanning is not automatically activated - see documentation for how to enable it.

Read more about GitHub Advanced Security and the rollout in on the tech-guidelines wiki

πŸ”’ GitHub Advanced Security has been enabled

GitHub Advanced Security has been enabled on this repository as part of our automatic phased rollout.

Secret Scanning

Secret Scanning is now active, which means that in the "Security" tab, you may now see identified secrets that needs to be handled.

Code Scanning

Code Scanning is not automatically activated - see documentation for how to enable it.

Read more about GitHub Advanced Security and the rollout in on the tech-guidelines wiki

transparent or auto login

How to login in transparent or auto login a app.
I need my app log without tell the account.
Waiting for a onlisten or handler to do a UI myself.
Thank you

java.lang.AssertionError at com.izettle.payments.android.bluetooth.c.lock (c.java:77) in release-1.14.15

Expected Behavior

Current Behavior

Witnessing several crashes with the following stack from the Google Play Developer Console

java.lang.AssertionError:
at com.izettle.payments.android.bluetooth.c.lock (c.java:77)
at com.izettle.payments.android.bluetooth.ble.a.a (a.java:108)
at com.izettle.payments.android.bluetooth.ble.a.getServices (a.java:57)
at com.izettle.payments.android.readers.vendors.datecs.ReaderV2TransportImpl.doReadPowerState (ReaderV2TransportImpl.java:686)
at com.izettle.payments.android.readers.vendors.datecs.ReaderV2TransportImpl.access$doReadPowerState (ReaderV2TransportImpl.java:212)
at com.izettle.payments.android.readers.vendors.datecs.ReaderV2TransportImpl$j.a (ReaderV2TransportImpl.java:600)
at com.izettle.payments.android.readers.vendors.datecs.ReaderV2TransportImpl$j.invoke (ReaderV2TransportImpl.java:212)
at com.izettle.android.commons.thread.c.run (Unknown Source:2)
at java.lang.Thread.run (Thread.java:784)

Steps to Reproduce

We can't reproduce, the crashes come from Google Play Console reports.

Context

User is running

Huawei M5
Android 8.0 (SDK 26)

Failure Logs

Send Receipt to Customer

Is there any way that the SDK can send a receipt to the customer?
ie. Can they enter their phone no / email, and have the receipt emailled/texted to them?

Refund appears to be failing

Expected Behavior

Refund to go through successfully.

Current Behavior

It failed with a message Card payment activity must be specified right after a refund is requested.

Context

Please provide any relevant information about your setup. This is important in case the issue is not reproducible except for under certain conditions.

  • Operating Version: Android 11
  • SDK version: 31

Failure Logs

requestRefund: {reference=***, taxAmount=null, receiptNumber=null, refundAmount=null}
java.lang.IllegalArgumentException: Card payment must be specified
at com.izettle.payments.android.ui.refunds.RefundsActivity$IntentBuilder.build(SourceFile:17)

CardReadersActivity InflateException error

Expected Behavior

Open CardReadersActivity

Current Behavior

CardReadersActivity crashes due to android.view.InflateException

Steps to Reproduce

startActivity(CardReadersActivity.newIntent(this))
Call CardReaderActivity

Context

  • AppTheme: Theme.MaterialComponents.Light.NoActionBar.Bridge
  • Operating Version: 4.0.2

Failure Logs

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.mobonapps.kiosk, PID: 27501
    android.view.InflateException: Binary XML file line #29: Binary XML file line #29: Error inflating class TextView
    Caused by: android.view.InflateException: Binary XML file line #29: Error inflating class TextView
    Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 15: TypedValue{t=0x2/d=0x7f040129 a=-1}
        at android.content.res.TypedArray.getDimensionPixelSize(TypedArray.java:731)
        at android.view.View.<init>(View.java:5030)
        at android.widget.TextView.<init>(TextView.java:892)
        at android.widget.TextView.<init>(TextView.java:886)
        at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:100)
        at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:95)
        at androidx.appcompat.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:194)
        at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:115)
        at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1551)
        at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1602)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
        at androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:873)
        at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:806)
        at androidx.appcompat.app.AppCompatDelegateImpl.onPostCreate(AppCompatDelegateImpl.java:527)
        at androidx.appcompat.app.AppCompatActivity.onPostCreate(AppCompatActivity.java:127)
        at android.app.Instrumentation.callActivityOnPostCreate(Instrumentation.java:1343)
        at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3006)
        at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180)
        at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165)
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1820)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6758)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

Hide charging popup

Hello,

Expected Behavior

Hide Charging popup

I have an branding screen for card tapping but iZettle SDK show a popup which left my branding screen behind. Is there any way that I can hide that ?

Current Behavior

What is the current behavior?

Steps to Reproduce

Please provide detailed steps for reproducing the issue.

Context

Please provide any relevant information about your setup. This is important in case the issue is not reproducible except for under certain conditions.

  • Operating Version: Android 9+
  • SDK version: SDK 3.0.1

Failure Logs

Please include any relevant log snippets or files here.

How to activate Manual Entry?

Good day I've been looking for a way to manual entry cards using SDK in Android and iOS can you help me?, thanks!

oath and automatic login

I thought the whole idea behind oath was that it would save credentials to provide automatic login procedures.

In my app, I am required to enter an email and password on every launch. This is not a big problem just seems to me that there should be a seamless way of doing an automated login procedure unless I have missed something or something in my integration is not configured correctly?

Signed Integer Overflow when handing over large amount to reader

Expected Behavior

Making a payment request for 100.000.000,00 Euro should prompt a payment for exactly that amount on the reader.

Current Behavior

Signed 32bit integer overflow

IMG_20200616_214135

Steps to Reproduce

val paymentIntent = CardPaymentActivity.IntentBuilder(activity)
                .amount((receipt_total * BigDecimal("100.00")).toLong())  // TODO: Does not work for 0-digit currencies
                .reference(reference)
                .enableTipping(false)
                .build()

Context

  • Operating Version: Android 10
  • SDK version: 1.4.0
  • Originally reported as API-16526, reposted here to tracking purposes

Duplicate class

Expected Behavior

After update from com.izettle.payments:android-sdk-ui:1.8.9 to com.izettle.payments:android-sdk-ui:1.14.15 the app does not start run.

Current Behavior

Works with the old version

  • Operating Version: Android
  • SDK version: 1.8.9

Failure Logs

Duplicate class lib.android.paypal.com.magnessdk.Environment found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.InvalidInputException found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.MagnesResult found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.MagnesSDK found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.MagnesSettings found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.MagnesSettings$1 found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.MagnesSettings$Builder found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.MagnesSource found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.R found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.a found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.a.a found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.a.b found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.a.c found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.b found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.b.a found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.c found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.d found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.d$1 found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.d$a found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.d$b found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.e found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.network.MagnesNetworkingFactoryImpl found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.network.PayPalCertificate found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.network.a found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.network.b found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.network.c found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.network.d found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.network.e found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.network.f found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.network.g found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.network.h found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.network.httpclient.MagnesNetworking found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.network.httpclient.MagnesNetworkingFactory found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.network.i found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.network.j found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.network.k found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.network.l found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.network.m found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.network.n found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)
Duplicate class lib.android.paypal.com.magnessdk.network.o found in modules jetified-android-sdk-1.14.15-runtime (com.izettle.payments:android-sdk:1.14.15) and jetified-data-collector-3.7.2-runtime (com.paypal.android.sdk:data-collector:3.7.2)

App doesn't start

I am getting this error after following the setup steps

Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'.
> Could not resolve all task dependencies for configuration ':app:debugCompileClasspath'.
   > Could not resolve com.izettle.payments:android-sdk-ui:1.24.0.
     Required by:
         project :app
      > No cached version of com.izettle.payments:android-sdk-ui:1.24.0 available for offline mode.

Steps to Reproduce

https://developer.zettle.com/docs/android-sdk/installation-and-configuration

Context

        buildToolsVersion = "31.0.0"
        minSdkVersion = 21
        compileSdkVersion = 31
        targetSdkVersion = 31

SDK version: 1.25.6

πŸ”’ GitHub Advanced Security has been enabled

GitHub Advanced Security has been enabled on this repository as part of our automatic phased rollout.

Secret Scanning

Secret Scanning is now active, which means that in the "Security" tab, you may now see identified secrets that needs to be handled.

Code Scanning

Code Scanning is not automatically activated - see documentation for how to enable it.

Read more about GitHub Advanced Security and the rollout in on the tech-guidelines wiki

How to add user login?

In step 2 of "Getting Started" our app must add a callback activity for user OAuth login with some "redirect URL", yet it is unclear what redirect URL must do and who provides such URL.
Please explain how to add user authorization to the app.

CardPaymentActivity amount should be a double

Expected Behavior

To be able to take payments in pounds and pence, dollar and cents, e.g. 1.99, the amount value in CardPaymentActivity should be a double.

Current Behavior

The amount value is currently a Long

Steps to Reproduce

See example Step 5

val intent = CardPaymentActivity.IntentBuilder(this)
    // MANDATORY: Transaction amount in account currency 
    .amount(20000L)
    // MANDATORY, Reference object created in previous step        
    .reference(reference)
    // MANDATORY, you can enable login prompt in the payment flow if user is not yet logged-in
    .enableLogin(enableLogin)
    // OPTIONAL, you can enable tipping (disabled by default)       
    // This option will only work for markets with tipping support
    .enableTipping(true)
    // OPTIONAL, you can enable installments (enabled by default)
    // This option will only work for markets with installments support
    .enableInstalments(enableInstallments)
    .build()

Missing Enforced User Account feature.

Expected Behavior

I was building a payment app on both Android and iOS. I wanted to restrict the usage of the SDK to a certain iZettle account as I could do it on iOS.

Current Behavior

On iOS I saw that we have the feature Enforced User Account but Android.

  • Operating Version: 9.0
  • SDK version: 1.8.9

Frozen Modal when starting payment for logged out user

Expected Behavior

When starting a payment intent for a user that is not logged in, a NotAuthorized exception should be thrown - as explained in the README.

Current Behavior

An empty modal is displayed with no way to close it. Only force-quitting the app will make it go away.

I would like to recommend to either actually raise the NotAuthorized-exception or - even better in my opinion - to just trigger the OAUTH login-process.

Steps to Reproduce

        val paymentIntent = CardPaymentActivity.IntentBuilder(activity)
                .amount((receipt_total * BigDecimal("100.00")).toLong())  // TODO: Does not work for 0-digit currencies
                .reference(reference)
                .enableTipping(false)
                .build()

        activity.startActivityForResult(paymentIntent, REQUEST_CODE_EFT_PAYMENT)

Of course we can (and are) wrapping the activity.startActivityForResult in a check if the user is logged in - but this should not be necessary, imho.

Context

  • Operating Version: Android 10
  • SDK version: 1.4.0
  • Originally reported as API-16526, reposted here to tracking purposes

πŸ”’ GitHub Advanced Security has been enabled

GitHub Advanced Security has been enabled on this repository as part of our automatic phased rollout.

Secret Scanning

Secret Scanning is now active, which means that in the "Security" tab, you may now see identified secrets that needs to be handled.

Code Scanning

Code Scanning is not automatically activated - see documentation for how to enable it.

Read more about GitHub Advanced Security and the rollout in on the tech-guidelines wiki

Buttons are not displayed correctly

Hello IZettle Team we discovered that the buttons in the SDK views are not displaying correctly.

The tests were performed on a tablet samsung galaxy Tab A 8 '2019 with Android version 9.0

We attach screenshots of how the view is currently displayed. As you can see, no button with color is shown to the user.

Screenshot_20200924-192123_Shopper Deli
Screenshot_20200924-191931_Shopper Deli
Screenshot_20200924-192357_Shopper Deli
Screenshot_20200924-191854_Shopper Deli

Action Request(2049, true) is not supported in state ConnectingToRx

I'm seeing similar issue to #54

Around 42 times in the last 14 days out of thousands of successful transactions.

Since upgrading from 1.14.16 to 1.32.0
Android 8.1.0
Elo-i3-22Std

Various errors:

#com.izettle.payments.android.readers.vendors.datecs.ReaderV2Transport$RxConnection getRxConnection()
Action Request(2049, true) is not supported in state ConnectingToRx
Action Ready is not supported in state ConnectedToPw

#com.izettle.payments.android.readers.vendors.datecs.DatecsReaderV2
Command 0x7C0102000001007E is not expected in state Configured
Command 0x000482180006CA040000001244 is not expected in state TransactionConfirmedByReader
Command 0x0B01020000010009 is not expected in state TransactionInitializing
Command 0x000482180006CA04000000095F is not expected in state ConfigurationStarting

Due to the requirement to upgrade to this later version for the newer bluetooth modules, I can't go back to the working version.
Any help would be appreciated.

Authentication with an Assertion Grant

I am attempting a private integration of the android zettle sdk, and would prefer to use the Assertion Grant rather than the authorization code grant. This is because I do not wish my users to have to type in an iZettle username and password, as well as their authentication with my own ordanisation. I'm hoping to authenticate the user myself, and then generate and pass on the zettle access token myself.

Is this possible with the android sdk? I cannot see any methods on the User object where I might use an access token to authenticate.

Or am I missing something fundamental? I'm new to OAuth and might have completely missed the point...

Thanks,
Chris

json response - code_verifier error

Expected Behaviour

I am having problems with my PHP for the Oauth2 authentication (Access token fetch)

Current Behaviour

I can get the β€œcode” + β€œstate” in my PHP script – but when I try to fetch the access token from β€œhttps://oauth.izettle.com/token” I am getting an error message :

β€œjson={"error":"invalid_request","error_description":"code_verifier cannot be empty"}”

Steps to Reproduce

I have all the code compiling and building in android studio – that is all good - no modifications to the main code - values are setup in iZettleSDK.gradle (githubAccessToken/clientId/redirectUrlScheme/redirectUrlHost)

Context

  • Operating Version: Android 10 on moto g8
  • SDK version: release-1.8.9

Failure Logs

β€œjson={"error":"invalid_request","error_description":"code_verifier cannot be empty"}”

Connection problem using two devices and one zettle terminal

Expected Behavior

I would like to use a Zettle terminal with multiple devices. I would like to be able to process a payment on both devices one after the other.
Is it possible to use a Zettle terminal with multiple devices that have the SDK integrated?

Current Behavior

When I complete a payment with the first device and then want to start a payment with a second device, I can't connect to the terminal. Only when I completely close my app on the first device can I establish a connection with the second device. It seems that the Bluetooth connection does not end automatically.

Does anyone have experience dealing with this?

Steps to Reproduce

Use an App with integrated SDK on two devices with one zettle terminal. Complete an payment on device 1 and then try to start an payment on device 2.

Context

Multiple point of sales running the same POS-App with the integrated zettle sdk and one zettle card terminal.

  • Operating Version: Android 12 (same issue on iOS)
  • SDK version: 1.14.15

ArrayIndexOutOfBoundsException wrapping CroneCommand in release-1.8.9

Expected Behavior

Current Behavior

Witnessing several crashes with the following stack from the Developer Console:

java.lang.ArrayIndexOutOfBoundsException:
at com.izettle.payments.android.readers.vendors.datecs.crone.a. (a.java:64)
at com.izettle.payments.android.readers.vendors.datecs.crone.CroneCommand$Companion.wrap (CroneCommand.java:38)
at com.izettle.payments.android.readers.vendors.datecs.crone.DecryptedResponseContainerImpl.toCommand (DecryptedResponseContainerImpl.java:254)
at com.izettle.payments.android.readers.vendors.datecs.ReaderV2TransportImpl.reduce (ReaderV2TransportImpl.java:400)
at com.izettle.payments.android.readers.vendors.datecs.ReaderV2TransportImpl.reduce$readers_release (ReaderV2TransportImpl.java:260)
at com.izettle.payments.android.readers.vendors.datecs.ReaderV2TransportImpl$c.a (ReaderV2TransportImpl.java:239)
at com.izettle.payments.android.readers.vendors.datecs.ReaderV2TransportImpl$c.invoke (ReaderV2TransportImpl.java:212)
at com.izettle.android.commons.state.StateImpl.update (StateImpl.java:87)
at com.izettle.payments.android.readers.vendors.datecs.ReaderV2TransportImpl.action (ReaderV2TransportImpl.java:238)
at com.izettle.payments.android.readers.vendors.datecs.ReaderV2TransportImpl.doReadData (ReaderV2TransportImpl.java:768)
at com.izettle.payments.android.readers.vendors.datecs.ReaderV2TransportImpl.access$doReadData (ReaderV2TransportImpl.java:212)
at com.izettle.payments.android.readers.vendors.datecs.ReaderV2TransportImpl$k.a (ReaderV2TransportImpl.java:610)
at com.izettle.payments.android.readers.vendors.datecs.ReaderV2TransportImpl$k.invoke (ReaderV2TransportImpl.java:212)
at com.izettle.android.commons.thread.c.run (c.java:2)
at java.lang.Thread.run (Thread.java:764)

and

com.izettle.payments.android.readers.vendors.datecs.ReaderV2TransportImpl$a:
at com.izettle.payments.android.readers.vendors.datecs.ReaderV2TransportImpl.reduce (ReaderV2TransportImpl.java:369)
at com.izettle.payments.android.readers.vendors.datecs.ReaderV2TransportImpl.reduce$readers_release (ReaderV2TransportImpl.java:259)
at com.izettle.payments.android.readers.vendors.datecs.ReaderV2TransportImpl$c.a (ReaderV2TransportImpl.java:239)
at com.izettle.payments.android.readers.vendors.datecs.ReaderV2TransportImpl$c.invoke (ReaderV2TransportImpl.java:212)
at com.izettle.android.commons.state.StateImpl.update (StateImpl.java:87)
at com.izettle.payments.android.readers.vendors.datecs.ReaderV2TransportImpl.action (ReaderV2TransportImpl.java:238)
at com.izettle.payments.android.readers.vendors.datecs.ReaderV2TransportImpl.access$action (ReaderV2TransportImpl.java:212)
at com.izettle.payments.android.readers.vendors.datecs.ReaderV2TransportImpl$m.a (ReaderV2TransportImpl.java:246)
at com.izettle.payments.android.readers.vendors.datecs.ReaderV2TransportImpl$m.invoke (ReaderV2TransportImpl.java:212)
at com.izettle.android.commons.thread.a.run (a.java:2)
at android.os.Handler.handleCallback (Handler.java:873)
at android.os.Handler.dispatchMessage (Handler.java:99)
at android.os.Looper.loop (Looper.java:214)
at android.os.HandlerThread.run (HandlerThread.java:65)

Steps to Reproduce

We can't reproduce, the crashes come from Google Play Console reports.

Context

User is running:

Samsung Galaxy S8
Android 9 (SDK 28)

Failure Logs

Technical Error

Expected Behavior

Payment Accepted

Current Behavior

Random occurrence. Payment will be processing for a longer period of time and then return Technical Error Payment Cannot be Processed.

If you check in the Zettle account sometimes the payment will have been taken. Other times the payment has not been taken.

Steps to Reproduce

Happens at random so unable to state.

Context

Kotlin, Android 10, Latest SDK

Technical error This payment may have not gone through. Please check your receipts and try again # Steps to Reproduce. Popup appearing

Expected Behavior

It should show pair card selection option Like iOS.Currently no option showing to pair card .If we enter amount lower then amount iis too low popup shown

Current Behavior

It's showing Technical error. This payment may have not gone through. Please check your receipts and try again

Steps to Reproduce

After initialising SDK .Called code for card payment activity like
String internalTraceId = UUID.RandomUUID().ToString();
TransactionReference reference = new TransactionReference.Builder(internalTraceId)
.Put("PAYMENT_EXTRA_INFO", "Started from home screen")
.Build();
Intent intent = new CardPaymentActivity.IntentBuilder(this)
.Amount(100).
Reference(reference)
.EnableInstalments(false)
.EnableTipping(false)
.EnableLogin(true)
.Build();
StartActivityForResult(intent, 0);

Context

We have done binding for xamarin using all your aar fiile and dependency

  • Operating Version:Android 12
  • SDK version:1.32.0 latest sdk

Failure Logs

Please include any relevant log snippets or files here.
[MagnesPostRequest] MagnesPostRequest returned PayPal-Debug-Id: 53ff64d365bd6
[TokenRepositoryImpl] [{userId=91cacc1e-ec0d-11ea-adb3-38b41d49ad22, tokens=OAuthTokens(accessToken=ey2g, refreshToken=IZ5e, expirationDate=Mon Aug 01 03:49:41 EDT 2022, scopes=[READ:PAYMENT, READ:USERINFO, WRITE:PAYMENT])}]
[TokenRepositoryImpl] at com.izettle.android.auth.log.StackTraceKt.withStackTrace(SourceFile:1)
[TokenRepositoryImpl] at com.izettle.android.auth.TokenRepositoryImpl$storeTokens$storageAction$1.invoke(SourceFile:15)
[TokenRepositoryImpl] at com.izettle.android.auth.TokenRepositoryImpl$storeTokens$storageAction$1.invoke(SourceFile:1)
[TokenRepositoryImpl] at com.izettle.android.auth.storage.AuthStorageKt.runIfCanonicalToResultOtherwiseFail(SourceFile:3)
[TokenRepositoryImpl] at com.izettle.android.auth.TokenRepositoryImpl.storeTokens(SourceFile:18)
[TokenRepositoryImpl] at com.izettle.android.auth.token.TokenManagerImpl.storeTokenPair(SourceFile:1)
[TokenRepositoryImpl] at com.izettle.android.auth.token.TokenManagerImpl.refresh$auth_release(SourceFile:23)
[TokenRepositoryImpl] at com.izettle.android.auth.token.TokenManagerImpl.refresh$auth_release$default(SourceFile:1)
[TokenRepositoryImpl] at com.izettle.android.auth.token.TokenManagerImpl.refreshAccessTokenIfNeeded$auth_release(SourceFile:165)
[TokenRepositoryImpl] at com.izettle.android.auth.token.TokenManagerImpl.getAccessToken(SourceFile:2)
[TokenRepositoryImpl] at com.izettle.android.auth.ZettleAuthServices$accessTokenResolver$2$1.invoke(SourceFile:2)
[TokenRepositoryImpl] at com.izettle.android.auth.ZettleAuthServices$accessTokenResolver$2$1.invoke(SourceFile:1)
[TokenRepositoryImpl] at com.izettle.android.auth.repository.ServiceUriRepositoryImpl.getServiceUrls(SourceFile:1)
[TokenRepositoryImpl] at com.izettle.android.auth.repository.ServiceUriRepository$DefaultImpls.getServiceUrls$default(SourceFile:1)
[TokenRepositoryImpl] at com.izettle.android.auth.repository.ClientServicesRepositoryImpl.getServiceUrl(SourceFile:11)
[TokenRepositoryImpl] at com.izettle.android.auth.ZettleAuthImpl.getServiceUrls(SourceFile:1)
[TokenRepositoryImpl] at com.izettle.payments.android.readers.core.network.service.ServiceUrlsManagerImpl$ServiceUrlImpl$serviceUrls$1.invoke(SourceFile:2)
[TokenRepositoryImpl] at com.izettle.payments.android.readers.core.network.service.ServiceUrlsManagerImpl$ServiceUrlImpl$serviceUrls$1.invoke(SourceFile:1)
[TokenRepositoryImpl] at kotlin.UnsafeLazyImpl.getValue(Lazy.kt:81)
[TokenRepositoryImpl] at com.izettle.payments.android.readers.core.network.service.ServiceUrlsManagerImpl$ServiceUrlImpl.url(SourceFile:31)
[TokenRepositoryImpl] at com.izettle.payments.android.readers.core.network.NetworkClientImpl$request$4$1.invoke(SourceFile:2)
[TokenRepositoryImpl] at com.izettle.payments.android.readers.core.network.NetworkClientImpl$request$4$1.invoke(SourceFile:1)
[TokenRepositoryImpl] at com.izettle.android.net.RequestKt.request(SourceFile:1)
[TokenRepositoryImpl] at com.izettle.payments.android.readers.core.network.NetworkClientImpl$request$4.invoke(SourceFile:2)
[TokenRepositoryImpl] at com.izettle.payments.android.readers.core.network.NetworkClientImpl$request$4.invoke(SourceFile:1)
[TokenRepositoryImpl] at com.izettle.android.auth.okhttp.OkHttpClientWrapper.executeRequestAsync$lambda-2(SourceFile:1)
[TokenRepositoryImpl] at com.izettle.android.auth.okhttp.OkHttpClientWrapper.lambda$BRiHcBZCj4TR4fpO6oVkrxxxuQg(Unknown Source:0)
[TokenRepositoryImpl] at com.izettle.android.auth.okhttp.-$$Lambda$OkHttpClientWrapper$BRiHcBZCj4TR4fpO6oVkrxxxuQg.run(Unknown Source:8)
[TokenRepositoryImpl] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
[TokenRepositoryImpl] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[TokenRepositoryImpl] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
[TokenRepositoryImpl] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
[TokenRepositoryImpl] at java.lang.Thread.run(Thread.java:919)
[TokenRepositoryImpl]
[com.hikepos] Long monitor contention with owner OkHttp Dispatcher (2970) at com.izettle.android.auth.storage.Transaction com.izettle.android.auth.storage.AuthStorage.beginTransaction()(SourceFile:1) waiters=0 in com.izettle.android.core.data.result.Result com.izettle.android.auth.repository.ServiceUriRepositoryImpl.getServiceUrls(boolean) for 5.690s
[OpenGLRenderer] endAllActiveAnimators on 0xbb25fe00 (RippleDrawable) with handle 0xbf702550
[com.hikepos] Reducing the number of considered missed Gc histogram windows from 155 to 100

supportsRtl

Expected Behavior

Right To Left language support support

Current Behavior

Attribute application@supportsRtl value=(true) from AndroidManifest.xml:16:13-39
	is also present at [com.izettle.android.qrc:paypal-qrc-sdk:1.30.1] AndroidManifest.xml:9:18-45 value=(false).

Steps to Reproduce

buid a new app with RTL support

πŸ”’ GitHub Advanced Security has been enabled

GitHub Advanced Security has been enabled on this repository as part of our automatic phased rollout.

Secret Scanning

Secret Scanning is now active, which means that in the "Security" tab, you may now see identified secrets that needs to be handled.

Code Scanning

Code Scanning is not automatically activated - see documentation for how to enable it.

Read more about GitHub Advanced Security and the rollout in on the tech-guidelines wiki

How to close CardPaymentActivity after payment fails?

First let me say that I have very limited android development experience, but have successfully used the Kotlin template to make a functioning app that suits my needs.. except for one thing:

When a payment is initiated as in the template and completed successfully, the CardPaymentActivity exits and returns to my MainActivity, however when the payment fails or times out, the CardPaymentActivity stays active until I press the return button on screen/back button on my phone.

How can I close the CardPaymentActivity automatically if the payment fails or gets cancelled, so that I can use the onActivityResult function to relaunch a payment request?

I have tried running a timer in my MainActivity that after 60seconds tries to close the CardPaymentActivity with no success using the following approaches:

CardPaymentActivity().onBackPressed() *app crashes

CardPaymentActivity().finish() *nothing happens

Due to my lack of experience working with Android, I am not really sure if this is the right way to go about it (probably not!).

Hopefully there is an easy solution to this problem.

Thanks

Ressources cannot be bundled with latest version of aapt

Consuming SDK in Xamarin by creating Binding Wrappers.
When using those Binding Libraries Ressources are bundled at apk level using a new version of aapt.
The build fails because one ressource string (refunds_amount_description) uses multiple placeholders that are not numbered.

Old versions of aapt write only a warning into the log like that (all languages):
.....gradle\caches\transforms-2\files-2.1\259216afb29571d06e4d1303dd438c77\jetified-android-sdk-ui-1.14.15\res\values\values.xml:806:4: Multiple substitutions specified in non-positional format of string resource
string/refunds_amount_description. Did you mean to add the formatted="false" attribute?

For new versions of aapt this is thrown as an error, meaning the issue will be observed for pure java/kotlin android projects too.

Please fix refunds_amount_description by using something like %1$s and %2$s instead of %@

1.14.8 - Failed resolution of: Llib/android/paypal/com/magnessdk/MagnesSDK;

Expected Behavior

Current Behavior

What is the current behavior?

App crashes with the following stack:

--- STACK ---
java.lang.NoClassDefFoundError: Failed resolution of: Llib/android/paypal/com/magnessdk/MagnesSDK;
at com.izettle.payments.android.payment.TransactionsManager$Companion$a.a(Line:1)
at com.izettle.payments.android.payment.TransactionsManager$Companion$a.invoke(Line:1)
at com.izettle.payments.android.payment.TransactionsManagerImpl.getReferenceWithMagnesClientId$payment_release(Line:1)
at com.izettle.payments.android.payment.TransactionsManagerImpl.createAndStartTransaction(Line:1)
at com.izettle.payments.android.payment.TransactionsManagerImpl.reduce(Line:2)
at com.izettle.payments.android.payment.TransactionsManagerImpl.reduce$payment_release(Line:1)
at com.izettle.payments.android.payment.TransactionsManagerImpl$c.a(Line:1)
at com.izettle.payments.android.payment.TransactionsManagerImpl$c.invoke(Line:1)
at com.izettle.android.commons.state.StateImpl.update(Line:4)
at com.izettle.payments.android.payment.TransactionsManagerImpl.action(Line:1)
at com.izettle.payments.android.models.payment.PaymentViewModelImpl.mutate$view_models_release(Line:10)
at com.izettle.payments.android.models.payment.PaymentViewModelImpl$a.a(Line:1)
at com.izettle.payments.android.models.payment.PaymentViewModelImpl$a.invoke(Line:1)
at com.izettle.android.commons.state.StateImpl.update(Line:7)
at com.izettle.payments.android.models.payment.PaymentViewModelImpl.action(Line:1)
at com.izettle.payments.android.models.payment.PaymentViewModelImpl.access$action(Line:1)
at com.izettle.payments.android.models.payment.PaymentViewModelImpl$$special$$inlined$stateObserver$1.onNext(Line:2)
at com.izettle.android.commons.state.StateImpl$b.a(Line:1)
at com.izettle.android.commons.state.StateImpl$b.invoke(Line:1)
at com.izettle.android.commons.thread.a.run(Unknown Source:2)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.lang.ClassNotFoundException: lib.android.paypal.com.magnessdk.MagnesSDK
... 27 more

Steps to Reproduce

Initiate a payment when using com.izettle.payments:android-sdk-ui:1.14.8

Context

Please provide any relevant information about your setup. This is important in case the issue is not reproducible except for under certain conditions.

Phone Model: Pixel 2
Android Version: 11
Board: walleye
Brand: google
Device: walleye
Display: RP1A.201005.004.A1
Finger Print: google/walleye/walleye:11/RP1A.201005.004.A1/6934943:user/release-keys
Host: abfarm873
ID: RP1A.201005.004.A1
Manufacturer: Google
Model: Pixel 2
Product: walleye
Tags: release-keys
Time: 1603833891000
Type: user
User: android-build
Total Internal Memory: 56040513536
Available Internal Memory: 20652740608

Failure Logs

Please include any relevant log snippets or files here.

--- STACK ---
java.lang.NoClassDefFoundError: Failed resolution of: Llib/android/paypal/com/magnessdk/MagnesSDK;
at com.izettle.payments.android.payment.TransactionsManager$Companion$a.a(Line:1)
at com.izettle.payments.android.payment.TransactionsManager$Companion$a.invoke(Line:1)
at com.izettle.payments.android.payment.TransactionsManagerImpl.getReferenceWithMagnesClientId$payment_release(Line:1)
at com.izettle.payments.android.payment.TransactionsManagerImpl.createAndStartTransaction(Line:1)
at com.izettle.payments.android.payment.TransactionsManagerImpl.reduce(Line:2)
at com.izettle.payments.android.payment.TransactionsManagerImpl.reduce$payment_release(Line:1)
at com.izettle.payments.android.payment.TransactionsManagerImpl$c.a(Line:1)
at com.izettle.payments.android.payment.TransactionsManagerImpl$c.invoke(Line:1)
at com.izettle.android.commons.state.StateImpl.update(Line:4)
at com.izettle.payments.android.payment.TransactionsManagerImpl.action(Line:1)
at com.izettle.payments.android.models.payment.PaymentViewModelImpl.mutate$view_models_release(Line:10)
at com.izettle.payments.android.models.payment.PaymentViewModelImpl$a.a(Line:1)
at com.izettle.payments.android.models.payment.PaymentViewModelImpl$a.invoke(Line:1)
at com.izettle.android.commons.state.StateImpl.update(Line:7)
at com.izettle.payments.android.models.payment.PaymentViewModelImpl.action(Line:1)
at com.izettle.payments.android.models.payment.PaymentViewModelImpl.access$action(Line:1)
at com.izettle.payments.android.models.payment.PaymentViewModelImpl$$special$$inlined$stateObserver$1.onNext(Line:2)
at com.izettle.android.commons.state.StateImpl$b.a(Line:1)
at com.izettle.android.commons.state.StateImpl$b.invoke(Line:1)
at com.izettle.android.commons.thread.a.run(Unknown Source:2)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.lang.ClassNotFoundException: lib.android.paypal.com.magnessdk.MagnesSDK
... 27 more

Refunds not appearing in izettle dashboard

Expected Behavior

The refunds appear in the izettle dashboard.

Current Behavior

The refund is successful but the transaction is not shown in the izettle dashboard.

Context

  • Operating Version: Android version 9
  • SDK version: 1.8.9

Working with gift cards

Expected Behavior

Working with gift cards

Current Behavior

What is the current behavior?
No documentation found for working with gift cards

Steps to Reproduce

No documentation found

Context

Custom Android and iOS app

  • Operating Version:
  • SDK version: Last

Failure Logs

No documentation found

Request support for Android targetSdkVersion 31 (release-1.25.0)

Expected Behavior

Manifest merger succeeds at compile time and a java.lang.SecurityException is not thrown at runtime (see below).

Current Behavior

What is the current behavior?

Manifest merger fails because Zettle services and receivers do not specify the android:exported attribute and an additional Bluetooth permission is needed at runtime:

java.lang.SecurityException: Need android.permission.BLUETOOTH_SCAN permission for android.content.AttributionSource@513489c3: GattService registerScanner
at android.os.Parcel.createExceptionOrNull(Parcel.java:2425)
at android.os.Parcel.createException(Parcel.java:2409)
at android.os.Parcel.readException(Parcel.java:2392)
at android.os.Parcel.readException(Parcel.java:2334)
at android.bluetooth.IBluetoothGatt$Stub$Proxy.registerScanner(IBluetoothGatt.java:1727)
at android.bluetooth.le.BluetoothLeScanner$BleScanCallbackWrapper.startRegistration(BluetoothLeScanner.java:426)
at android.bluetooth.le.BluetoothLeScanner.startScan(BluetoothLeScanner.java:278)
at android.bluetooth.le.BluetoothLeScanner.startScan(BluetoothLeScanner.java:154)
at com.izettle.payments.android.bluetooth.ble.PlatformScannerWrapperV21Impl.start(Line:6)
at com.izettle.payments.android.bluetooth.ble.BleScannerImpl.startScanner$zettle_payments_sdk(Line:1)
at com.izettle.payments.android.bluetooth.ble.BleScanner.onStartScan(Line:4)
at com.izettle.payments.android.bluetooth.ble.BleScanner.access$onStartScan(Line:1)
at com.izettle.payments.android.bluetooth.ble.BleScanner$$special$$inlined$stateObserver$1.onNext(Line:3)
at com.izettle.android.commons.state.StateImpl$$special$$inlined$forEach$lambda$1.invoke(Line:2)
at com.izettle.android.commons.state.StateImpl$$special$$inlined$forEach$lambda$1.invoke(Line:1)
at com.izettle.android.commons.thread.EventsLoopKt$sam$java_lang_Runnable$0.run(Unknown Source:2)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.os.HandlerThread.run(HandlerThread.java:67)

    <!-- Zettle services and receivers are not setting android:exported attribute -->
    <service
        android:name="com.izettle.android.auth.sync.ZettleSyncService"
        android:permission="android.permission.BIND_JOB_SERVICE" />

    <receiver
        android:name="com.izettle.android.auth.sync.ZettleSyncAlarmReceiver" />

    <service
        android:name="com.izettle.android.auth.ZettleAuthService"
        android:enabled="true" >
        <intent-filter>
            <action android:name="android.accounts.AccountAuthenticator" />
        </intent-filter>

        <meta-data
            android:name="android.accounts.AccountAuthenticator"
            android:resource="@xml/authenticator" />
    </service>

Steps to Reproduce

Build and run using targetSdkVersion 31

Context

targetSdkVersion 31 running on Android version 31

Failure Logs

See stack trace above

πŸ”’ GitHub Advanced Security has been enabled

GitHub Advanced Security has been enabled on this repository as part of our automatic phased rollout.

Secret Scanning

Secret Scanning is now active, which means that in the "Security" tab, you may now see identified secrets that needs to be handled.

Code Scanning

Code Scanning is not automatically activated - see documentation for how to enable it.

Read more about GitHub Advanced Security and the rollout in on the tech-guidelines wiki

πŸ”’ GitHub Advanced Security has been enabled

GitHub Advanced Security has been enabled on this repository as part of our automatic phased rollout.

Secret Scanning

Secret Scanning is now active, which means that in the "Security" tab, you may now see identified secrets that needs to be handled.

Code Scanning

Code Scanning is not automatically activated - see documentation for how to enable it.

Read more about GitHub Advanced Security and the rollout in on the tech-guidelines wiki

How can I get user info from a user that is already logged in without make a Payment first?

Expected Behavior

Open the app.
User login succesfully.
Close the app.

Reopen the app.
Attempt to get user info.
Get user info successfully.

Everything ok!

Current Behavior

I can only get user info after start activity for result with CardPaymentActivity.IntentBuilder intent.
The auth observer with the LoggedIn object its being triggered after this.

Open the app.
User login succesfully.
Close the app.

Open the app.

Attempt to get user info.
Failed because the user is not logged in.

Attempt to make a payment
Attempt to get user info.
Get user info successfully.

How can I get user info from a user that is already logged in?

Fatal Exception: java.lang.NoSuchMethodError

Expected Behavior

App should open after updating to latest version (1.34.3, Not working) from 1.14.15 (This was working previously)

Current Behavior

App is crashing with error on device android 10 tablet venturer vct9t48q34eu

Steps to Reproduce

I have updated library to latest version which is 1.34.3. And then run on Android 10 device. and it is crashing.

  • Operating Version: Android 10 tablet venturer vct9t48q34eu
  • SDK version: API 29

Failure Logs

Fatal Exception: java.lang.NoSuchMethodError
No virtual method setDefaultColorSchemeParams(Landroidx/browser/customtabs/CustomTabColorSchemeParams;)Landroidx/browser/customtabs/CustomTabsIntent$Builder; in class Landroidx/browser/customtabs/CustomTabsIntent$Builder; or its super classes (declaration of 'androidx.browser.customtabs.CustomTabsIntent$Builder' appears in /data/app/com.pospal.pospal-LAhTdDFU-3qKcdpYHVk3ew==/base.apk)

Fatal Exception: java.lang.NoSuchMethodError: No virtual method setDefaultColorSchemeParams(Landroidx/browser/customtabs/CustomTabColorSchemeParams;)Landroidx/browser/customtabs/CustomTabsIntent$Builder; in class Landroidx/browser/customtabs/CustomTabsIntent$Builder; or its super classes (declaration of 'androidx.browser.customtabs.CustomTabsIntent$Builder' appears in /data/app/com.pospal.pospal-LAhTdDFU-3qKcdpYHVk3ew==/base.apk)
at com.izettle.android.auth.AuthWebLauncherImpl.launchCustomTab$auth_release(SourceFile:8)
at com.izettle.android.auth.AuthWebLauncherImpl.launchInBrowser(SourceFile:2)
at com.izettle.android.auth.OAuthActivity.onResume(SourceFile:10)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1453)
at android.app.Activity.performResume(Activity.java:7939)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4223)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4265)
at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52)
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:2041)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7386)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:980)

DatecsReaderV1 line 2 com.izettle.payments.android.readers.vendors.datecs.DatecsReaderV1.mutate$zettle_payments_sdk

Expected Behavior

This issue is intermittent, it happen after zettle return to our application on "onActivityResult"
then crash the app.

Current Behavior

What is the current behavior?

unknown

  • Operating Version: Android 7.0
  • SDK version: 1.25.0

## Failure Logs

Fatal Exception: com.izettle.payments.android.readers.vendors.datecs.DatecsReaderV1$UnexpectedActionForState
Action FailInstallment[fa29fcd5-8bcd-4712-b5de-7b899ab01ff0] is not supported in state Ready
com.izettle.payments.android.readers.vendors.datecs.DatecsReaderV1.mutate$zettle_payments_sdk (SourceFile:2)
com.izettle.payments.android.readers.vendors.datecs.DatecsReaderV1.reduce (SourceFile:338)
com.izettle.payments.android.readers.vendors.datecs.DatecsReaderV1.reduce$zettle_payments_sdk (SourceFile:30)
com.izettle.payments.android.readers.vendors.datecs.DatecsReaderV1$action$1.invoke (SourceFile:2)
com.izettle.payments.android.readers.vendors.datecs.DatecsReaderV1$action$1.invoke (SourceFile:1)
com.izettle.android.commons.state.StateImpl.update (SourceFile:7)
com.izettle.payments.android.readers.vendors.datecs.DatecsReaderV1.mutate$zettle_payments_sdk (SourceFile:1)
com.izettle.payments.android.readers.vendors.datecs.DatecsReaderV1.mutate$zettle_payments_sdk (SourceFile:28)
com.izettle.payments.android.payment.InstallmentManagerImpl$ReaderStateObserver$onWaitingForInstallment$1.invoke (SourceFile:2)
com.izettle.payments.android.payment.InstallmentManagerImpl$ReaderStateObserver$onWaitingForInstallment$1.invoke (SourceFile:1)
com.izettle.android.commons.thread.EventsLoopKt$sam$java_lang_Runnable$0.run (SourceFile)
android.os.Handler.handleCallback (Handler.java:836)

android.os.HandlerThread.run (HandlerThread.java:61)

With Cordova plugin android

Expected Behavior

fix these two issues.

Current Behavior

I wrote a custom cordova plugin with android , I found two issues.
First when charge process with enable login , on the login page, I can click login button multiple times, that will caused the page to repeat.
Second issue is in charge process with enable login, after I login successfully, back to OAuthActivity, the login page continue to show some time , about 1 - 8 seconds, this cause user could click login in button again. But if user ignore this , this page will disappear and go to next step after wait. To this callback OAuthActivity, I expect add a loading display or hide the login button , for it's in process.

Steps to Reproduce

Write a cordova plugin use sample java sdk, install and run.

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.