capacitor-stripe-terminal icon indicating copy to clipboard operation
capacitor-stripe-terminal copied to clipboard

Unable to retrieve the payment intent via the BBPOS Chipper 2X BT reader with an Android after generating and deploying either an Android App Bundle or an APK

Open kyleabens opened this issue 4 years ago • 20 comments

Describe the bug I am unable to retrieve the payment intent via the BBPOS Chipper 2X BT reader with an Android after generating and deploying either an Android App Bundle or an APK. It works fine when I plugin my Android to Android Studio and deploy it with the "Run app" button. Because of this it makes it extremely difficult to test. It is able to discover and connect to the reader but not able to retrieve the payment intent... const paymentIntent: any = await this.stripeTerminalPlugin.retrievePaymentIntent(clientSecret);.
It just simply stays on a solid blue light.

To Reproduce

  1. Deploy an existing capacitor app with the capacitor-stripe-terminal plugin to internal testing on Google play store
  2. Discover and connect to the reader with an Android
  3. Attempt to retrieve payment intent with clientSecret

Expected behavior It should work just like it does on iOS as well as with Android Studio via the "Run app" button.

Smartphone (please complete the following information):

  • Device: Google Pixel 2
  • OS: Android v11

Additional context Is there any way for me to log any possible errors via Android Studio without running the app locally and instead from the app that's downloaded via the Google play store since that's where my issue is?

WORKAROUND (edit by @nprail)

This plugin does not seem to work correctly when minifyEnabled is true. For now, set it to false in your build.gradle

android {
    buildTypes {
        release {
            minifyEnabled false
            ...
        }
    }
}

kyleabens avatar Dec 03 '20 13:12 kyleabens

Hmm, without debug mode enabled, it is rather difficult to determine what the error is... Do you use anything like Sentry for error logging? I'll try to reproduce the issue with Sentry enabled but if you already have something like that setup, that'd be even better :)

nprail avatar Dec 03 '20 13:12 nprail

I do not unfortunately. Is there no other way to log data from an app downloaded via the Google Play Store?

kyleabens avatar Dec 03 '20 13:12 kyleabens

Not that I am aware of. I just tested with my app and it seems to work.

Does retrievePaymentIntent throw an error or does it just never resolve? Or does it resolve with no data?

nprail avatar Dec 03 '20 14:12 nprail

It doesn't throw an error in my try catch, it just never resolves. Even if I then cancel the payment it just spins and nothing ever happens. It never moves from a solid blue light to the 2 color blinking light indicating that it's ready for a payment method to be provided.

With that said both this.stripeTerminalPlugin.retrievePaymentIntent(clientSecret) and this.stripeTerminalPlugin.abortCollectPaymentMethod() aren't working when deployed to the Google Play Store.

kyleabens avatar Dec 03 '20 14:12 kyleabens

Because I'm not getting any error with either of these promises I'm going to assume it has something to do with the plugin which I'm unfortunately not able to log.

kyleabens avatar Dec 03 '20 14:12 kyleabens

Yeah, I agree. That's very odd that they work in debug mode but not release. Just to be sure, can you verify that clientSecret has a value? I would think an error would be thrown if it didn't, but want to rule that out.

nprail avatar Dec 03 '20 14:12 nprail

Yea, since I can't see anything in the console I'll try to place some different alerts along the way so I can confirm where it gets hung up.

kyleabens avatar Dec 03 '20 14:12 kyleabens

Here is something else you can do as well:

