Flutter苹果支付集成插件tap_apple_pay_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':''}
success
为true
时,表示流程已成功完成。data
是一个可选对象,将传递任何作为操作结果的数据。
错误情况
{'success':false,'error':''}
success
为false
时,表示流程失败。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
更多关于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卡片和设备。
- 处理支付响应时,注意保护用户的敏感信息,并确保遵守相关的支付安全规范。
这个代码案例提供了一个基本的框架,你可以根据自己的需求进一步定制和扩展。