Flutter支付集成插件xendit_flutter的使用
Flutter支付集成插件xendit_flutter的使用
Xendit Flutter 是一个专门为 Flutter 应用程序集成 Xendit 支付网关而设计的包。通过 Xendit Flutter,开发者可以轻松创建各种支付方式(包括卡支付)的支付令牌,并简化其 Flutter 应用程序中的支付流程。
它还提供了与原生 Java(适用于 Android)和 SwiftUI(适用于 iOS)实现的无缝集成,使开发者能够在现有的原生移动应用程序中利用 Xendit 支付网关的强大功能。
安装与配置
Android
要让此插件在 Android 上运行,需要执行以下步骤:
- 确保在你的
android/app/build.gradle
文件中设置compileSdkVersion
为 34 并将minSdkVersion
设置为 21:
android {
compileSdkVersion 34
...
}
defaultConfig {
minSdkVersion 21
...
}
- 在你的
AndroidManifest.xml
文件中添加以下代码:
<manifest
...
xmlns:tools="http://schemas.android.com/tools">
<application
...
tools:replace="android:label">
...
</application>
...
</manifest>
iOS
iOS 只支持版本 11 及以上,因为这是原生 SDK Swift 的默认设置。
使用方法
Xendit Flutter 提供了两种类型的卡令牌认证:单次使用的令牌(createSingleToken
)和多次使用的令牌(createMultipleUseToken
)。你还可以对未验证的令牌进行认证,使用 createAuthentication
方法。此外,还提供了一些验证器,例如卡号验证器、CVN 验证器等。示例如下:
final XCard card = XCard(
creditCardNumber: "4000000000001091",
creditCardCVN: "123",
expirationMonth: "12",
expirationYear: "2024",
);
final Xendit xendit = Xendit('your-publish-key');
TokenResult result = await xendit.createSingleUseToken(card, amount: 50000, currency: "IDR");
if (result.isSuccess) {
// 处理成功的情况
} else {
debugPrint(result.errorMessage);
}
验证示例:
final bool numberValidator = CardValidator.isCardNumberValid("4000000000001091");
final bool expiryValidator = CardValidator.isExpiryValid("12", "2024");
final bool cvnValidator = CardValidator.isCvnValid("123");
示例代码
以下是示例代码的完整实现:
import 'package:flutter/material.dart';
import 'package:xendit_flutter_example/page/create_autentication_token.dart';
import 'package:xendit_flutter_example/page/create_token.dart';
import 'package:xendit_flutter_example/page/validate_util.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
[@override](/user/override)
void initState() {
super.initState();
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: HomePage(),
);
}
}
class HomePage extends StatelessWidget {
const HomePage({
super.key,
});
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('插件示例应用'),
),
body: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
children: [
const SizedBox(
width: double.infinity,
),
TextButton(
onPressed: () => Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const CreateTokenPage(),
)),
child: const Text('创建令牌'),
),
TextButton(
onPressed: () => Navigator.push(
context,
MaterialPageRoute(
builder: (context) => CreateAuthPage(),
)),
child: const Text('创建认证令牌'),
),
TextButton(
onPressed: () => Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ValidateUtilPage(),
)),
child: const Text('验证工具'),
),
],
),
);
}
}
更多关于Flutter支付集成插件xendit_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付集成插件xendit_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
xendit_flutter
是一个用于在 Flutter 应用中集成 Xendit 支付服务的插件。Xendit 是一家提供支付解决方案的公司,支持多种支付方式,如信用卡、银行转账、电子钱包等。通过 xendit_flutter
插件,你可以轻松地在 Flutter 应用中集成 Xendit 支付功能。
以下是如何在 Flutter 项目中使用 xendit_flutter
插件的步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 xendit_flutter
插件的依赖:
dependencies:
flutter:
sdk: flutter
xendit_flutter: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 初始化 Xendit
在使用 Xendit 功能之前,你需要初始化 Xendit 插件。通常,你可以在 main.dart
文件中进行初始化:
import 'package:xendit_flutter/xendit_flutter.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 Xendit
XenditFlutter.initialize(
publishableKey: 'YOUR_PUBLISHABLE_KEY',
);
runApp(MyApp());
}
3. 创建支付 Token
在 Flutter 应用中,你可以通过 xendit_flutter
插件创建支付 Token。以下是一个创建信用卡支付 Token 的示例:
import 'package:xendit_flutter/xendit_flutter.dart';
Future<void> createCardToken() async {
try {
CardTokenResponse response = await XenditFlutter.createCardToken(
cardNumber: '4123450131001381',
expirationMonth: '12',
expirationYear: '2025',
cvn: '123',
amount: 10000, // 金额
isMultipleUse: false, // 是否为多次使用
);
print('Card Token: ${response.token}');
print('Card ID: ${response.cardId}');
} on XenditException catch (e) {
print('Error: ${e.message}');
}
}
4. 创建支付
创建支付 Token 后,你可以使用该 Token 进行支付。以下是一个使用 Token 进行支付的示例:
import 'package:xendit_flutter/xendit_flutter.dart';
Future<void> createPayment() async {
try {
PaymentResponse response = await XenditFlutter.createPayment(
tokenId: 'YOUR_TOKEN_ID',
amount: 10000,
externalId: 'YOUR_EXTERNAL_ID',
currency: 'IDR', // 货币类型
authenticationId: 'YOUR_AUTHENTICATION_ID', // 可选
);
print('Payment ID: ${response.paymentId}');
print('Status: ${response.status}');
} on XenditException catch (e) {
print('Error: ${e.message}');
}
}
5. 处理 3D Secure 认证
如果支付需要 3D Secure 认证,你可以通过 xendit_flutter
插件处理 3D Secure 认证流程:
import 'package:xendit_flutter/xendit_flutter.dart';
Future<void> authenticate3DS() async {
try {
AuthenticationResponse response = await XenditFlutter.authenticate3DS(
tokenId: 'YOUR_TOKEN_ID',
amount: 10000,
currency: 'IDR',
authenticationId: 'YOUR_AUTHENTICATION_ID',
);
print('Authentication ID: ${response.authenticationId}');
print('Status: ${response.status}');
} on XenditException catch (e) {
print('Error: ${e.message}');
}
}
6. 处理支付结果
支付完成后,你可以根据支付结果进行相应的处理。例如,显示支付成功或失败的提示信息。
import 'package:flutter/material.dart';
class PaymentResultScreen extends StatelessWidget {
final bool isSuccess;
PaymentResultScreen({required this.isSuccess});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Payment Result'),
),
body: Center(
child: Text(
isSuccess ? 'Payment Successful!' : 'Payment Failed!',
style: TextStyle(fontSize: 24),
),
),
);
}
}
7. 错误处理
在使用 xendit_flutter
插件时,可能会遇到各种错误,例如网络错误、支付失败等。你可以通过捕获 XenditException
来处理这些错误。
try {
// Xendit 相关操作
} on XenditException catch (e) {
print('Error: ${e.message}');
} catch (e) {
print('Unexpected error: $e');
}