flutter中,google支付没有商品信息、无法调起google订阅面板

本文分享了在Flutter中使用flutter_inapp_purchase插件实现支付功能的经验,详细介绍了如何解决因SDK版本升级导致无法调起Google订阅面板的问题,并提供了多语言环境下价格显示的解决方案。

如题,直接先说解决方案:

flutter支付插件我用的是 flutter_inapp_purchase: ^2.1.2 (其实^2.1.0版本也是可以的)

把flutter的sdk版本降到1.14.6,啥都别说!这个版本是可以调起google订阅面板的,再往上的v1.12.13+hotfix.8这个版本是怎么也调不起google订阅面板,其他的版本我没有逐个去尝试,只知道这两个版本肯定是一个ok另一个不行。

说句心里话,flutter真的是各种坑,目前还在以几天一更的速度频繁更新。所以flutter sdk不要轻易升级。因为我们在同时开发4个app,之前我开发的2个app支付功能使用的好好的(用的是1.14.6)代码也是同一套,后来手残升级了升到了最新的v1.12.13+hotfix.8,死活都掉不起来订阅面板。查了几天的文档和资料,对了几天的代码。。。这个时候我只能。。。了。

另外,说点关于google支付的总结:

关于支付的详细步骤就不说了,我后面项目做完了会总结下,目前项目太多(4个,后面据说还有很多个。。。),直接说碰到的问题:

1.flutter的支付插件用的flutter_inapp_purchase,这个在运行的时候是会报异常的,但是不影响具体的支付使用,可以自己处理下,也可以不管它;

2.google play的账号首先你要登录,登录之后进入面板 游戏--付费,一般付费里面有东西则表示你已经有了google服务(当然前提是你用的是非国内手机,国内手机一般都不支持google 服务,坑,例如,三星,google等,都是自带google服务的,另外如果你没有外网环境,必须要有vpn的支持,这个vpn就不说了,大家都知道。),注意,如果付费菜单中啥也不显示,那就尴尬了,你app想支付的话,连商品信息都拿不到,注意,商品信息都拿不到。所以前提是你必须要在google play中登录google账号(还要注意登录google play之后要退出google play杀进程再进入google play,要不然他不生效啊。我这个是在开发过程中频繁切换账号吐血总结出来的。要杀进程,退出,再进,看相关的信息显示的是不是你这个账号的东西。其实这里想说的是google play自己都有bug,也有可能是google play的账号有设备绑定机制,不让你同时一个账号在多台设备上生效。。。切几个账号多切几次没反应),保证环境ok(vpn加持),保证账号ok(加入你开发的app的测试账号之列,随便一个google账号是不能拿到商品信息的,规矩真的多。。。),如果上面确保ok,再进入app,进入购买,拿到商品信息列表,选择具体的项目支付,是可以看到底部有google订阅面板的。。。(这里再多说一点,如果多语言的话,可以直接用它返回的localized.price字段,这个字段跟面板中的价格字段的货币符号一样,google自己已经帮你转换好了,不用我们自己额外添加货币符号了,这个很赞!good)。之后就可以愉快的支付了。

<think>嗯,用户正在寻Flutter集成谷歌支付SDK的相关信息。结合提供的四个站内引用,特别是引用[2]和[3]直接涉及谷歌支付集成的问题。 用户可能是一名Flutter开发者,正在为应用添加支付功能。考虑到商业应用的严谨性,用户最关心的应该是实现方案的可靠性、安全性和官方性。引用[2]提到需要后端验证交易收据,引用[3]则提供了插件名称和基础配置流程,这些都是关键信息。 注意到用户特别强调"SDK相关信息",说明需要区分官方方案和第三方方案。引用[3]提到的flutter_apple_pay插件虽然名称包含Apple Pay,但Google Pay部分同样值得参考。而引用[2]的源码示例尤其重要,它包含实际验证过的实现。 需要重点提取以下信息:1) 官方推荐方案(如google_pay_button);2) 原生层配置要求(如Google Play结算库版本);3) 安全实践(收据后端验证)。用户很可能遇到测试环境配置问题,引用[2]特别指出包名需要修改的注意事项,这个细节必须包含。 考虑到支付集成的复杂性,准备在回复中分层呈现:先介绍官方SDK集成路径,再补充第三方方案,最后强调安全措施。用户后续可能追问测试细节或特定错误处理,所以相关问题要覆盖这些方向。 </think>以下是基于Flutter集成谷歌支付Google Pay)的完整指南,结合引用信息和官方最佳实践整理: --- ### **Flutter集成Google Pay的核心步骤** #### **1. 原生层配置** - **Android配置**: ```gradle // android/app/build.gradle dependencies { implementation "com.google.android.gms:play-services-wallet:19.3.0" // 需≥19.0+版本 } ``` - 在Google Play Console中完成**商户注册**并绑定应用包名(如`com.example.app`)[^2]。 - 配置`AndroidManifest.xml`添加支付权限: ```xml <uses-permission android:name="com.google.android.gms.permission.AD_ID"/> ``` #### **2. Flutter插件选择** - **官方推荐方案**: 使用[google_pay_button](https://pub.dev/packages/google_pay_button)插件(Google官方维护): ```yaml dependencies: google_pay_button: ^2.1.0 ``` - **第三方方案**(引用[2][3]示例): ```yaml dependencies: flutter_google_pay: ^3.0.1 # 需验证兼容性 ``` #### **3. Flutter支付调用示例** ```dart import 'package:google_pay_button/google_pay_button.dart'; void launchGooglePay() { final paymentConfig = PaymentConfiguration( environment: PaymentEnvironment.test, // 生产环境用 .production countryCode: 'US', currencyCode: 'USD', merchantName: 'Your Company', gateway: 'example_gateway', // 替换为支付网关ID ); GooglePayButton( paymentConfiguration: paymentConfig, onPaymentResult: (result) { if (result.status == PaymentStatus.success) { final token = result.paymentData?['token']; // 获取交易令牌 _verifyPayment(token); // 向后端验证收据[^2] } }, child: Text('Pay with Google Pay'), ); } // 关键:必须将收据送后端验证防欺诈[^2] void _verifyPayment(String token) async { await http.post(Uri.parse('YOUR_BACKEND_URL'), body: {'token': token}); } ``` #### **4. 安全最佳实践** 1. **收据验证**:所有交易必须通过后端服务器验证Google Play返回的`transactionId`和`purchaseToken`[^2]。 2. **环境隔离**:测试环境使用`PaymentEnvironment.test`,上线前切换为`.production`。 3. **混淆配置**(Android): ```proguard -keep class com.google.android.gms.** { *; } ``` #### **5. 常见问题解决** - **支付失败**: - 包名未在Google Play Console注册 → 检查包名一致性[^2]。 - 未绑定测试信用卡 → 在Google Sandbox添加测试账号。 - **回调异常**: - 确保`MainActivity`继承`FlutterFragmentActivity`。 --- ### **引用资源** 1. [Google Pay Flutter插件文档](https://developers.google.com/pay/api/android/guides/resources-and-best-practices) 2. [实战源码参考(含后端验证)](https://github.com/TheRuningAnt/FGTALogin) [^2] 3. [Google Play结算库集成指南](https://developer.android.com/google/play/billing/integrate) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值