Android 事务id没有ChallengeStatusReceiver

Android 事务id没有ChallengeStatusReceiver,android,react-native,stripe-payments,3d-secure,Android,React Native,Stripe Payments,3d Secure,当一些用户试图在生产中添加付款方式时,我的React原生应用程序崩溃。这只发生在Android上。我无法在调试中复制它。我在Sentry收到了一份神秘的错误报告,在谷歌搜索之后,我不知道这个错误意味着什么: 没有事务id的ChallengeStatusReceiver d.q.a.g1.i.d: No ChallengeStatusReceiver for transaction id at d.q.a.g1.l.s.a at d.q.a.g1.l.q.c at d.q

当一些用户试图在生产中添加付款方式时,我的React原生应用程序崩溃。这只发生在Android上。我无法在调试中复制它。我在Sentry收到了一份神秘的错误报告,在谷歌搜索之后,我不知道这个错误意味着什么:

没有事务id的ChallengeStatusReceiver

d.q.a.g1.i.d: No ChallengeStatusReceiver for transaction id 
    at d.q.a.g1.l.s.a
    at d.q.a.g1.l.q.c
    at d.q.a.g1.l.q.b
    at d.q.a.g1.l.y$a.onPostExecute
    at android.os.AsyncTask.finish(AsyncTask.java:755)
    at android.os.AsyncTask.access$900(AsyncTask.java:192)
    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:772)
    at android.os.Handler.dispatchMessage(Handler.java:107)
    at android.os.Looper.loop(Looper.java:237)
    at android.app.ActivityThread.main(ActivityThread.java:8167)
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
我正在使用,并且我非常确定调用
stripe.confirmSetupIntent()
时会发生此错误。如果用户的银行需要,此方法将提出身份验证“挑战”

我现在使用的流程是:

  • 用户输入付款详细信息:
  • 调用后端,通过
    confirmation\u method=manual
    创建设置意图。这将返回一个
    client\u secret

  • 使用
    createPaymentMethod
    “创建”付款方法,该方法返回付款方法id

  • 最后,确认设置意图(这是一个有时会崩溃的步骤):
  • 我在谷歌上找到的最相关的结果是 它指的是一个3DS sdk(如“3-D安全”),在需要用户进行身份验证时,可以在此阶段查看该sdk。但是我真的不确定我是否走上了正确的道路


    有没有人遇到过这个问题,可以帮助我理解它,或者为我指明方向?非常感谢您的帮助

    您是否可以共享使用
    confirmSetupIntent
    所遵循的集成模式?你确定你所做的事得到了
    tipsi stripe
    的支持吗?@NolanH谢谢你的回复。我添加了关于流程的更多细节。是的,我确信tipsi条带支持SCA/3DSecure流。我在生产中为绝大多数用户提供了这项服务。
    const createPaymentMethodParams = {
      "billingDetails":{
        "name":"First Last"
      },
      "card":{
        "cvc":"333",
        "expMonth":12,
        "expYear":23,
        "number":"4111111111111111"
      }
    }
    
    const paymentMethodData = await
        stripe.createPaymentMethod(createPaymentMethodParams)
    
    // confirm the setup intent:
    // - if authentication is required user will be redirected to auth flow
    // - if no authentication is required this directly returns paymentMethodId
    const { status, paymentMethodId } = await stripe.confirmSetupIntent({
      clientSecret: intent.client_secret, // previously obtained from backend
      paymentMethodId: paymentMethodData.id,
    })