Flutter苹果支付集成插件tap_apple_pay_flutter的使用

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

Flutter苹果支付集成插件tap_apple_pay_flutter的使用

ApplePay-Flutter

一个由Tap Payments提供的flutter插件,用于在您的Flutter应用中接受Apple Pay付款。

开始使用

在您的Flutter项目的pubspec.yaml文件中,添加以下依赖:

dependencies:
  tap_apple_pay_flutter: 1.0.3

在您的库中添加以下导入:

import 'package:tap_apple_pay_flutter/models/models.dart';

然后在flutter终端执行以下命令:

cd ios
pod install
pod update

最低要求

  • Dart版本 3.0.0+
  • Flutter版本 3.0.0+
  • iOS版本 13.0+

SDK响应格式

在整个应用与Tap Apple Pay SDK的交互过程中,我们确保您会收到相同的响应格式,以简化您的解析过程。格式始终如下:

成功情况

{'success':true,'data':''}
  • successtrue时,表示流程已成功完成。
  • data是一个可选对象,将传递任何作为操作结果的数据。

错误情况

{'success':false,'error':''}
  • successfalse时,表示流程失败。
  • error是一个字符串,标识发生的错误。

预渲染设置

在呈现Apple Pay小部件之前,需要进行一些设置。这些配置将定义Apple Pay小部件所需的令牌化和样式数据。以下是一个配置Apple Pay小部件的代码示例:

Future<void> setupApplePay({
  // 测试密钥,注册您的Bundle ID时提供
  String sandboxKey = "pk_test_Vlk842......",
  // 生产密钥,注册您的Bundle ID时提供
  String productionKey = "pk_live_UYnihb.....",
  // SDK模式枚举,定义应用程序运行环境
  // 接受值:SdkMode.sandbox / SdkMode.production
  required SdkMode sdkMode,
}) async {
  // 在插件级别存储数据
  TapApplePayFlutter.setupApplePayConfiguration(
    sandboxKey: sandboxKey,
    productionKey: productionKey,
    sdkMode: sdkMode,
  );
  
  try {
    // 调用Apple Pay Flutter SDK提供的公共接口
    // 它是一个未来类型,响应将遵循上述描述的结构
    var result = await TapApplePayFlutter.setupApplePay;
    
    if (result["success"]) {
      debugPrint("Apple pay plugin is configured properly.");
    } else {
      debugPrint("Apple pay plugin configuration failed : ${result["error"]}");
    }
  } catch (ex) {
    debugPrint("Error >>>>>> $ex");
  }
}

然后,在渲染小部件之前从代码中调用它:

setupApplePay(
  sandboxKey: "",
  productionKey: "",
  sdkMode: widget.sdkMode,
);

添加Apple Pay小部件

在您的小部件层次结构中,您可以像使用原生提供的小部件一样添加我们的Apple Pay小部件。示例如下:

TapApplePayFlutter.buildApplePayButton(
  // 定义Apple Pay按钮类型。它是[Apple](https://developer.apple.com/documentation/apple_pay_on_the_web/applepaybuttontype)提供的值之一
  applePayButtonType: ApplePayButtonType.appleLogoOnly,
  // 定义Apple Pay按钮样式
  applePayButtonStyle: ApplePayButtonStyle.black,
  onPress: () { // 当小部件被点击时触发
    getApplePayToken(); // 生成原始Apple Pay令牌的示例代码
    getTapTokenToken(); // 生成Tap令牌的示例代码,可以通过Tap APIs对客户进行收费
  },
)

生成Apple Pay令牌

您可以请求我们的插件从Apple Pay系统授权付款,并为您提供原始Apple Pay令牌以供进一步使用。确保您已经调用了上面指示的setup过程,然后再调用此接口。

生成Apple Pay令牌的示例代码如下:

/// 模拟如何请求我们的插件生成原始Apple Pay令牌的示例函数
Future<void> getApplePayToken() async {
  try {
    // 我们的接口是未来的类型
    var result = await TapApplePayFlutter.getApplePayToken(
      config: ApplePayConfig(
        transactionCurrency: TapCurrencyCode.SAR, // 3个ISO数字货币代码。我们创建了一个枚举列表来防止拼写错误
        allowedCardNetworks: [ // 定义允许的卡方案列表供客户支付
          AllowedCardNetworks.AMEX,
          AllowedCardNetworks.VISA,
          AllowedCardNetworks.MASTERCARD,
        ],
        applePayMerchantId: "merchant.tap.gosell", // 这是在Apple Pay开发者账户内创建并链接到Apple Pay证书的Apple Pay商户ID
        amount: 1.0, // 总金额
        merchantCapabilities: [ // 允许的卡资金来源
          MerchantCapabilities.ThreeDS,
          MerchantCapabilities.Debit,
          MerchantCapabilities.Credit,
        ],
      ),
    );

    if (result["success"]) {
      debugPrint("Result of Apple Pay Token >>>>>> $result");
    } else {
      debugPrint("Error of Apple Pay Token >>>>>> $result");
    }
  } catch (ex) {
    debugPrint("Error >>>>>> $ex");
  }
}

生成Tap Apple Pay令牌

