Android原生集成Google Pay(Stripe)遇ResolvableApiException:6错误求助
Android集成Stripe原生Google Pay时ResolvableApiException:6错误解决办法
错误com.google.android.gms.common.api.ResolvableApiException: 6: BuyFlow UI needs to be shown的核心原因是:Google Pay要求唤起支付选择界面,但代码未正确处理该异常的解析流程。以下是具体解决步骤:
1. 正确捕获并处理ResolvableApiException
调用Google Pay的loadPaymentData方法后,必须处理该异常以唤起支付UI。示例代码如下(以Kotlin + ActivityResultContracts为例):
// 注册支付结果回调 val paymentResultLauncher = registerForActivityResult(ActivityResultContracts.StartIntentSenderForResult()) { result -> if (result.resultCode == Activity.RESULT_OK) { result.data?.let { intent -> val paymentData = PaymentData.getFromIntent(intent) // 将paymentData传递给Stripe完成后续支付流程 } } } // 发起支付请求时的异常处理 val paymentsClient = PaymentsClientFactory.create(this) val paymentDataRequest = PaymentDataRequest.fromJson(yourJsonString) paymentsClient.loadPaymentData(paymentDataRequest).addOnCompleteListener { task -> if (task.isSuccessful) { // 直接获取到支付数据的场景(少见) val paymentData = task.result // 处理数据 } else { val exception = task.exception if (exception is ResolvableApiException) { // 唤起Google Pay支付选择UI val intentSenderRequest = IntentSenderRequest.Builder(exception.resolution.intentSender).build() paymentResultLauncher.launch(intentSenderRequest) } else { // 处理其他异常(如不支持Google Pay、参数错误等) } } }
2. 校验PaymentDataRequest参数
- 更新Stripe API版本:你的参数中
stripe:version为2018-10-31,建议替换为较新的稳定版本(如2023-10-16),避免版本兼容性问题。 - 确认密钥有效性:确保
stripe:publishableKey是测试环境的有效公钥,而非生产环境密钥。 - 参数格式检查:
transactionInfo中的totalPrice(如"10.00")、currencyCode(如"USD")需符合Google Pay的格式要求。
3. 测试环境配置验证
- 测试设备需添加Google Pay测试卡(例如卡号
4242 4242 4242 4242,有效期设为未来任意日期,CVV填任意3位数字)。 - 确保设备上的Google Play服务为最新版本,避免因版本过低导致UI唤起失败。
内容的提问来源于stack exchange,提问作者Maitri
相关产品推荐
相关产品推荐

