Flutter三星钱包集成插件samsung_wallet的使用

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

Flutter三星钱包集成插件samsung_wallet的使用

Samsung Wallet 1.1.0

Samsung Wallet for Flutter

要求

支持 flutter >= 3.0, dart >= 2.17.0, < 4.0.0
compileSdkVersion 34

更多信息

您可以获取更多信息在 Samsung Wallet 文档

参考

此包基于 Samsung Wallet 的提供的 Android 示例代码。如果您需要参考代码,可以点击 这里 访问它。

使用方法

  1. 添加依赖

    • 在您的 pubspec.yaml 文件中添加依赖。
    dependencies:
      samsung_wallet: newest_version
    
  2. 添加权限

    • 在您的 AndroidManifest.xml 文件中添加权限。
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
  3. 设置主页面

    • 请在 main.dart 文件中的 main 函数中添加 'WidgetsFlutterBinding.ensureInitialized();' 代码。
    void main() {
      WidgetsFlutterBinding.ensureInitialized();
      runApp(MyApp());
    }
    
  4. 初始化 SamsungWallet

    • 初始化 SamsungWallet 对象。
    final samsungWalletPlugin = SamsungWallet(
        countryCode: countryCode,
        partnerCode: partnerCode,
        impressionURL: impressionUrl);
    

    如果初始化了 SamsungWallet 对象,它会自动检查 SamsungWallet 是否支持。结果可以在调试控制台查看。

  5. 创建 onTapMethod 以添加卡片

    • 如果 Samsung 钱包受支持,可以添加卡片。
    function onTap(){
      samsungWalletPlugin.addCardToSamsungWallet(
          cardID: cardId, cData: cdata, clickURL: clickUrl);
    }
    
  6. 添加 Samsung Wallet 按钮组件

    AddToSamsungWalletButton(onTapAddCard: onTap)
    

更多

  1. 添加到钱包测试工具
    • 如果您想使用 ‘Add to Wallet Test Tool’,尝试此组件。
    AddToSamsungWalletButton.testTool()
    

如何制作 Cdata

  • 您可以使用 JWT Generator 制作 Cdata。 请参阅 这里 关于 JWT Generator。

问题

请将任何问题、错误或功能请求作为 GitHub 页面上的问题提交。


import 'dart:developer';

