triniwiz / nativescript-plugins

Apache License 2.0
80 stars 50 forks source link

[nativescript-stripe][android] Calling presentPaymentMethods results in app crash #119

Closed msn444 closed 1 year ago

msn444 commented 2 years ago

In Standard Integration, presentPaymentMethods() results in the app crashing. Rolled back to @triniwiz/nativescript-stripe 7.0.1 and no issue.

Tested with @triniwiz/nativescript-stripe 8.0.2, @nativescript/android 8.1.1, Android SDK 30, 31 & 32. No issue on iOS.

An uncaught Exception occurred on "main" thread.
Calling js method onSingleTapUp failed
Error: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.stripe.android.model.PaymentMethod$Type.writeToParcel(android.os.Parcel, int)' on a null object reference

StackTrace:
presentPaymentMethods(file:///data/data/com.redacted.redacted/files/app/vendor.js:57234:21)
    at onTapPmtMethod(file:///data/data/com.redacted.redacted/files/app/bundle.js:15776:27)
    at invokeWithErrorHandling(file:///data/data/com.redacted.redacted/files/app/vendor.js:141596:26)
    at invoker(file:///data/data/com.redacted.redacted/files/app/vendor.js:142253:14)
    at _executeCallback(file:///data/data/com.redacted.redacted/files/app/vendor.js:34248:27)
    at TapAndDoubleTapGestureListenerImpl._handleSingleTap(file:///data/data/com.redacted.redacted/files/app/vendor.js:33991:17)
    at TapAndDoubleTapGestureListenerImpl.onSingleTapUp(file:///data/data/com.redacted.redacted/files/app/vendor.js:33960:14)
    at androidOnTouchEvent(file:///data/data/com.redacted.redacted/files/app/vendor.js:34182:41)
    at (file:///data/data/com.redacted.redacted/files/app/vendor.js:27597:25)
    at handleGestureTouch(file:///data/data/com.redacted.redacted/files/app/vendor.js:27596:18)
    at TouchListenerImpl.onTouch(file:///data/data/com.redacted.redacted/files/app/vendor.js:27319:15)
    at com.tns.Runtime.callJSMethodNative(Native Method)
    at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1302)
    at com.tns.Runtime.callJSMethodImpl(Runtime.java:1188)
    at com.tns.Runtime.callJSMethod(Runtime.java:1175)
    at com.tns.Runtime.callJSMethod(Runtime.java:1153)
    at com.tns.Runtime.callJSMethod(Runtime.java:1149)
    at com.tns.gen.android.view.GestureDetector_SimpleOnGestureListener_vendor_33952_28_TapAndDoubleTapGestureListenerImpl.onSingleTapUp(GestureDetector_SimpleOnGestureListener_vendor_33952_28_TapAndDoubleTapGestureListenerImpl.java:21)
    at android.view.GestureDetector.onTouchEvent(GestureDetector.java:758)
    at androidx.core.view.GestureDetectorCompat$GestureDetectorCompatImplJellybeanMr2.onTouchEvent(GestureDetectorCompat.java:480)
    at androidx.core.view.GestureDetectorCompat.onTouchEvent(GestureDetectorCompat.java:543)
    at com.tns.Runtime.callJSMethodNative(Native Method)
    at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1302)
    at com.tns.Runtime.callJSMethodImpl(Runtime.java:1188)
    at com.tns.Runtime.callJSMethod(Runtime.java:1175)
    at com.tns.Runtime.callJSMethod(Runtime.java:1153)
    at com.tns.Runtime.callJSMethod(Runtime.java:1149)
    at com.tns.gen.java.lang.Object_vendor_27310_28_TouchListenerImpl.onTouch(Object_vendor_27310_28_TouchListenerImpl.java:19)
    at android.view.View.dispatchTouchEvent(View.java:14305)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799)
    at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:488)
    at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1871)
    at android.app.Activity.dispatchTouchEvent(Activity.java:4125)
    at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
    at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:446)
    at android.view.View.dispatchPointerEvent(View.java:14568)
    at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:6016)
    at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5819)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5310)
    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5367)
    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5333)
    at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5485)
    at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5341)
    at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5542)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5314)
    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5367)
    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5333)
    at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5341)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5314)
    at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:8080)
    at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:8031)
    at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7992)
    at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:8203)
    at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:220)
    at android.os.MessageQueue.nativePollOnce(Native Method)
    at android.os.MessageQueue.next(MessageQueue.java:335)
    at android.os.Looper.loop(Looper.java:183)
    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.NullPointerException: Attempt to invoke virtual method 'void com.stripe.android.model.PaymentMethod$Type.writeToParcel(android.os.Parcel, int)' on a null object reference
    at com.stripe.android.view.PaymentMethodsActivityStarter$Args.writeToParcel(Unknown Source:50)
    at android.os.Parcel.writeParcelable(Parcel.java:1904)
    at android.os.Parcel.writeValue(Parcel.java:1810)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:975)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1620)
    at android.os.Bundle.writeToParcel(Bundle.java:1303)
    at android.os.Parcel.writeBundle(Parcel.java:1044)
    at android.content.Intent.writeToParcel(Intent.java:10855)
    at android.app.IActivityTaskManager$Stub$Proxy.startActivity(IActivityTaskManager.java:3668)
    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1723)
    at android.app.Activity.startActivityForResult(Activity.java:5314)
    at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:647)
    at android.app.Activity.startActivityForResult(Activity.java:5272)
    at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:628)
    at com.stripe.android.view.ActivityStarter.startForResult(ActivityStarter.kt:63)
    at com.stripe.android.PaymentSession.presentPaymentMethodSelection(PaymentSession.kt:241)
    ... 77 more
triniwiz commented 1 year ago

Can you try 9.0.0-alpha.0 version of stripe along with 8.4.0-alpha.0 of the android runtime

msn444 commented 1 year ago

This no longer occurs as of 9.0.0-beta.1