Как отловить ошибку исключения Stripe Invalidrequest в Android - PullRequest
1 голос
/ 29 января 2020

Я перехожу по этой ссылке для реализации полосы в Android. Когда я ввожу номер тестовой карты от посетителей или обнаруживаю, я получаю ошибку ниже.

E / AndroidRuntime: ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: DefaultDispatcher-worker-1 Процесс: com.platute.app, PID: 11990 java .lang.RuntimeException: Request-id: req_edpbJzvr4Zkk9V com.stripe. android .exception.InvalidRequestException: ваша карта не поддерживается. в android .os.Parcel.writeException (Parcel. java: 1590) в com.stripe. android .PaymentController $ Result.writeToParcel (PaymentController.kt) в android .os.Parcel.writeParcelable (Parcel . java: 1505) в android .os.Parcel.writeValue (Parcel. java: 1411) в android .os.Parcel.writeArrayMapInternal (Parcel. java: 733) в android. os.BaseBundle.writeToParcelInner (BaseBundle. java: 1408) в android .os.Bundle.writeToParcel (Bundle. java: 1133) в android .os.Parcel.writeBundle (Parcel. java: 773) в android .content.Intent.writeToParcel (Intent. java: 9247) в android .app.ActivityManagerProxy.startActivity (ActivityManagerNative. java: 3511) в android .app.Instrumentation.execStartActivity (Инструментарий. java: 1526) в android .app.Activity.startActivityForResult (Activity. java: 4399) в androidx.fragment.app.FragmentActivity.startActivityForResult (FragmentActivity. java: 676) в android .app.Activity.startActivityForResult (Activity. java: 4358) по адресу androidx.fragment.app.FragmentActivity.startActivityForResult (Fragment Activity. java: 663) на com.stripe. android .view.AuthActivityStarter $ Host.startActivityForResult $ stripe_release (AuthActivityStarter.kt: 33) на com.stripe. android .PaymentRelayStarter $ Companion $ создать $ 1.старт (PaymentRelayStarter.kt: 28) в com.stripe. android .PaymentRelayStarter $ Companion $ create $ 1.start (PaymentRelayStarter.kt: 21) в com.stripe. android .StripePaymentController $ Companion.handleError (StripePaymentController.kt: 899. . android .ApiOperation.dispatchResult (ApiOperation.kt: 40) в com.stripe. android .ApiOperation.access $ dispatchResult (ApiOperation.kt: 13) в com.stripe. android .ApiOperation $ execute $ 1 $ 1 .invokeSuspend (ApiOperation.kt: 32) в kotlin .coroutines.jvm.internal.BaseContinuationImpl.resumeWith (ContinuationImpl.kt: 33) в kotlinx.coroutines.DispatchedTask.run (Dis patchedTask.kt: 56) в android .os.Handler.handleCallback (обработчик. java: 751) в android .os.Handler.dispatchMessage (обработчик. java: 95) в android .os .Looper.l oop (Looper. java: 154) в android .app.ActivityThread.main (ActivityThread. java: 6682) в java .lang.reflect.Method.invoke (собственный метод ) в com. android .internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit. java: 1520) в com. android .internal.os.ZygoteInit.main (ZygoteInit. java: 1410) Вызвано by: Request-id: req_edpbJzvr4Zkk9V com.stripe. android .exception.InvalidRequestException: ваша карта не поддерживается. в com.stripe. android .StripeApiRepository.handleApiError (StripeApiRepository.kt: 875) в com.stripe. android .StripeApiRepository.makeApiRequest $ stripe_release (StripeApiRepository.kt: 919) в com.pipe. « ) в com.stripe. android .ApiOperation $ execute $ 1.invokeSuspend (ApiOperation.kt: 22) в kotlin .coroutines.jvm.internal.BaseContinuationImpl.resumeWith (ContinuationImpl.kt: 33) в kotlinx.coroutines.DispatchedTask.run (DispatchedTask.kt: 56) в kotlinx.coroutines.scheduling.CoroutineSchektduun.Suduler. 561 Worker.run (CoroutineScheduler.kt: 655)

Это код, который я использую

binding.payButton.setOnClickListener {

        val card = binding.cardInputWidget.paymentMethodCard
        val nameText = binding.nameInput.text.toString()

        binding.progressBar.visibility = View.VISIBLE

        if (nameText.isEmpty()) {
            Utilities.alertBoxSingleBtn(this, "Please enter the card holder name")
            binding.progressBar.visibility = View.GONE
            return@setOnClickListener
        }

        val billingDetails = PaymentMethod.BillingDetails.Builder()
                .setName(nameText)
                .build()
        if (card != null) { // Create SetupIntent confirm parameters with the above
            binding.payButton.isEnabled = false
            val paymentMethodParams = PaymentMethodCreateParams.create(card, billingDetails)
            val confirmParams = ConfirmSetupIntentParams.create(paymentMethodParams, clientSecretKey!!)
            stripe.confirmSetupIntent(this, confirmParams)

        } else {
            Utilities.alertBoxSingleBtn(this, "Invalid card details")
            binding.payButton.isEnabled = true
            binding.progressBar.visibility = View.GONE
        }
    }

Я экспериментировал с использованием try-catch вокруг всех операторов. Но ни одно из заявлений не ловит исключение. Пожалуйста, помогите с вопросом

...