import 'package:flutter/material.dart';
import 'dart:async';
import 'package:samsung_wallet/samsung_wallet.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  MyApp({super.key});

  /// mandatory
  ///
  /// URL for logging a button impression event.
  /// Value granted from the Partners Portal.
  ///
  /// Check your Wallet Cards in Manage Wallet Cards which you want add Wallet Card App Integration
  static const String impressionUrl = "[ Impression Url ]";

  /// optional
  ///
  /// Country code
  static const String countryCode = "[ CountryCode ]";

  /// mandatory
  ///
  /// Partner code obtained from Partners Portal
  /// Value granted from the Partners portal.
  ///
  /// Check your Wallet Cards in Samsung Wallet Partners
  static const String partnerCode = "[ Partner Code ]";

  /// mandatory
  ///
  /// Wallet card identifier obtained from Partners Portal
  /// Value granted from the Partners Portal.
  ///
  /// Check your Wallet Cards in Manage Wallet Cards which you want add Wallet Card App Integration
  static const String cardId = "[ Card Id ]";

  /// mandatory
  /// You can get cdata to JWT Generator
  static const String cdata = "[ CData ]";

  /// mandatory
  ///
  /// Encrypted card object (JSON).
  /// This field needs to be encrypted.
  ///
  /// Refer to [Security](https://developer.samsung.com/wallet/api/security.html)
  /// for more details.
  ///
  /// Check your Wallet Cards in Manage Wallet Cards which you want add Wallet Card App Integration
  static const String clickUrl = "[ Click Url ]";

  final _samsungWalletPlugin = SamsungWallet(
      countryCode: countryCode,
      partnerCode: partnerCode,
      impressionURL: impressionUrl);

  Future&lt;void&gt; checkSamsungWalletSupported() async {
    try {
      await _samsungWalletPlugin.checkSamsungWalletSupported(
              partnerCode: partnerCode, countryCode: 'KR') ??
          false;
    } catch (e) {
      log("ERROR : $e");
    }
  }

  addCard() async {
    await _samsungWalletPlugin.addCardToSamsungWallet(
        cardID: cardId, cData: cdata, clickURL: clickUrl);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Samsung Wallet Demo'),
        ),
        body: Center(
          child: Column(
            children: [
              const Text('Hello Samsung Wallet!'),
              const SizedBox(
                height: 50,
              ),
              AddToSamsungWalletButton(
                onTapAddCard: addCard,
                buttonDesignType: ButtonDesignType.iconBasic,
                buttonTextPositionType: ButtonTextPositionType.hor,
                buttonThemeType: ButtonThemeType.pos,
              ),
              const SizedBox(
                height: 50,
              ),
              AddToSamsungWalletButton.testTool(),
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


在Flutter中集成三星钱包(Samsung Wallet)插件samsung_wallet可以帮助开发者将三星钱包的功能集成到他们的应用中。以下是一个使用samsung_wallet插件的基本示例代码,展示了如何初始化插件并尝试进行一些基本操作。

首先,确保你已经在pubspec.yaml文件中添加了samsung_wallet依赖:

dependencies:
  flutter:
    sdk: flutter
  samsung_wallet: ^最新版本号  # 请替换为最新的版本号

然后,运行flutter pub get来安装依赖。

接下来,在你的Flutter应用中,你可以按照以下步骤进行集成:

  1. 导入插件

在你的Dart文件中导入samsung_wallet插件:

import 'package:samsung_wallet/samsung_wallet.dart';
  1. 初始化插件

在应用的入口文件(通常是main.dart)中,你可以初始化插件并检查设备是否支持三星钱包功能。

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  SamsungWallet.instance.initialize().then((isSupported) {
    if (isSupported) {
      print("Samsung Wallet is supported on this device.");
      runApp(MyApp());
    } else {
      print("Samsung Wallet is not supported on this device.");
      runApp(UnsupportedApp());
    }
  }).catchError((error) {
    print("Failed to initialize Samsung Wallet: $error");
    runApp(UnsupportedApp());
  });
}

class UnsupportedApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Samsung Wallet Unsupported'),
        ),
        body: Center(
          child: Text('Samsung Wallet is not supported on this device.'),
        ),
      ),
    );
  }
}
  1. 使用三星钱包功能

假设你想使用三星钱包来添加一张卡,你可以使用插件提供的API。下面是一个简化的示例,展示如何触发添加卡的操作(注意:具体API可能会根据插件版本有所不同,请参考官方文档):

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Samsung Wallet Integration'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              try {
                // 假设有一个添加卡的API
                // 这里的参数和API调用可能需要根据实际插件文档进行调整
                bool result = await SamsungWallet.instance.addCard(
                  cardDetails: CardDetails(
                    // 填写卡片的详细信息,如卡号、有效期等
                    cardNumber: '1234567812345678',
                    expiryMonth: '12',
                    expiryYear: '25',
                    cvv: '123',
                    // 其他必要的字段...
                  ),
                );
                if (result) {
                  print("Card added successfully.");
                } else {
                  print("Failed to add card.");
                }
              } catch (error) {
                print("Error adding card: $error");
              }
            },
            child: Text('Add Card to Samsung Wallet'),
          ),
        ),
      ),
    );
  }
}

// 这是一个假设的CardDetails类,实际使用时请参考插件提供的类定义
class CardDetails {
  String cardNumber;
  String expiryMonth;
  String expiryYear;
  String cvv;
  // 其他字段...

  CardDetails({
    required this.cardNumber,
    required this.expiryMonth,
    required this.expiryYear,
    required this.cvv,
    // 其他字段...
  });
}

注意:上述代码中的CardDetails类和addCard方法都是假设的,实际使用时请参考samsung_wallet插件的官方文档来获取正确的类定义和API调用方式。

此外,由于三星钱包的API可能会随着版本更新而变化,因此务必查阅最新的官方文档以确保代码的正确性和安全性。

回到顶部