当一些用户尝试在生产中添加付款方式时,我的 React Native 应用程序崩溃。这仅在 Android 上发生。我无法在调试中重现它。我在 Sentry 中收到了这个神秘的错误报告,经过一些谷歌搜索后,我不知道这个错误意味着什么:
No ChallengeStatusReceiver for transaction id
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)
我正在使用 tipsi-stripe,我很确定在调用 stripe.confirmSetupIntent()
时会发生此错误。如果用户的银行需要,此方法会提出身份验证“挑战”。
我现在使用的流程是:
const createPaymentMethodParams = {
"billingDetails":{
"name":"First Last"
},
"card":{
"cvc":"333",
"expMonth":12,
"expYear":23,
"number":"4111111111111111"
}
}
调用后端,使用 confirmation_method=manual
创建设置意图。这将返回一个 client_secret
使用 createPaymentMethod
“创建”付款方式,返回付款方式 ID。
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,
})
我在 Google 上找到的最相关的结果是这个 https://adyen.github.io/adyen-3ds2-android/com/adyen/threeds2/ChallengeStatusReceiver.html 它指的是 3DS sdk(如“3-D Secure”),当用户需要进行身份验证时,在此阶段查看它是有意义的。但是我真的不确定我是否走在正确的轨道上......
有没有人遇到过这个问题并且可以帮助我理解它,或者给我指明一个方向?非常感谢任何帮助!