您可以请求我们的插件从Apple Pay系统授权付款,并生成一个Tap令牌。通过该令牌,您可以使用我们的API对客户进行收费。确保您已经调用了上面指示的setup过程,然后再调用此接口。

生成Tap Apple Pay令牌的示例代码如下:

/// 模拟如何请求我们的插件生成Tap Apple Pay令牌的示例函数
Future<void> getTapTokenToken() async {
  try {
    // 我们的接口是未来的类型
    var result = await TapApplePayFlutter.getTapToken(
      config: ApplePayConfig(
        transactionCurrency: TapCurrencyCode.SAR, // 3个ISO数字货币代码。我们创建了一个枚举列表来防止拼写错误
        allowedCardNetworks: [ // 定义允许的卡方案列表供客户支付
          AllowedCardNetworks.AMEX,
          AllowedCardNetworks.VISA,
          AllowedCardNetworks.MASTERCARD,
        ],
        applePayMerchantId: "merchant.tap.gosell", // 这是在Apple Pay开发者账户内创建并链接到Apple Pay证书的Apple Pay商户ID
        amount: 1.0, // 总金额
        merchantCapabilities: [ // 允许的卡资金来源
          MerchantCapabilities.ThreeDS,
          MerchantCapabilities.Debit,
          MerchantCapabilities.Credit,
        ],
      ),
    );

    if (result["success"]) {
      debugPrint("Result of Tap Apple Pay Token >>>>>> $result");
    } else {
      debugPrint("Error of Tap Apple Pay Token >>>>>> $result");
    }
  } catch (ex) {
    debugPrint("Error >>>>>> $ex");
  }
}

更多关于Flutter苹果支付集成插件tap_apple_pay_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter苹果支付集成插件tap_apple_pay_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter项目中集成苹果支付(Apple Pay)通常可以通过使用第三方插件来简化流程。tap_apple_pay_flutter 是一个常用的Flutter插件,用于在iOS应用中集成Apple Pay。以下是一个基本的代码案例,展示如何在Flutter项目中使用这个插件。

1. 添加依赖

首先,在pubspec.yaml文件中添加tap_apple_pay_flutter依赖:

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

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

2. iOS配置

在iOS项目中,需要配置Apple Pay的支持。打开ios/Runner/Info.plist文件,并添加以下键和值来启用Apple Pay:

<key>NSApplePayEnabled</key>
<true/>
<key>NSApplePayMerchantIdentifier</key>
<string>你的商家标识符</string> # 替换为你的Apple Pay商家标识符

确保你的Apple Developer账户中已经配置了这个商家标识符,并且已经与你的App的Bundle Identifier关联。

3. Flutter代码实现

以下是一个基本的Flutter代码示例,展示如何使用tap_apple_pay_flutter插件:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Apple Pay Integration'),
        ),
        body: Center(
          child: ApplePayButton(),
        ),
      ),
    );
  }
}

class ApplePayButton extends StatefulWidget {
  @override
  _ApplePayButtonState createState() => _ApplePayButtonState();
}

class _ApplePayButtonState extends State<ApplePayButton> {
  final ApplePayConfiguration applePayConfiguration = ApplePayConfiguration(
    merchantIdentifier: '你的商家标识符', // 替换为你的Apple Pay商家标识符
    supportedNetworks: ['amex', 'discover', 'masterCard', 'visa'],
    countryCode: 'US',
    currencyCode: 'USD',
    items: [
      ApplePayItem(
        label: 'Product',
        amount: '10.00',
      ),
    ],
    billingContactFields: [
      ApplePayBillingContactField.postalAddress,
      ApplePayBillingContactField.phoneNumber,
      ApplePayBillingContactField.email,
      ApplePayBillingContactField.name,
    ],
    shippingContactFields: [
      ApplePayShippingContactField.postalAddress,
      ApplePayShippingContactField.phoneNumber,
      ApplePayShippingContactField.email,
      ApplePayShippingContactField.name,
    ],
    requiredBillingContactFields: [
      ApplePayBillingContactField.postalAddress,
    ],
    requiredShippingContactFields: [
      ApplePayShippingContactField.postalAddress,
    ],
  );

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: () async {
        try {
          final ApplePayPaymentResponse response = await ApplePay.startPayment(
            configuration: applePayConfiguration,
          );
          print('Payment successful: $response');
        } catch (e) {
          print('Payment failed: $e');
        }
      },
      child: Text('Pay with Apple Pay'),
    );
  }
}

4. 处理支付响应

在上面的代码中,ApplePay.startPayment方法会启动Apple Pay支付流程。用户完成支付后,会返回一个ApplePayPaymentResponse对象,其中包含了支付的相关信息,如支付令牌(token)、账单和发货地址等。你可以根据这些信息在你的服务器上完成支付处理。

注意事项

  • 确保你的Apple Developer账户已经配置了Apple Pay,并且你的App的Bundle Identifier与商家标识符关联。
  • 在真实环境中测试时,请确保使用真实的Apple Pay卡片和设备。
  • 处理支付响应时,注意保护用户的敏感信息,并确保遵守相关的支付安全规范。

这个代码案例提供了一个基本的框架,你可以根据自己的需求进一步定制和扩展。

回到顶部