Flutter支付功能插件aba_payment的使用

Flutter支付功能插件aba_payment的使用

插件简介

aba_payment 是一个用于在 Flutter 应用程序中轻松集成 ABA 支付服务的插件。该插件通过 WebView 嵌入网页内容进行支付处理,并使用 url_launcher 打开 iOS 和 Android 的支付方案。


支持版本

  • Android 最低 SDK 版本: 21
  • iOS 最低目标版本: 12

支持的支付选项

  • 信用卡/借记卡(依赖于 flutter_inappwebview
  • ABA 支付方式移动应用(依赖于 url_launcher

以下是插件中包含的主要类及其用途:

  1. ABAClientHelper

    • 负责处理 HTTP 请求以创建任何交易。
    • 文件路径: ABAClientHelper
  2. ABATransaction

  3. ABAServerResponse

  4. ABAMerchant


小部件

  • ABACheckoutContainer()
    • 一个完整的控件,允许用户轻松将 ABA 支付集成到他们的 Flutter 应用程序中。
    • 文件路径: ABACheckoutContainer

可用方法

以下是与支付相关的事件触发器:

// 当用户按下结账按钮时触发
onBeginCheckout(ABATransaction transaction);

// 当结账完成后成功创建交易时触发
onFinishCheckout(ABATransaction transaction);

// 当用户完成支付并开始检查当前交易是否成功或失败时触发
onBeginCheckTransaction(ABATransaction transaction);

// 当用户完成支付且当前交易检查事件结束时触发
onFinishCheckTransaction(ABATransaction transaction);

// 当支付成功时触发
onPaymentSuccess(ABATransaction transaction);

// 当支付失败时触发
onPaymentFail(ABATransaction transaction);

示例代码

以下是一个完整的示例代码,展示如何在 Flutter 中使用 aba_payment 插件:

import 'package:aba_payment/aba_payment.dart';
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 加载环境变量
  await dotenv.load(fileName: ".env");

  // 初始化商户信息
  PaywayTransactionService.ensureInitialized(ABAMerchant(
    merchantID: dotenv.get('ABA_PAYWAY_MERCHANT_ID'),
    merchantApiName: dotenv.get('ABA_PAYWAY_MERCHANT_NAME'),
    merchantApiKey: dotenv.get('ABA_PAYWAY_API_KEY'),
    baseApiUrl: dotenv.get('ABA_PAYWAY_API_URL'),
    refererDomain: "https://mylekha.app",
  ));

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: "ABA Payment Testing",
      debugShowCheckedModeBanner: false,
      home: CartScreen(), // 启动购物车页面
    );
  }
}

class CartScreen extends StatelessWidget {
  final double _total = 100.0;
  final double _shipping = 10.0;
  final String _firstname = "John";
  final String _lastname = "Doe";
  final String _email = "john.doe@example.com";
  final String _phone = "1234567890";
  final List<Map<String, dynamic>> _items = [
    {"name": "Product 1", "price": 50.0},
    {"name": "Product 2", "price": 50.0},
  ];
  final String _checkoutApiUrl = "https://your-api-url.com/checkout";
  final ABAMerchant _merchant = ABAMerchant(
    merchantID: "your_merchant_id",
    merchantApiName: "your_api_name",
    merchantApiKey: "your_api_key",
    baseApiUrl: "https://your-base-api-url.com",
    refererDomain: "https://your-domain.com",
  );

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("ABA Payment Example"),
      ),
      body: Center(
        child: ABACheckoutContainer(
          amount: _total,
          shipping: _shipping,
          firstname: _firstname,
          lastname: _lastname,
          email: _email,
          phone: _phone,
          items: _items.map((e) => e).toList(),
          checkoutApiUrl: _checkoutApiUrl,
          merchant: _merchant,
          onBeginCheckout: (transaction) {
            EasyLoading.show(status: 'Loading...');
          },
          onFinishCheckout: (transaction) {
            EasyLoading.dismiss();
          },
          onBeginCheckTransaction: (transaction) {
            EasyLoading.show(status: 'Checking Transaction...');
          },
          onFinishCheckTransaction: (transaction) {
            EasyLoading.dismiss();
          },
          onPaymentSuccess: (transaction) {
            EasyLoading.showSuccess('Payment Successful!');
          },
          onPaymentFail: (transaction) {
            EasyLoading.showError('Payment Failed!');
          },
        ),
      ),
    );
  }
}

更多关于Flutter支付功能插件aba_payment的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


aba_payment 是一个用于在 Flutter 应用中集成 ABA(Advanced Bank of Asia)支付功能的插件。它允许开发者轻松地在应用中处理支付事务。以下是如何使用 aba_payment 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 aba_payment 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  aba_payment: ^1.0.0  # 请使用最新版本

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

2. 初始化插件

在你的 Flutter 应用中,你需要初始化 aba_payment 插件。通常,你可以在 main.dart 文件中进行初始化:

import 'package:aba_payment/aba_payment.dart';

void main() {
  AbaPayment.initialize(
    merchantId: 'YOUR_MERCHANT_ID',
    apiKey: 'YOUR_API_KEY',
    isSandbox: true,  // 测试环境设置为 true,生产环境设置为 false
  );
  runApp(MyApp());
}

3. 发起支付

在你的应用中,你可以使用 AbaPayment 类来发起支付请求。以下是一个简单的示例:

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

class PaymentPage extends StatelessWidget {
  Future<void> _makePayment() async {
    try {
      final response = await AbaPayment.makePayment(
        amount: 100.0,  // 支付金额
        currency: 'USD',  // 货币类型
        description: 'Test Payment',  // 支付描述
        customerEmail: 'customer@example.com',  // 客户邮箱
      );

      if (response['status'] == 'success') {
        // 支付成功处理
        print('Payment successful: ${response['transactionId']}');
      } else {
        // 支付失败处理
        print('Payment failed: ${response['message']}');
      }
    } catch (e) {
      // 异常处理
      print('Error: $e');
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('ABA Payment')),
      body: Center(
        child: ElevatedButton(
          onPressed: _makePayment,
          child: Text('Pay with ABA'),
        ),
      ),
    );
  }
}
回到顶部