Android 事务id没有ChallengeStatusReceiver
当一些用户试图在生产中添加付款方式时,我的React原生应用程序崩溃。这只发生在Android上。我无法在调试中复制它。我在Sentry收到了一份神秘的错误报告,在谷歌搜索之后,我不知道这个错误意味着什么: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
没有事务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
有没有人遇到过这个问题,可以帮助我理解它,或者为我指明方向?非常感谢您的帮助 您是否可以共享使用
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,
})