问题描述
当一些用户尝试在生产中添加付款方式时,我的 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”),当用户需要进行身份验证时,在此阶段查看它是有意义的。但是我真的不确定我是否走在正确的轨道上......
有没有人遇到过这个问题并且可以帮助我理解它,或者给我指明一个方向?非常感谢任何帮助!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)