stripe-terminal-android
stripe-terminal-android copied to clipboard
Tap to Pay- Crash at initTerminal when used along with Retrofit
I am having below dependencies in my gradle for android
implementation 'com.squareup.retrofit2:retrofit:2.11.0' implementation 'com.squareup.retrofit2:converter-gson:2.11.0'
implementation "com.stripe:stripeterminal:3.4.0" implementation "com.stripe:stripeterminal-localmobile:3.5.0" implementation "com.stripe:stripeterminal-core:3.5.0"
When I call Terminal.initTerminal(mainActivity, logLevel, tokenProvider!!, this)
It crashes with below log shown at the end of the post
Code to reproduce call initTerminal.
Installation method Android - SDK using gradle
SDK version implementation "com.stripe:stripeterminal:3.4.0" implementation "com.stripe:stripeterminal-localmobile:3.5.0" implementation "com.stripe:stripeterminal-core:3.5.0"
Other information Logs FATAL EXCEPTION: main Process: com.madinaapps.madinaappskiosk, PID: 8336 java.lang.ExceptionInInitializerError at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:536) at java.lang.Class.forName(Class.java:467) at com.stripe.stripeterminal.dagger.CotsModule.isCotsAdapterIncluded(CotsModule.kt:94) at com.stripe.stripeterminal.dagger.CotsModule_IsCotsAdapterIncludedFactory.isCotsAdapterIncluded(CotsModule_IsCotsAdapterIncludedFactory.java:40) at com.stripe.stripeterminal.dagger.CotsModule_IsCotsAdapterIncludedFactory.get(CotsModule_IsCotsAdapterIncludedFactory.java:32) at com.stripe.stripeterminal.dagger.CotsModule_IsCotsAdapterIncludedFactory.get(CotsModule_IsCotsAdapterIncludedFactory.java:9) at dagger.internal.DoubleCheck.get(DoubleCheck.java:47) at com.stripe.stripeterminal.HttpModule_ProvideOkHttpClientFactory.get(HttpModule_ProvideOkHttpClientFactory.java:39) at com.stripe.stripeterminal.HttpModule_ProvideOkHttpClientFactory.get(HttpModule_ProvideOkHttpClientFactory.java:12) at dagger.internal.DoubleCheck.get(DoubleCheck.java:47) at com.stripe.stripeterminal.dagger.MainlandModule_Companion_ProvideRestClientFactory.get(MainlandModule_Companion_ProvideRestClientFactory.java:69) at com.stripe.stripeterminal.dagger.MainlandModule_Companion_ProvideRestClientFactory.get(MainlandModule_Companion_ProvideRestClientFactory.java:18) at com.stripe.core.transaction.dagger.CoreTransactionModule_ProvideAuthenticatedRestClientFactory.get(CoreTransactionModule_ProvideAuthenticatedRestClientFactory.java:53) at com.stripe.core.transaction.dagger.CoreTransactionModule_ProvideAuthenticatedRestClientFactory.get(CoreTransactionModule_ProvideAuthenticatedRestClientFactory.java:15) at dagger.internal.DoubleCheck.get(DoubleCheck.java:47) at com.stripe.stripeterminal.internal.common.api.ApiClient_Factory.get(ApiClient_Factory.java:43) at com.stripe.stripeterminal.internal.common.api.ApiClient_Factory.get(ApiClient_Factory.java:12) at dagger.internal.DoubleCheck.get(DoubleCheck.java:47) at com.stripe.stripeterminal.DaggerTerminalComponent$TerminalComponentImpl.getCotsAdapter(DaggerTerminalComponent.java:2021) at com.stripe.stripeterminal.Terminal$Companion.initTerminal(Terminal.kt:977) at com.stripe.stripeterminal.Terminal$Companion.initTerminal(Terminal.kt:907) at com.madinaapps.kiosk.screens.StripePaymentFragment.initStripe(StripePaymentFragment.kt:601) at com.madinaapps.kiosk.screens.StripePaymentFragment.access$initStripe(StripePaymentFragment.kt:89) at com.madinaapps.kiosk.screens.StripePaymentFragment$getDonationPriceDetails$1.invoke(StripePaymentFragment.kt:451) at com.madinaapps.kiosk.screens.StripePaymentFragment$getDonationPriceDetails$1.invoke(StripePaymentFragment.kt:416) at com.madinaapps.kiosk.services.ServiceUtil$getPriceDetails$1.onResponse(ServiceUtil.kt:344) at retrofit2.DefaultCallAdapterFactory$ExecutorCallbackCall$1.lambda$onResponse$0$retrofit2-DefaultCallAdapterFactory$ExecutorCallbackCall$1(DefaultCallAdapterFactory.java:89) at retrofit2.DefaultCallAdapterFactory$ExecutorCallbackCall$1$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0) at android.os.Handler.handleCallback(Handler.java:959) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loopOnce(Looper.java:232) at android.os.Looper.loop(Looper.java:317) at android.app.ActivityThread.main(ActivityThread.java:8501) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:878) Caused by: java.lang.RuntimeException: java.lang.SecurityException: Invalid signature file digest for Manifest main attributes at com.s.c.As.(:275) at com.stripe.cots.aidlservice.CotsService.(Unknown Source:68) at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:536) at java.lang.Class.forName(Class.java:467) at com.stripe.stripeterminal.dagger.CotsModule.isCotsAdapterIncluded(CotsModule.kt:94) at com.stripe.stripeterminal.dagger.CotsModule_IsCotsAdapterIncludedFactory.isCotsAdapterIncluded(CotsModule_IsCotsAdapterIncludedFactory.java:40) at com.stripe.stripeterminal.dagger.CotsModule_IsCotsAdapterIncludedFactory.get(CotsModule_IsCotsAdapterIncludedFactory.java:32) at com.stripe.stripeterminal.dagger.CotsModule_IsCotsAdapterIncludedFactory.get(CotsModule_IsCotsAdapterIncludedFactory.java:9) at dagger.internal.DoubleCheck.get(DoubleCheck.java:47) at com.stripe.stripeterminal.HttpModule_ProvideOkHttpClientFactory.get(HttpModule_ProvideOkHttpClientFactory.java:39) at com.stripe.stripeterminal.HttpModule_ProvideOkHttpClientFactory.get(HttpModule_ProvideOkHttpClientFactory.java:12) at dagger.internal.DoubleCheck.get(DoubleCheck.java:47) at com.stripe.stripeterminal.dagger.MainlandModule_Companion_ProvideRestClientFactory.get(MainlandModule_Companion_ProvideRestClientFactory.java:69) at com.stripe.stripeterminal.dagger.MainlandModule_Companion_ProvideRestClientFactory.get(MainlandModule_Companion_ProvideRestClientFactory.java:18) at com.stripe.core.transaction.dagger.CoreTransactionModule_ProvideAuthenticatedRestClientFactory.get(CoreTransactionModule_ProvideAuthenticatedRestClientFactory.java:53) at com.stripe.core.transaction.dagger.CoreTransactionModule_ProvideAuthenticatedRestClientFactory.get(CoreTransactionModule_ProvideAuthenticatedRestClientFactory.java:15) at dagger.internal.DoubleCheck.get(DoubleCheck.java:47) at com.stripe.stripeterminal.internal.common.api.ApiClient_Factory.get(ApiClient_Factory.java:43) at com.stripe.stripeterminal.internal.common.api.ApiClient_Factory.get(ApiClient_Factory.java:12) at dagger.internal.DoubleCheck.get(DoubleCheck.java:47) at com.stripe.stripeterminal.DaggerTerminalComponent$TerminalComponentImpl.getCotsAdapter(DaggerTerminalComponent.java:2021) at com.stripe.stripeterminal.Terminal$Companion.initTerminal(Terminal.kt:977) at com.stripe.stripeterminal.Terminal$Companion.initTerminal(Terminal.kt:907) at com.madinaapps.kiosk.screens.StripePaymentFragment.initStripe(StripePaymentFragment.kt:601) at com.madinaapps.kiosk.screens.StripePaymentFragment.access$initStripe(StripePaymentFragment.kt:89) at com.madinaapps.kiosk.screens.StripePaymentFragment$getDonationPriceDetails$1.invoke(StripePaymentFragment.kt:451) at com.madinaapps.kiosk.screens.StripePaymentFragment$getDonationPriceDetails$1.invoke(StripePaymentFragment.kt:416) at com.madinaapps.kiosk.services.ServiceUtil$getPriceDetails$1.onResponse(ServiceUtil.kt:344) at retrofit2.DefaultCallAdapterFactory$ExecutorCallbackCall$1.lambda$onResponse$0$retrofit2-DefaultCallAdapterFactory$ExecutorCallbackCall$1(DefaultCallAdapterFactory.java:89) at retrofit2.DefaultCallAdapterFactory$ExecutorCallbackCall$1$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0) at android.os.Handler.handleCallback(Handler.java:959) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loopOnce(Looper.java:232) at android.os.Looper.loop(Looper.java:317) at android.app.ActivityThread.main(ActivityThread.java:8501) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:878) Caused by: java.lang.SecurityException: Invalid signature file digest for Manifest main attributes at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:314) at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:268) at java.util.jar.JarVerifier.processEntry(JarVerifier.java:321) at java.util.jar.JarVerifier.update(JarVerifier.java:233) at java.util.jar.JarFile.initializeVerifier(JarFile.java:407) at java.util.jar.JarFile.getInputStream(JarFile.java:474) at libcore.io.ClassPathURLStreamHandler$ClassPathURLConnection.getInputStream(ClassPathURLStreamHandler.java:168) at java.net.URL.openStream(URL.java:1072) at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:989) at java.lang.Class.getResourceAsStream(Class.java:3115) at com.s.c.As.(:2410) ... 38 more
Any update on this issue?
Hi @MrVipinVijayan, looking at your comment it looks like your dependencies are a bit misconfigured:
implementation "com.stripe:stripeterminal:3.4.0"
implementation "com.stripe:stripeterminal-localmobile:3.5.0"
implementation "com.stripe:stripeterminal-core:3.5.0"
The instructions in our README indicate you only need the stripeterminal-localmobile
and stripeterminal-core
dependencies. The first one is at the very least largely redundant, and is also likely causing the exception you're seeing because the version (3.4.0
) does not match the version of your other dependencies (3.5.0
).
Can you remove the implementation "com.stripe:stripeterminal:3.4.0"
line from your application and let me know if that fixes this issue for you?
@chr-stripe I used the 3.5.0 for all dependencies. no change. also I will need stripe.android because I require PaymentConfiguration from stripe.android dependency.
I dont see the import for PaymentConfiguration from other libraries.
@chr-stripe
Keeping these 3 wont fix it too implementation 'com.stripe:stripe-android:20.41.0' implementation "com.stripe:stripeterminal-localmobile:3.5.0" implementation "com.stripe:stripeterminal-core:3.5.0"
Any fix for this problem? I am blocked for more than a week now.
Same issue on my app, I downgraded from 3.5.0 to 3.4.0 to temporarily solve.
@AlanMTuring Thanks for the support.
however this didnot fix the problem.
Such a terrible support from the STRIPE TEAM. no proper solution yet.
Hi folks,
Sorry that we've been unable to reproduce this issue so far using some of the dependencies mentioned in this thread. If you're able to create and share a zip file in this thread that contains a minimal reproducible project that exhibits this issue, that would greatly help us try to figure out exactly what's going on here and how to address it.
Found the fix myself using packaging options. thankyou.
Thank you @MrVipinVijayan! If your fix could be helpful to others in this thread, I'd recommend posting your solution using packaging options in this thread for future reference. I'll close this ticket out but feel free to comment again if there's something actionable here for Stripe.
Hi @MrVipinVijayan @chr-stripe , what's your solution? I'm still facing this issue at init. Always get java.lang.SecurityException: Invalid signature file digest for Manifest main attributes