Flutter支付插件alatpay_flutter的使用

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

Flutter支付插件alatpay_flutter的使用

AlatPay支付SDK

AlatPayFlutter 类是一个 Flutter 小部件,允许你在 Flutter 项目中集成 WEMA 银行的 AlatPay 支付网关。它提供了一个 WebView,加载包含交易详情的 AlatPay 支付页面。该类处理来自支付网关的响应,并提供了用于处理成功交易和错误的回调函数。该类需要 metaDatabusinessIdapiKeyamount 等参数来处理支付。它支持 Android、iOS 和 Web 平台。其他平台即将推出。

作者

特性

  • 与 AlatPay 支付网关集成AlatPayFlutter 类允许你轻松地将 Moamalat 支付网关集成到你的 Flutter 应用中。
  • WebView 集成:该类提供一个 WebView,加载 AlatPay 的支付页面并处理交易详情。
  • 交易处理:该类处理来自支付网关的响应,并提供回调函数以处理成功交易和错误。
  • 安全交易:该类生成 AlatPay 所需的安全哈希,确保交易安全。
  • 可定制化:该类可定制,并允许你配置 apiKeybusinessIdcurrencyamountmetaData 等参数以处理支付。

总的来说,AlatPayFlutter 类提供了一种方便且安全的方式将 AlatPay 支付网关集成到你的 Flutter 应用中。

文档

  • <code>businessId</code>:从 AlatPay 获取的企业 ID。
  • <code>amount</code>:交易金额。
  • <code>apiKey</code>:从 AlatPay 获取的 API 密钥。
  • <code>onTransaction</code>:当支付成功完成时调用的回调函数。
  • <code>onClose</code>:当服务关闭时调用的回调函数。

安装

要使用此包,请在 pubspec.yaml 文件中添加 alatpay_flutter 作为依赖项。

dependencies:
  alatpay_flutter: latest_version

示例

如何使用 alatpay_flutter

import 'dart:io';

import 'package:alatpay_flutter/alatpay_flutter.dart';
import 'package:flutter/material.dart';
import 'package:get/route_manager.dart';

import 'screens/success.dart';
import 'src/constants.dart';
import 'src/controllers.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // 这个小部件是你的应用的根。
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'AlatPay',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: kAccentColor),
        useMaterial3: true,
      ),
      home: const PaymentScreen(),
    );
  }
}

class PaymentScreen extends StatefulWidget {
  const PaymentScreen({Key? key}) : super(key: key);

  [@override](/user/override)
  State<PaymentScreen> createState() => _PaymentScreenState();
}

class _PaymentScreenState extends State<PaymentScreen> {
  // 布尔变量
  bool isLoading = false;

