Flutter支付集成插件xendit_flutter的使用

Flutter支付集成插件xendit_flutter的使用

Xendit Flutter 是一个专门为 Flutter 应用程序集成 Xendit 支付网关而设计的包。通过 Xendit Flutter,开发者可以轻松创建各种支付方式(包括卡支付)的支付令牌,并简化其 Flutter 应用程序中的支付流程。

它还提供了与原生 Java(适用于 Android)和 SwiftUI(适用于 iOS)实现的无缝集成,使开发者能够在现有的原生移动应用程序中利用 Xendit 支付网关的强大功能。

安装与配置

Android

要让此插件在 Android 上运行,需要执行以下步骤:

  1. 确保在你的 android/app/build.gradle 文件中设置 compileSdkVersion 为 34 并将 minSdkVersion 设置为 21:
android {
  compileSdkVersion 34
  ...
}
defaultConfig {
  minSdkVersion 21
  ...
}
  1. 在你的 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

1 回复

更多关于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');
}
回到顶部