Flutter中pay:^1.1.0包的Google Pay真机不显示问题排查与测试
Flutter Google Pay 真机不显示问题解决方案
问题概述
使用pay: ^1.1.0包在Flutter应用中集成Google Pay国际支付,调试模式下模拟器能正常显示“使用Google支付”按钮,但真机中无法显示。用户身处尼泊尔(当地不支持Google Pay),尝试通过VPN切换地区未解决问题。
相关代码片段
String os = Platform.operatingSystem; const Center( child: Text( "or Pay with ", style: TextStyle( fontSize: CgFontSize.headerThree, color: CgColor.ghostWhite, ), )), Center( child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Platform.isIOS ? ApplePayButton( paymentConfiguration: PaymentConfiguration.fromJsonString( defaultApplePay), paymentItems: _paymentItems, style: ApplePayButtonStyle.black, type: ApplePayButtonType.buy, margin: const EdgeInsets.only(top: 15.0), onPaymentResult: ((result) { debugPrint("Payment Result $result"); log(result.toString()); BaseRequest().applePay( packageId: "", amount: "", paymentMethod: "", token: "", ); }), loadingIndicator: const Center( child: LoadingProgressIndicator(), ), ) : GooglePayButton( paymentConfiguration: PaymentConfiguration.fromJsonString( defaultGooglePay), paymentItems: _paymentItems, type: GooglePayButtonType.pay, margin: const EdgeInsets.only(top: 15.0), onPaymentResult: ((result) { debugPrint("Payment Result $result"); log(result.toString()); BaseRequest().goglePay( packageId: "", amount: "", paymentMethod: "", token: "", productId: ""); }), loadingIndicator: const Center( child: LoadingProgressIndicator(), ), ), ], ), ),
核心原因
- 多维度地区校验:Google Pay的支持判定不仅看网络位置,还会校验Google账号注册地区、设备系统区域设置、SIM卡归属地。仅VPN无法修改这些本地配置,因此仍会被判定为不支持地区。
- 真机与模拟器环境差异:模拟器为测试优化,不会严格校验地区支持性;真机的Google Pay服务会读取设备真实配置,不符合条件则隐藏按钮。
- pay包自动隐藏逻辑:
GooglePayButton组件内置环境检测,当不符合Google Pay支持条件时会自动隐藏按钮。
有效测试方法
- 修改设备系统配置:将设备系统区域设置为Google Pay支持地区(如美国、英国),语言切换为对应地区语言,重启设备生效。
- 更换支持地区的Google账号:登录注册地区为支持区域的Google账号,并完成Google Pay服务绑定。
- 移除本地SIM卡:取出尼泊尔归属的SIM卡,避免被检测到地区信息;条件允许可使用支持地区的虚拟SIM。
- 启用测试环境:在
defaultGooglePay配置中添加"environment": "TEST",强制进入测试模式,绕过地区校验:{ "apiVersion": 2, "apiVersionMinor": 0, "allowedPaymentMethods": [ { "type": "CARD", "parameters": { "allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"], "allowedCardNetworks": ["AMEX", "DISCOVER", "MASTERCARD", "VISA"] }, "tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gateway": "your-gateway", "gatewayMerchantId": "your-merchant-id" } } } ], "merchantInfo": { "merchantId": "your-test-merchant-id", "merchantName": "Test Merchant" }, "environment": "TEST" }
Google Pay测试卡获取
官方提供的测试卡号,仅用于测试环境,无真实交易:
- Visa:
4111 1111 1111 1111,有效期填未来日期(如12/30),CVV123 - Mastercard:
5555 5555 5555 4444,有效期12/30,CVV123 - Amex:
3782 8224 6310 005,有效期12/30,CVV1234
内容的提问来源于stack exchange,提问作者kushal
相关产品推荐
相关产品推荐

