Flutter谷歌钱包集成插件flutter_google_wallet的使用

发布于 1周前 作者 songsunli 来自 Flutter

Flutter谷歌钱包集成插件flutter_google_wallet的使用

flutter_google_wallet 是一个用于在Flutter应用中集成Google Wallet功能的插件,主要支持添加票证或其他内容到Google Wallet。

特性

  • 检查设备上是否可用Google Wallet。
  • 将票证或任何内容添加到Google Wallet。

使用方法

基本示例

首先,在你的应用中创建一个 FlutterGoogleWalletPlugin 实例:

final flutterGoogleWalletPlugin = FlutterGoogleWalletPlugin();

然后,调用 initWalletClient 方法来初始化Android上的Wallet实例:

flutterGoogleWalletPlugin.initWalletClient();

在显示按钮之前,调用 getWalletApiAvailabilityStatus 方法检查设备是否安装了Google Wallet应用:

FutureBuilder<bool>(
  future: flutterGoogleWalletPlugin.getWalletApiAvailabilityStatus(),
  builder: (BuildContext context, AsyncSnapshot<bool> available) {
    if (available.data ?? false) {
      return AddToGoogleWalletButton(
        locale: Locale('en', 'US'),
        onPress: () {
          flutterGoogleWalletPlugin.savePasses(
            jsonPass: exampleJsonPass,
            addToGoogleWalletRequestCode: 2);
        });
    } else {
      return const SizedBox.shrink();
    }
  },
),

还需要将Google Wallet按钮的SVG文件添加到 pubspec.yaml 的资源中:

assets:
  - packages/flutter_google_wallet/assets/svg/button/frFR_add_to_google_wallet_wallet-button.svg
  - packages/flutter_google_wallet/assets/svg/button/enUS_add_to_google_wallet_wallet-button.svg

并在 MaterialApp 中添加本地化配置:

localizationsDelegates: const [
  I18nGoogleWallet.delegate,
],

完整示例代码

以下是一个完整的示例代码,展示如何在Flutter应用中集成Google Wallet功能:

import 'package:flutter/material.dart';
import 'package:flutter_google_wallet/flutter_google_wallet_plugin.dart';
import 'package:flutter_google_wallet/generated/l10n.dart';
import 'package:flutter_google_wallet/widget/add_to_google_wallet_button.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  final flutterGoogleWalletPlugin = FlutterGoogleWalletPlugin();

  MyApp({Key? key}) : super(key: key);

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final String _platformVersion = 'Unknown';

  late Future<bool> _isWalletAvailable;

  @override
  void initState() {
    super.initState();
    _isWalletAvailable = Future(() async {
      await widget.flutterGoogleWalletPlugin.initWalletClient();
      return widget.flutterGoogleWalletPlugin.getWalletApiAvailabilityStatus();
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      localizationsDelegates: const [I18nGoogleWallet.delegate],
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: Column(
            children: [
              Text('Running on: $_platformVersion\n'),
              FutureBuilder<bool>(
                future: _isWalletAvailable,
                builder: (BuildContext context, AsyncSnapshot<bool> available) {
                  if (available.data == true) {
                    return Padding(
                      padding: const EdgeInsets.all(10),
                      child: Align(
                        alignment: Alignment.topCenter,
                        child: AddToGoogleWalletButton(
                          locale: const Locale('fr', 'FR'),
                          onPress: () {
                            widget.flutterGoogleWalletPlugin.savePasses(
                                jsonPass: exampleJsonPass,
                                addToGoogleWalletRequestCode: 2);
                          },
                        ),
                      ),
                    );
                  } else {
                    return const SizedBox.shrink();
                  }
                },
              ),
            ],
          ),
        ),
      ),
    );
  }
}