Open node_modules/capacitor-stripe-terminal/android/src/main/java/io/event1/capacitorstripeterminal/StripeTerminal.java and replace the entire retrievePaymentIntent method (lines 351-383) with the following:

  @PluginMethod
  public void retrievePaymentIntent(final PluginCall call) {
    String clientSecret = call.getString("clientSecret");

    JSObject log1 = new JSObject();
    log1.put("value", "retrievePaymentIntent");
    notifyListeners("logger", log1);

    if (clientSecret != null) {
      Terminal
        .getInstance()
        .retrievePaymentIntent(
          clientSecret,
          new PaymentIntentCallback() {

            @Override
            public void onSuccess(@Nonnull PaymentIntent paymentIntent) {
              JSObject log2 = new JSObject();
              log2.put("value", "onSuccess");
              notifyListeners("logger", log2);

              currentPaymentIntent = paymentIntent;
              JSObject ret = new JSObject();
              ret.put(
                "intent",
                TerminalUtils.serializePaymentIntent(paymentIntent, "")
              );
              call.resolve(ret);
            }

            @Override
            public void onFailure(@Nonnull TerminalException e) {
              JSObject log3 = new JSObject();
              log3.put("value", "onFailure");
              notifyListeners("logger", log3);

              currentPaymentIntent = null;
              call.error(e.getErrorMessage(), e);
            }
          }
        );
    } else {
      JSObject log4 = new JSObject();
      log4.put("value", "clientSecret null");
      notifyListeners("logger", log4);
      call.reject("Client secret cannot be null");
    }
  }

Then add this somewhere in your JS before you fetch the payment intent.

Plugins.StripeTerminal.addListener('logger', (info: any) => {
  this.toastController
    .create({
      message: info.value
    })
    .then(toast => {
      toast.present()
    })
})

Also, make sure you add private toastController: ToastController to the constructor if you don't already have it.

Once you have run the app, let me know which logs show up as toasts.

nprail avatar Dec 03 '20 15:12 nprail

Okay thanks for that but just from my initial test I can confirm that it's getting hung up on retrievePaymentIntent(clientSecret)

kyleabens avatar Dec 03 '20 15:12 kyleabens

and there is indeed a clientSecret being passed to it

kyleabens avatar Dec 03 '20 15:12 kyleabens

Here is my build log when I generate an Android App Bundle for release incase this helps:

Starting Gradle Daemon...
Gradle Daemon started in 968 ms

> Configure project :app
WARNING: Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'.
It will be removed in version 5.0 of the Android Gradle plugin.
For more information, see http://d.android.com/r/tools/update-dependency-configurations.html.

> Configure project :capacitor-cordova-android-plugins
WARNING: Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'.
It will be removed in version 5.0 of the Android Gradle plugin.
For more information, see http://d.android.com/r/tools/update-dependency-configurations.html.

