Flutter支付集成插件google_wallet的使用
Flutter支付集成插件google_wallet的使用
开始之前
在开始之前,请遵循Google Wallet在Android上的设置指南。
使用方法
要开始使用这个插件,请将 google_wallet
作为依赖项添加到您的 pubspec.yaml
文件中:
flutter pub add google_wallet
示例代码
以下示例展示了如何检查Google Wallet API是否可用,并将通行证保存到用户的Google Wallet中:
import 'package:google_wallet/google_wallet.dart';
final googleWallet = GoogleWallet();
final String jwt = '...'; // 您自己的通行证JWT
example() async {
bool? available;
bool? saved = false;
String text;
// 检查Google Wallet是否可用
try {
available = await googleWallet.isAvailable();
text = "Google Wallet is available: ${available}";
} on PlatformException catch (e) {
text = "Error: '${e.message}'.";
}
// 将通行证保存到Google Wallet
try {
if (available == true) {
saved = await googleWallet.savePassesJwt(jwt);
text = "Pass saved: ${saved}";
} else {
// 钱包不可用,
// 通过网页保存通行证: "https://pay.google.com/gp/v/save/${jwt}"
text = "Opened Google Wallet via web";
}
} on PlatformException catch (e) {
text = "Error: '${e.message}'.";
}
}
该插件还提供了一个Google Wallet按钮小部件:
GoogleWalletButton(
style: GoogleWalletButtonStyle.condensed, // 或者 GoogleWalletButtonStyle.primary(默认)
height: 90, // 按钮高度
locale: Locale("language_code"), // 如果需要,显式设置语言环境
onPressed: someFunc, // 回调函数
)
完整的示例可以在 example
目录中找到。
完整示例Demo
/*
* Copyright 2024 Google LLC.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:google_wallet/google_wallet.dart';
import 'package:url_launcher/url_launcher.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Google Wallet Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'Google Wallet Flutter Demo'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final googleWallet = GoogleWallet();
final String jwt = 'eyJ0eXAiOiAiSldUIiwgImFsZyI6ICJSUzI1NiIsICJraWQiOiAiMjVmNjgzZDEwNzRhOTZkZmEwMGRiNDEwMjkwMzIwNTAyNzhiOTMwYiJ9.eyJpc3MiOiAiZGV2bW9kZXRlc3RAbXVzaWMtMjA1MjIyLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwgImF1ZCI6ICJnb29nbGUiLCAib3JpZ2lucyI6IFsid3d3LmV4YW1wbGUuY29tIl0sICJ0eXAiOiAic2F2ZXRvd2FsbGV0IiwgInBheWxvYWQiOiB7ImdlbmVyaWNPYmplY3RzIjogW3siaWQiOiAiMzM4ODAwMDAwMDAyMjE4NDQwMy50ZXN0MTIzNTY2NzNzcyJ9XX19.06qERcEP9l9dGQwbqueXWFF_UI50TX21x0PdmTyj--di2aNTFLsWB_yGOdS-nPT0X6_mn0nVmcrqnXkT0tcb7kye9jxwD-lVwjHYwn4R3Y7l7dWcQNcjeGPopeOoJmWiQF6uZoRmpmfr0q0kSS23QAPqbOiPpX4z_InARsG1p8XN1OQkCb9bx-YWu1bT-E5Be1UE5Si4NUOEZfyl4pis_HE2aKxtC7Rg-7VGNuSyyatJHZZ3bm_uU9QCG99rpRTHST4ggLW_npiPCBh6r7L3bR3PsKYejyn1zD6NQykQ3bHB9BSSNOtCDKI_8q121jjwc4KKz4dAonKxiYQhSYbrzg';
bool? _available = false;
String _text = 'Loading';
[@override](/user/override)
void initState() {
super.initState();
_checkAvailable();
}
_checkAvailable() async {
bool? available;
String text;
try {
available = await googleWallet.isAvailable();
text = "Google Wallet is available: ${available}";
} on PlatformException catch (e) {
text = "Error: '${e.message}'.";
}
setState(() {
_available = available;
_text = text;
});
}
_savePass() async {
bool? saved = false;
String text;
try {
if (this._available == true) {
saved = await googleWallet.savePassesJwt(jwt);
text = "Pass saved: ${saved}";
} else {
// 钱包不可用,
// 通过网页保存通行证
await _savePassBrowser();
text = "Opened Google Wallet via web";
}
} on PlatformException catch (e) {
text = "Error: '${e.message}'.";
}
setState(() {
_text = text;
});
}
_savePassBrowser() async {
String url = "https://pay.google.com/gp/v/save/${jwt}";
if (await canLaunchUrl(Uri.parse(url))) {
await launchUrl(Uri.parse(url));
} else {
throw 'Could not open Google Wallet via web';
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Material(
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
GoogleWalletButton(
style: GoogleWalletButtonStyle.condensed,
height: 90,
onPressed: _savePass,
// 如果需要,显式设置语言环境:
// locale: Locale("en_US"),
),
Text(_text),
],
),
),
);
}
}
更多关于Flutter支付集成插件google_wallet的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付集成插件google_wallet的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中集成Google Wallet支付插件,可以通过google_wallet
包来实现。以下是一个基本的代码示例,展示了如何在Flutter应用中集成和使用Google Wallet支付。
前提条件
- Flutter环境:确保你已经设置好Flutter开发环境。
- Google Cloud项目:创建一个Google Cloud项目,并启用Google Wallet API。
- 商户信息:配置你的商户信息,包括Google Pay商户ID和公钥证书。
步骤一:添加依赖
在你的pubspec.yaml
文件中添加google_wallet
依赖:
dependencies:
flutter:
sdk: flutter
google_wallet: ^最新版本号 # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
步骤二:配置Google Wallet
在集成Google Wallet之前,你需要在Google Cloud平台上配置你的项目,并获取必要的凭证(如Google Pay商户ID和公钥证书)。
步骤三:集成代码
以下是一个简单的示例,展示了如何在Flutter应用中集成Google Wallet支付:
import 'package:flutter/material.dart';
import 'package:google_wallet/google_wallet.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: GoogleWalletPaymentPage(),
);
}
}
class GoogleWalletPaymentPage extends StatefulWidget {
@override
_GoogleWalletPaymentPageState createState() => _GoogleWalletPaymentPageState();
}
class _GoogleWalletPaymentPageState extends State<GoogleWalletPaymentPage> {
final GoogleWallet _googleWallet = GoogleWallet();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Google Wallet Payment Integration'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
try {
// 配置支付请求
final GoogleWalletPaymentRequest request = GoogleWalletPaymentRequest(
googleMerchantId: '你的Google Merchant ID',
environment: GoogleWalletEnvironment.test, // 替换为production用于生产环境
transactionInfo: GoogleWalletTransactionInfo(
totalPrice: '10.00',
currencyCode: 'USD',
),
// 其他可选配置,如shippingOptions等
);
// 发起支付请求
final GoogleWalletPaymentResponse response = await _googleWallet.loadPaymentData(request);
print('Payment Data: ${response.toJson()}');
// 处理支付响应,例如发送到你的服务器进行验证和完成交易
} catch (e) {
print('Error: $e');
}
},
child: Text('Pay with Google Wallet'),
),
),
);
}
}
注意事项
- 测试环境:在开发阶段,使用
GoogleWalletEnvironment.test
环境进行测试。发布到生产环境时,应替换为GoogleWalletEnvironment.production
。 - 安全性:确保你的Google Pay商户ID和公钥证书配置正确,以保障支付过程的安全性。
- 支付处理:在获取到支付数据后,需要将数据发送到你的服务器进行验证和处理,以完成交易流程。
以上代码提供了一个基本的集成示例,实际应用中可能需要根据具体需求进行调整和扩展。