// 这是一个带有虚假数据的pass,当添加到Google Wallet时会触发错误
// 对于真实数据的pass,请遵循Google开发者指南:https://developers.google.com/wallet
const exampleJsonPass = '''
{
  "aud": "google",
  "origins": [
    "https://localhost:8080"
  ],
  "iss": "123456789@developer.gserviceaccount.com",
  "iat": 123456789,
  "typ": "savetowallet",
  "payload": {
    "loyaltyObjects": [
      {
        "barcode": {
          "alternateText": "12345",
          "type": "qrCode",
          "value": "28343E3"
        },
        "id": "123456789.LoyaltyObject",
        "loyaltyPoints": {
          "balance": {
            "string": "500"
          },
          "label": "Points"
        },
        "accountId": "1234567890",
        "classId": "123456789.LoyaltyClass",
        "accountName": "Jane Doe",
        "state": "active",
        "version": 1
      }
    ]
  }
}
''';

通过以上步骤和代码示例,你可以在Flutter应用中轻松集成Google Wallet功能,并为用户提供添加票证等便捷服务。


更多关于Flutter谷歌钱包集成插件flutter_google_wallet的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter谷歌钱包集成插件flutter_google_wallet的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中集成和使用flutter_google_wallet插件的示例代码。这个插件允许你在Flutter应用中集成Google Wallet支付功能。

首先,确保你的Flutter项目已经创建并配置好。然后,按照以下步骤进行集成:

1. 添加依赖

在你的pubspec.yaml文件中添加flutter_google_wallet依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_google_wallet: ^最新版本号  # 请替换为实际发布的最新版本号

然后运行flutter pub get来获取依赖。

2. 配置Android和iOS

Android

android/app/src/main/AndroidManifest.xml中,确保你已经添加了必要的权限和配置,例如互联网权限。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.yourapp">

    <uses-permission android:name="android.permission.INTERNET"/>
    <!-- 其他配置 -->

</manifest>

iOS

对于iOS,你需要在Info.plist中添加必要的配置,并确保你的项目配置支持URL schemes等。不过,对于flutter_google_wallet,通常不需要特别的iOS配置,除非有特定的文档说明。

3. 使用插件

在你的Flutter代码中,你可以按照以下方式使用flutter_google_wallet插件:

import 'package:flutter/material.dart';
import 'package:flutter_google_wallet/flutter_google_wallet.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Google Wallet Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: GoogleWalletPage(),
    );
  }
}

class GoogleWalletPage extends StatefulWidget {
  @override
  _GoogleWalletPageState createState() => _GoogleWalletPageState();
}

class _GoogleWalletPageState extends State<GoogleWalletPage> {
  final GoogleWalletConfiguration _config = GoogleWalletConfiguration(
    environment: 'TEST', // 使用 'TEST' 或 'PRODUCTION'
    merchantIdentifier: 'your-merchant-identifier', // 替换为你的商户标识符
    googlePayButtonColorScheme: GooglePayButtonColorScheme.black,
    googlePayButtonStyle: GooglePayButtonStyle.pay,
    transactionInfo: TransactionInfo(
      totalPrice: '10.00',
      totalPriceStatus: LabelValuePair(label: 'STATUS', value: 'FINAL'),
      currencyCode: 'USD',
    ),
    // 其他可选配置...
  );

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Google Wallet Integration'),
      ),
      body: Center(
        child: GoogleWalletButton(
          configuration: _config,
          onPaymentAuthorized: (GoogleWalletPaymentAuthorizedEvent event) {
            // 处理支付授权事件
            print('Payment authorized: ${event.paymentData}');
          },
          onPaymentError: (GoogleWalletPaymentErrorEvent event) {
            // 处理支付错误事件
            print('Payment error: ${event.errorMessage}');
          },
        ),
      ),
    );
  }
}

注意事项

  1. 环境配置:确保你的应用是在正确的环境中运行(测试或生产)。
  2. 商户标识符:替换your-merchant-identifier为你的实际商户标识符。
  3. 支付信息:根据你的需求调整TransactionInfo中的支付信息。
  4. 错误处理:在实际应用中,你应该更详细地处理支付错误和异常情况。

调试和测试

在开发过程中,使用Google Pay的测试环境进行测试。确保你有一个测试用的Google Pay账户,并且你的商户账户已经配置好接受测试支付。

通过以上步骤,你应该能够在Flutter应用中成功集成Google Wallet支付功能。如果有任何问题,请参考flutter_google_wallet插件的官方文档或GitHub仓库获取更多信息和支持。

回到顶部