> Task :app:preBuild UP-TO-DATE
> Task :app:extractProguardFiles UP-TO-DATE
> Task :app:preReleaseBuild UP-TO-DATE
> Task :capacitor-android:preBuild UP-TO-DATE
> Task :capacitor-android:preReleaseBuild UP-TO-DATE
> Task :capacitor-android:packageReleaseRenderscript NO-SOURCE
> Task :capacitor-community-apple-sign-in:preBuild UP-TO-DATE
> Task :capacitor-community-apple-sign-in:preReleaseBuild UP-TO-DATE
> Task :capacitor-community-apple-sign-in:packageReleaseRenderscript NO-SOURCE
> Task :capacitor-community-fcm:preBuild UP-TO-DATE
> Task :capacitor-community-fcm:preReleaseBuild UP-TO-DATE
> Task :capacitor-community-fcm:packageReleaseRenderscript NO-SOURCE
> Task :capacitor-cordova-android-plugins:preBuild UP-TO-DATE
> Task :capacitor-cordova-android-plugins:preReleaseBuild UP-TO-DATE
> Task :capacitor-cordova-android-plugins:packageReleaseRenderscript NO-SOURCE
> Task :capacitor-stripe-terminal:preBuild UP-TO-DATE
> Task :capacitor-stripe-terminal:preReleaseBuild UP-TO-DATE
> Task :capacitor-stripe-terminal:packageReleaseRenderscript NO-SOURCE
> Task :codetrix-studio-capacitor-google-auth:preBuild UP-TO-DATE
> Task :codetrix-studio-capacitor-google-auth:preReleaseBuild UP-TO-DATE
> Task :codetrix-studio-capacitor-google-auth:packageReleaseRenderscript NO-SOURCE
> Task :app:compileReleaseRenderscript NO-SOURCE
> Task :app:generateReleaseResValues UP-TO-DATE
> Task :app:generateReleaseResources UP-TO-DATE
> Task :app:processReleaseGoogleServices UP-TO-DATE
> Task :capacitor-android:compileReleaseRenderscript NO-SOURCE
> Task :capacitor-android:generateReleaseResValues UP-TO-DATE
> Task :capacitor-android:generateReleaseResources UP-TO-DATE
> Task :capacitor-android:packageReleaseResources UP-TO-DATE
> Task :capacitor-community-apple-sign-in:compileReleaseRenderscript NO-SOURCE
> Task :capacitor-community-apple-sign-in:generateReleaseResValues UP-TO-DATE
> Task :capacitor-community-apple-sign-in:generateReleaseResources UP-TO-DATE
> Task :capacitor-community-apple-sign-in:packageReleaseResources UP-TO-DATE
> Task :capacitor-community-fcm:compileReleaseRenderscript NO-SOURCE
> Task :capacitor-community-fcm:generateReleaseResValues UP-TO-DATE
> Task :capacitor-community-fcm:generateReleaseResources UP-TO-DATE
> Task :capacitor-community-fcm:packageReleaseResources UP-TO-DATE
> Task :capacitor-cordova-android-plugins:compileReleaseRenderscript NO-SOURCE
> Task :capacitor-cordova-android-plugins:generateReleaseResValues UP-TO-DATE
> Task :capacitor-cordova-android-plugins:generateReleaseResources UP-TO-DATE
> Task :capacitor-cordova-android-plugins:packageReleaseResources UP-TO-DATE
> Task :capacitor-stripe-terminal:compileReleaseRenderscript NO-SOURCE
> Task :capacitor-stripe-terminal:generateReleaseResValues UP-TO-DATE
> Task :capacitor-stripe-terminal:generateReleaseResources UP-TO-DATE
> Task :capacitor-stripe-terminal:packageReleaseResources UP-TO-DATE
> Task :codetrix-studio-capacitor-google-auth:compileReleaseRenderscript NO-SOURCE
> Task :codetrix-studio-capacitor-google-auth:generateReleaseResValues UP-TO-DATE
> Task :codetrix-studio-capacitor-google-auth:generateReleaseResources UP-TO-DATE
> Task :codetrix-studio-capacitor-google-auth:packageReleaseResources UP-TO-DATE
> Task :app:mergeReleaseResources UP-TO-DATE
> Task :app:createReleaseCompatibleScreenManifests
> Task :app:extractDeepLinksRelease UP-TO-DATE
> Task :capacitor-android:extractDeepLinksRelease UP-TO-DATE
> Task :capacitor-android:processReleaseManifest UP-TO-DATE
> Task :capacitor-community-apple-sign-in:extractDeepLinksRelease UP-TO-DATE
> Task :capacitor-community-apple-sign-in:processReleaseManifest UP-TO-DATE
> Task :capacitor-community-fcm:extractDeepLinksRelease UP-TO-DATE
> Task :capacitor-community-fcm:processReleaseManifest UP-TO-DATE
> Task :capacitor-cordova-android-plugins:extractDeepLinksRelease UP-TO-DATE
> Task :capacitor-cordova-android-plugins:processReleaseManifest UP-TO-DATE
> Task :capacitor-stripe-terminal:extractDeepLinksRelease UP-TO-DATE
> Task :capacitor-stripe-terminal:processReleaseManifest UP-TO-DATE
> Task :codetrix-studio-capacitor-google-auth:extractDeepLinksRelease UP-TO-DATE
> Task :codetrix-studio-capacitor-google-auth:processReleaseManifest UP-TO-DATE
> Task :app:processReleaseManifest
> Task :app:processApplicationManifestReleaseForBundle
> Task :capacitor-android:compileReleaseLibraryResources UP-TO-DATE
> Task :capacitor-community-apple-sign-in:compileReleaseLibraryResources UP-TO-DATE
> Task :capacitor-community-fcm:compileReleaseLibraryResources UP-TO-DATE
> Task :capacitor-cordova-android-plugins:compileReleaseLibraryResources UP-TO-DATE
> Task :capacitor-stripe-terminal:compileReleaseLibraryResources UP-TO-DATE
> Task :codetrix-studio-capacitor-google-auth:compileReleaseLibraryResources UP-TO-DATE
> Task :app:mergeReleaseShaders UP-TO-DATE
> Task :app:compileReleaseShaders NO-SOURCE
> Task :app:generateReleaseAssets UP-TO-DATE
> Task :capacitor-android:mergeReleaseShaders UP-TO-DATE
> Task :capacitor-android:compileReleaseShaders NO-SOURCE
> Task :capacitor-android:generateReleaseAssets UP-TO-DATE
> Task :capacitor-android:packageReleaseAssets UP-TO-DATE
> Task :capacitor-community-apple-sign-in:mergeReleaseShaders UP-TO-DATE
> Task :capacitor-community-apple-sign-in:compileReleaseShaders NO-SOURCE
> Task :capacitor-community-apple-sign-in:generateReleaseAssets UP-TO-DATE
> Task :capacitor-community-apple-sign-in:packageReleaseAssets UP-TO-DATE
> Task :capacitor-community-fcm:mergeReleaseShaders UP-TO-DATE
> Task :capacitor-community-fcm:compileReleaseShaders NO-SOURCE
> Task :capacitor-community-fcm:generateReleaseAssets UP-TO-DATE
> Task :capacitor-community-fcm:packageReleaseAssets UP-TO-DATE
> Task :capacitor-cordova-android-plugins:mergeReleaseShaders UP-TO-DATE
> Task :capacitor-cordova-android-plugins:compileReleaseShaders NO-SOURCE
> Task :capacitor-cordova-android-plugins:generateReleaseAssets UP-TO-DATE
> Task :capacitor-cordova-android-plugins:packageReleaseAssets UP-TO-DATE
> Task :capacitor-stripe-terminal:mergeReleaseShaders UP-TO-DATE
> Task :capacitor-stripe-terminal:compileReleaseShaders NO-SOURCE
> Task :capacitor-stripe-terminal:generateReleaseAssets UP-TO-DATE
> Task :capacitor-stripe-terminal:packageReleaseAssets UP-TO-DATE
> Task :codetrix-studio-capacitor-google-auth:mergeReleaseShaders UP-TO-DATE
> Task :codetrix-studio-capacitor-google-auth:compileReleaseShaders NO-SOURCE
> Task :codetrix-studio-capacitor-google-auth:generateReleaseAssets UP-TO-DATE
> Task :codetrix-studio-capacitor-google-auth:packageReleaseAssets UP-TO-DATE
> Task :app:mergeReleaseAssets
> Task :capacitor-android:compileReleaseAidl NO-SOURCE
> Task :capacitor-android:generateReleaseBuildConfig UP-TO-DATE
> Task :capacitor-android:parseReleaseLocalResources UP-TO-DATE
> Task :capacitor-android:generateReleaseRFile UP-TO-DATE
> Task :capacitor-android:javaPreCompileRelease UP-TO-DATE
> Task :capacitor-android:compileReleaseJavaWithJavac UP-TO-DATE
> Task :capacitor-android:bundleLibCompileToJarRelease UP-TO-DATE
> Task :capacitor-community-apple-sign-in:compileReleaseAidl NO-SOURCE
> Task :capacitor-community-apple-sign-in:generateReleaseBuildConfig UP-TO-DATE
> Task :capacitor-community-apple-sign-in:parseReleaseLocalResources UP-TO-DATE
> Task :capacitor-community-apple-sign-in:generateReleaseRFile UP-TO-DATE
> Task :capacitor-community-apple-sign-in:javaPreCompileRelease UP-TO-DATE
> Task :capacitor-community-apple-sign-in:compileReleaseJavaWithJavac UP-TO-DATE
> Task :capacitor-community-apple-sign-in:mergeReleaseGeneratedProguardFiles UP-TO-DATE
> Task :capacitor-community-apple-sign-in:exportReleaseConsumerProguardFiles UP-TO-DATE
> Task :capacitor-community-fcm:compileReleaseAidl NO-SOURCE
> Task :capacitor-community-fcm:generateReleaseBuildConfig UP-TO-DATE
> Task :capacitor-community-fcm:parseReleaseLocalResources UP-TO-DATE
> Task :capacitor-community-fcm:generateReleaseRFile UP-TO-DATE
> Task :capacitor-community-fcm:javaPreCompileRelease UP-TO-DATE
> Task :capacitor-community-fcm:compileReleaseJavaWithJavac UP-TO-DATE
> Task :capacitor-community-fcm:mergeReleaseGeneratedProguardFiles UP-TO-DATE
> Task :capacitor-community-fcm:exportReleaseConsumerProguardFiles UP-TO-DATE
> Task :codetrix-studio-capacitor-google-auth:compileReleaseAidl NO-SOURCE
> Task :codetrix-studio-capacitor-google-auth:generateReleaseBuildConfig UP-TO-DATE
> Task :codetrix-studio-capacitor-google-auth:parseReleaseLocalResources UP-TO-DATE
> Task :codetrix-studio-capacitor-google-auth:generateReleaseRFile UP-TO-DATE
> Task :codetrix-studio-capacitor-google-auth:javaPreCompileRelease UP-TO-DATE
> Task :codetrix-studio-capacitor-google-auth:compileReleaseJavaWithJavac UP-TO-DATE
> Task :codetrix-studio-capacitor-google-auth:mergeReleaseGeneratedProguardFiles UP-TO-DATE
> Task :codetrix-studio-capacitor-google-auth:exportReleaseConsumerProguardFiles UP-TO-DATE
> Task :capacitor-stripe-terminal:compileReleaseAidl NO-SOURCE
> Task :capacitor-stripe-terminal:generateReleaseBuildConfig UP-TO-DATE
> Task :capacitor-stripe-terminal:parseReleaseLocalResources UP-TO-DATE
> Task :capacitor-stripe-terminal:generateReleaseRFile UP-TO-DATE
> Task :capacitor-stripe-terminal:javaPreCompileRelease UP-TO-DATE
> Task :capacitor-stripe-terminal:compileReleaseJavaWithJavac
> Task :capacitor-stripe-terminal:mergeReleaseGeneratedProguardFiles UP-TO-DATE
> Task :app:bundleReleaseResources
> Task :capacitor-stripe-terminal:exportReleaseConsumerProguardFiles UP-TO-DATE
> Task :capacitor-android:mergeReleaseGeneratedProguardFiles UP-TO-DATE
> Task :capacitor-android:exportReleaseConsumerProguardFiles UP-TO-DATE
> Task :capacitor-cordova-android-plugins:compileReleaseAidl NO-SOURCE
> Task :capacitor-cordova-android-plugins:generateReleaseBuildConfig UP-TO-DATE
> Task :capacitor-cordova-android-plugins:parseReleaseLocalResources UP-TO-DATE
> Task :capacitor-cordova-android-plugins:generateReleaseRFile UP-TO-DATE
> Task :capacitor-cordova-android-plugins:javaPreCompileRelease UP-TO-DATE
> Task :capacitor-cordova-android-plugins:compileReleaseJavaWithJavac UP-TO-DATE
> Task :capacitor-cordova-android-plugins:mergeReleaseGeneratedProguardFiles UP-TO-DATE
> Task :capacitor-cordova-android-plugins:exportReleaseConsumerProguardFiles UP-TO-DATE
> Task :app:checkReleaseDuplicateClasses UP-TO-DATE
> Task :app:compileReleaseAidl NO-SOURCE
> Task :app:generateReleaseBuildConfig
> Task :app:javaPreCompileRelease UP-TO-DATE
> Task :capacitor-android:writeReleaseAarMetadata UP-TO-DATE
> Task :capacitor-community-apple-sign-in:writeReleaseAarMetadata UP-TO-DATE
> Task :capacitor-community-fcm:writeReleaseAarMetadata UP-TO-DATE
> Task :capacitor-cordova-android-plugins:writeReleaseAarMetadata UP-TO-DATE
> Task :capacitor-stripe-terminal:writeReleaseAarMetadata UP-TO-DATE
> Task :codetrix-studio-capacitor-google-auth:writeReleaseAarMetadata UP-TO-DATE
> Task :app:checkReleaseAarMetadata UP-TO-DATE
> Task :capacitor-community-apple-sign-in:bundleLibCompileToJarRelease UP-TO-DATE
> Task :capacitor-community-fcm:bundleLibCompileToJarRelease UP-TO-DATE
> Task :capacitor-cordova-android-plugins:bundleLibCompileToJarRelease UP-TO-DATE
> Task :codetrix-studio-capacitor-google-auth:bundleLibCompileToJarRelease UP-TO-DATE
> Task :app:processReleaseJavaRes NO-SOURCE
> Task :capacitor-android:processReleaseJavaRes NO-SOURCE
> Task :capacitor-android:bundleLibResRelease NO-SOURCE
> Task :capacitor-community-apple-sign-in:processReleaseJavaRes NO-SOURCE
> Task :capacitor-community-apple-sign-in:bundleLibResRelease NO-SOURCE
> Task :capacitor-community-fcm:processReleaseJavaRes NO-SOURCE
> Task :capacitor-community-fcm:bundleLibResRelease NO-SOURCE
> Task :capacitor-cordova-android-plugins:processReleaseJavaRes NO-SOURCE
> Task :capacitor-cordova-android-plugins:bundleLibResRelease NO-SOURCE
> Task :capacitor-stripe-terminal:processReleaseJavaRes NO-SOURCE
> Task :capacitor-stripe-terminal:bundleLibResRelease NO-SOURCE
> Task :codetrix-studio-capacitor-google-auth:processReleaseJavaRes NO-SOURCE
> Task :codetrix-studio-capacitor-google-auth:bundleLibResRelease NO-SOURCE
> Task :app:mergeReleaseJavaResource UP-TO-DATE
> Task :capacitor-android:bundleLibRuntimeToJarRelease UP-TO-DATE
> Task :capacitor-community-apple-sign-in:bundleLibRuntimeToJarRelease UP-TO-DATE
> Task :capacitor-community-fcm:bundleLibRuntimeToJarRelease UP-TO-DATE
> Task :capacitor-cordova-android-plugins:bundleLibRuntimeToJarRelease UP-TO-DATE
> Task :codetrix-studio-capacitor-google-auth:bundleLibRuntimeToJarRelease UP-TO-DATE
> Task :app:mergeReleaseJniLibFolders UP-TO-DATE
> Task :capacitor-android:mergeReleaseJniLibFolders UP-TO-DATE
> Task :capacitor-android:mergeReleaseNativeLibs NO-SOURCE
> Task :capacitor-android:stripReleaseDebugSymbols NO-SOURCE
> Task :capacitor-android:copyReleaseJniLibsProjectOnly UP-TO-DATE
> Task :capacitor-community-apple-sign-in:mergeReleaseJniLibFolders UP-TO-DATE
> Task :capacitor-community-apple-sign-in:mergeReleaseNativeLibs NO-SOURCE
> Task :capacitor-community-apple-sign-in:stripReleaseDebugSymbols NO-SOURCE
> Task :capacitor-community-apple-sign-in:copyReleaseJniLibsProjectOnly UP-TO-DATE
> Task :capacitor-community-fcm:mergeReleaseJniLibFolders UP-TO-DATE
> Task :capacitor-community-fcm:mergeReleaseNativeLibs NO-SOURCE
> Task :capacitor-community-fcm:stripReleaseDebugSymbols NO-SOURCE
> Task :capacitor-community-fcm:copyReleaseJniLibsProjectOnly UP-TO-DATE
> Task :capacitor-cordova-android-plugins:mergeReleaseJniLibFolders UP-TO-DATE
> Task :capacitor-cordova-android-plugins:mergeReleaseNativeLibs NO-SOURCE
> Task :capacitor-cordova-android-plugins:stripReleaseDebugSymbols NO-SOURCE
> Task :capacitor-cordova-android-plugins:copyReleaseJniLibsProjectOnly UP-TO-DATE
> Task :capacitor-stripe-terminal:mergeReleaseJniLibFolders UP-TO-DATE
> Task :capacitor-stripe-terminal:mergeReleaseNativeLibs NO-SOURCE
> Task :capacitor-stripe-terminal:stripReleaseDebugSymbols NO-SOURCE
> Task :capacitor-stripe-terminal:copyReleaseJniLibsProjectOnly UP-TO-DATE
> Task :codetrix-studio-capacitor-google-auth:mergeReleaseJniLibFolders UP-TO-DATE
> Task :codetrix-studio-capacitor-google-auth:mergeReleaseNativeLibs NO-SOURCE
> Task :codetrix-studio-capacitor-google-auth:stripReleaseDebugSymbols NO-SOURCE
> Task :codetrix-studio-capacitor-google-auth:copyReleaseJniLibsProjectOnly UP-TO-DATE
> Task :app:mergeReleaseNativeLibs UP-TO-DATE
> Task :app:processReleaseManifestForPackage
> Task :app:processReleaseResources
> Task :app:stripReleaseDebugSymbols NO-SOURCE
> Task :capacitor-stripe-terminal:bundleLibCompileToJarRelease
> Task :app:compileReleaseJavaWithJavac
> Task :capacitor-stripe-terminal:bundleLibRuntimeToJarRelease
> Task :app:mergeReleaseGeneratedProguardFiles UP-TO-DATE

