集成Stripe Google Pay按钮遇SecurityException问题求助
排查Stripe Google Pay按钮的SecurityException错误
这个SecurityException是Google Pay身份验证失败触发的——Google Pay会校验你的应用包名和签名SHA-256的组合是否在授权列表里,当前你的com.example.packagename+对应SHA-256密钥未被允许,所以抛出了这个错误。
错误原因
- 应用包名和签名SHA-256没在Stripe Dashboard的Google Pay允许列表里配置
- 调试/发布用的签名密钥没在Stripe或Google Pay Console中注册
- 包名拼写错误,或者SHA-256密钥复制时出现大小写、空格等格式问题
解决方法
1. 确认应用的包名和SHA-256密钥
- 包名:打开Android项目的
AndroidManifest.xml,查看package属性值,确保和错误提示里的com.example.packagename一致(或者是你实际使用的包名) - SHA-256密钥:
- 调试密钥:在终端执行命令获取:
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android - 发布密钥:用你打包应用的签名密钥文件,执行类似
keytool命令获取对应SHA-256
- 调试密钥:在终端执行命令获取:
2. 在Stripe Dashboard配置授权信息
- 登录Stripe后台,进入支付方式 -> Google Pay设置页面
- 添加你的应用包名,以及对应的调试/发布SHA-256密钥(测试调试环境就加调试密钥,上线前加发布密钥)
- 确保配置的环境(测试/生产)和你当前运行的应用环境匹配
3. 验证Google Pay Console配置(可选)
如果你的集成直接依赖Google Pay API,需要在Google Pay Console中注册应用,添加包名和SHA-256,同时确保Stripe使用的商户ID和Console里的一致
4. 清理重建项目
- 执行
flutter clean(Flutter项目),再运行flutter pub get - 卸载设备上的旧应用,重新安装,确保应用使用的是最新的签名和包名配置
代码侧检查
确保你的stripeMakeGooglePayment方法里,Google Pay的配置参数和Stripe后台一致,比如:
Future<void> stripeMakeGooglePayment(BuildContext context) async { try { const googlePayConfig = GooglePayPaymentMethodConfig( merchantId: '你的商户ID', environment: GooglePayEnvironment.test, // 测试环境用test,生产切换为production ); // 后续支付逻辑... } catch (e) { // 错误处理 } }
内容的提问来源于stack exchange,提问作者Samee Hassan
相关产品推荐
相关产品推荐