  // 函数
  void pay() {
    String apiKey = "alatPayPrimaryKey";
    String businessId = "alatPayBuinessId";
    String email = "johndoe@gmail.com";
    String phone = "+2348047589684";
    String firstName = "John";
    String lastName = "Doe";
    String currency = 'NGN';
    String amount = "20000";

    setState(() {
      isLoading = true;
    });

    try {
      Navigator.push(
        context,
        MaterialPageRoute(builder: (context) {
          return AlatPayFlutter(
            apiKey: apiKey,
            businessId: businessId,
            email: email,
            phone: phone,
            firstName: firstName,
            lastName: lastName,
            currency: currency,
            amount: amount,
            onClose: () {
              Get.close(2);
            },
            onTransaction: (response) async {
              // 处理成功交易
              Get.to(const SuccessScreen());
            },
          );
        }),
      );
      setState(() {
        isLoading = false;
      });
    } on SocketException {
      ApiProcessorController.errorSnack("请连接到互联网");
    } catch (e) {
      print(e.toString());
    }
    setState(() {
      isLoading = false;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        elevation: 10,
        title: Text(
          "AlatPay",
          style: TextStyle(
            color: Theme.of(context).appBarTheme.backgroundColor,
            fontSize: 20,
            fontWeight: FontWeight.w600,
          ),
        ),
      ),
      body: SafeArea(
        child: Center(
          child: ElevatedButton(
            onPressed: pay,
            style: ElevatedButton.styleFrom(
              disabledBackgroundColor: Colors.grey.shade300,
              backgroundColor: Theme.of(context).primaryColor,
              elevation: 10,
              shape: RoundedRectangleBorder(
                borderRadius: BorderRadius.circular(20),
              ),
              shadowColor: Colors.black.withOpacity(0.4),
            ),
            child: isLoading
                ? const Padding(
                    padding: EdgeInsets.all(10),
                    child: CircularProgressIndicator(color: Colors.white),
                  )
                : const Text(
                    "立即支付",
                    textAlign: TextAlign.center,
                    style: TextStyle(
                      color: Colors.white,
                      fontSize: 18,
                      fontFamily: "Sen",
                      fontWeight: FontWeight.w700,
                    ),
                  ),
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


在Flutter项目中集成并使用alatpay_flutter插件进行支付操作,可以遵循以下步骤。以下是一个简要的代码示例,展示如何集成和使用该插件。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  alatpay_flutter: ^最新版本号  # 请替换为实际的最新版本号

然后运行flutter pub get来获取依赖。

2. 配置Android和iOS

根据alatpay_flutter的官方文档,可能需要在AndroidManifest.xmlInfo.plist中添加一些配置。具体配置请参考官方文档,因为这部分内容可能会随着插件版本的更新而变化。

3. 初始化插件并调用支付接口

在你的Flutter项目中,初始化alatpay_flutter插件并调用支付接口。以下是一个简化的示例:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('AlatPay Flutter Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              _initiatePayment();
            },
            child: Text('Pay Now'),
          ),
        ),
      ),
    );
  }

  Future<void> _initiatePayment() async {
    try {
      // 替换为你的实际支付参数
      String merchantId = 'your_merchant_id';
      String amount = '100.00'; // 金额
      String currency = 'USD'; // 货币单位
      String orderId = 'order_${DateTime.now().millisecondsSinceEpoch}'; // 订单号
      String description = 'Test Payment'; // 支付描述
      String redirectUrl = 'https://yourwebsite.com/success'; // 支付成功后的回调URL
      String notifyUrl = 'https://yourwebsite.com/notify'; // 支付通知URL

      // 创建支付请求
      AlatPayRequest request = AlatPayRequest(
        merchantId: merchantId,
        amount: amount,
        currency: currency,
        orderId: orderId,
        description: description,
        redirectUrl: redirectUrl,
        notifyUrl: notifyUrl,
      );

      // 发起支付
      AlatPayResponse response = await AlatPayFlutter.startPayment(request);

      // 处理支付响应
      if (response.status == 'success') {
        // 支付成功处理逻辑
        print('Payment successful!');
      } else if (response.status == 'pending') {
        // 支付待处理逻辑
        print('Payment pending...');
      } else {
        // 支付失败处理逻辑
        print('Payment failed: ${response.message}');
      }
    } catch (e) {
      // 错误处理
      print('Error initiating payment: $e');
    }
  }
}

// 定义AlatPayRequest和AlatPayResponse类(假设插件没有自带这些类)
class AlatPayRequest {
  final String merchantId;
  final String amount;
  final String currency;
  final String orderId;
  final String description;
  final String redirectUrl;
  final String notifyUrl;

  AlatPayRequest({
    required this.merchantId,
    required this.amount,
    required this.currency,
    required this.orderId,
    required this.description,
    required this.redirectUrl,
    required this.notifyUrl,
  });
}

class AlatPayResponse {
  final String status;
  final String message;

  AlatPayResponse({
    required this.status,
    required this.message,
  });
}

注意

  • 上面的AlatPayRequestAlatPayResponse类是基于假设创建的,因为实际插件可能会自带这些类或者有不同的数据结构。你需要根据alatpay_flutter插件的实际API文档来调整这些类。
  • merchantId, amount, currency, orderId, description, redirectUrl, 和 notifyUrl等参数需要根据实际情况填写。
  • 确保你已经按照alatpay_flutter插件的官方文档在服务器端进行了相应的配置,以便能够正确处理支付通知和回调。

这个示例提供了一个基本的框架,你可以根据实际需求进行扩展和修改。

回到顶部