> Task :app:minifyReleaseWithR8
AGPBI: {"kind":"warning","text":"Missing class: org.conscrypt.ConscryptHostnameVerifier","sources":[{}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Missing class: org.junit.rules.ExternalResource","sources":[{}],"tool":"R8"}
AGPBI: {"kind":"warning","text":"Missing class: java.lang.ClassValue","sources":[{}],"tool":"R8"}

> Task :app:buildReleasePreBundle
> Task :app:collectReleaseDependencies UP-TO-DATE
> Task :app:configureReleaseDependencies UP-TO-DATE
> Task :app:parseReleaseIntegrityConfig UP-TO-DATE
> Task :app:validateSigningRelease UP-TO-DATE
> Task :app:packageReleaseBundle
> Task :app:signReleaseBundle
> Task :app:bundleRelease

BUILD SUCCESSFUL in 1m 5s
145 actionable tasks: 17 executed, 128 up-to-date

kyleabens avatar Dec 03 '20 15:12 kyleabens

I also added your code and it got to "retrievePaymentIntent" when displayed as a toast

kyleabens avatar Dec 03 '20 15:12 kyleabens

Hmm, interesting.

@chander-stripe, do you have any idea why retrievePaymentIntent would not hit any of the callbacks in a release build when it does in a debug build? You can see the implementation here.

nprail avatar Dec 03 '20 16:12 nprail

@nprail just to let you know it's still an issue with v1.0.0-beta.9

kyleabens avatar Dec 04 '20 18:12 kyleabens

Yeah, beta.9 only addressed #37. Still not sure what's going on here...

nprail avatar Dec 04 '20 19:12 nprail

Yea I know I just wanted to double check. I think the plugin works fine and it's an issue when creating a release build and minifying things. Just not sure where in the process it's causing an issue.

kyleabens avatar Dec 05 '20 03:12 kyleabens

@nprail @chander-stripe any update on this? I have a handful of users that are looking for an answer.

kyleabens avatar Dec 07 '20 12:12 kyleabens

@kyleabens Unfortunately no. Can you share the published apk and all the details needed to reproduce the issue?

If you want, you can send those details to [email protected] rather than posting them here.

nprail avatar Dec 08 '20 02:12 nprail

@nprail I finally figured out the root cause of this. This plugin does not work with Android when minifyEnabled is set to true in build.gradle. Switching it to false did the trick. Obviously now the size of my app is slightly larger which isn't great but at least we know where the issue is now.

kyleabens avatar Dec 11 '20 14:12 kyleabens

@kyleabens Ah, interesting. That would explain it working in dev but not when deployed. I wonder if this is an issue with the plugin or with Stripe's SDK. I'll have to dig deeper now that I know how to reproduce it.

nprail avatar Dec 11 '20 14:12 nprail