Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 尝试添加错误的卡时,条带崩溃_Android_Kotlin_Stripe Payments_Onactivityresult_Onerror - Fatal编程技术网

Android 尝试添加错误的卡时,条带崩溃

Android 尝试添加错误的卡时,条带崩溃,android,kotlin,stripe-payments,onactivityresult,onerror,Android,Kotlin,Stripe Payments,Onactivityresult,Onerror,我对Android上的条带API有问题。我正在尝试添加一张卡,到目前为止,如果你成功制作了一张卡,一切都会很好。如果您添加了一张卡(这意味着失败),它将导致整个应用程序崩溃 我已经按照指示做了这件事。但我不能,一旦它发生了就抓住它 private fun createCardContent() { try{ creditcardViewModel.requestStatusLiveData.postValue(NetworkState.LOADING)

我对Android上的条带API有问题。我正在尝试添加一张卡,到目前为止,如果你成功制作了一张卡,一切都会很好。如果您添加了一张卡(这意味着失败),它将导致整个应用程序崩溃

我已经按照指示做了这件事。但我不能,一旦它发生了就抓住它

private fun createCardContent() {
        try{
            creditcardViewModel.requestStatusLiveData.postValue(NetworkState.LOADING)
            val cardMy = com.stripe.android.model.Card.create(
                cardModel.cardNumber,
                cardModel.expMonth,
                cardModel.expYear,
                cardModel.cCV
            )
            if(cardMy.validateCard()){
                val owner = cardModel.cardOwner
                val billingDetails = PaymentMethod.BillingDetails(null, null, owner, null) 
                creditcardViewModel.stripeSetupIntent.value?.let {
                    val paymentMethodParams = PaymentMethodCreateParams.create(cardMy.toPaymentMethodParamsCard(),billingDetails,null)
                    val confirmParams = ConfirmSetupIntentParams.create(paymentMethodParams, it.client_secret)
                    try {
                     stripe.confirmSetupIntent(this, confirmParams)
                     // it gets till here, and then crashes
                    }catch(api: APIException){
                        showDialogError(getString(R.string.card_error_general))
                    }
                }
            }else{
                creditcardViewModel.requestStatusLiveData.postValue(NetworkState.SUCCESSFUL)
                showDialogError(getString(R.string.card_error_general))
            }
        }catch(e:IOException){
            showDialogError(getString(R.string.card_error_general))
        }
    }
我应该得到
onError
catch(在这个函数中,但没有)


新版本解决了这个问题(它使用了最新的
14.1.1
) 如果有人对graddle和编译有异议。我还更新了最新版本的所有依赖项。 我想可能是的

com.google.gms:google-services:4.3.2
这不允许我编译新版本。
切换到新的com.google.gms:googleservices:4.3.3(可能)解决了这个问题。

这是一个奇怪的行为。您是否尝试过将整个
onActivityResult
代码放入try catch并检查异常行为?根据logcat,我想异常是从Strip SDK中开始的。“但应该有一种机制来防止这种异常。”阿蒂沙格劳尔刚刚尝试过。同样的问题。
2020-03-12 13:09:13.096 11288-11406/com.example.testableE/AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-6
Process: com.example.testableE, PID: 11288
java.lang.RuntimeException: Request-id: req_Qdd21qBCr0ds33199v
com.stripe.android.exception.APIException: Your card has insufficient funds.
    at android.os.Parcel.writeException(Parcel.java:1779)
    at com.stripe.android.PaymentController$Result.writeToParcel(Unknown Source:24)
    at android.os.Parcel.writeParcelable(Parcel.java:1683)
    at android.os.Parcel.writeValue(Parcel.java:1589)
    at android.os.Parcel.writeArrayMapInternal(Parcel.java:875)
    at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1579)
    at android.os.Bundle.writeToParcel(Bundle.java:1233)
    at android.os.Parcel.writeBundle(Parcel.java:915)
    at android.content.Intent.writeToParcel(Intent.java:9973)
    at android.app.IActivityManager$Stub$Proxy.startActivity(IActivityManager.java:3730)
    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1671)
    at android.app.Activity.startActivityForResult(Activity.java:4586)
    at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676)
    at androidx.core.app.ActivityCompat.startActivityForResult(ActivityCompat.java:234)
    at androidx.fragment.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:796)
    at androidx.fragment.app.FragmentActivity$HostCallbacks.onStartActivityFromFragment(FragmentActivity.java:933)
    at androidx.fragment.app.Fragment.startActivityForResult(Fragment.java:1206)
    at androidx.fragment.app.Fragment.startActivityForResult(Fragment.java:1194)
    at com.stripe.android.view.AuthActivityStarter$Host.startActivityForResult$stripe_release(AuthActivityStarter.kt:30)
    at com.stripe.android.PaymentRelayStarter$Companion$create$1.start(PaymentRelayStarter.kt:28)
    at com.stripe.android.PaymentRelayStarter$Companion$create$1.start(PaymentRelayStarter.kt:21)
    at com.stripe.android.StripePaymentController$Companion.handleError(StripePaymentController.kt:899)
    at com.stripe.android.StripePaymentController$Companion.access$handleError(StripePaymentController.kt:838)
    at com.stripe.android.StripePaymentController$ConfirmStripeIntentCallback.onError(StripePaymentController.kt:542)
    at com.stripe.android.ApiOperation.dispatchResult(ApiOperation.kt:40)
    at com.stripe.android.ApiOperation.access$dispatchResult(ApiOperation.kt:13)
    at com.stripe.android.ApiOperation$execute$1$1.invokeSuspend(ApiOperation.kt:32)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6746)
    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)
com.google.gms:google-services:4.3.2