Flutter集成Squad SDK插件flutter_squad_sdk的使用

Flutter集成Squad SDK插件flutter_squad_sdk的使用

简介

这是一个Flutter包,它使你能够在Android和iOS应用程序中集成Squad支付网关的功能。它也适合使用Firebase或Supabase作为后端的开发者。你可以在你的Flutter应用中发起支付并完成结账。

iOS预览

iOS截图 iOS截图

Android预览

Android截图 Android截图

功能

  • 发起支付并结账
  • 如果不从后端服务器生成,则仅结账
  • 使用交易参考验证支付

开始使用

要开始使用,请确保在https://squadco.com/ 创建一个账户。如果你需要测试账户,可以创建一个在https://sandbox.squadco.com/login 的账户,仅用于开发。

使用方法

要发起支付并结账,你需要调用SquadPay类中的initializeAndCheckout()函数。

//发起支付并结账
SquadPay.initializeAndCheckout(
  context, 
  Environment.test, 
  "<-请输入您的Secret Key这里->",     //您的Secret Key可以在squadco.com仪表板上找到
  InitialPayload(
    amount: 55000,
    email: "nalz@gmail.com",
    currency: "NGN",
    initiateType: "inline",
    transactionRef: SquadPay.generateTransactionRef(16), //生成随机交易参考
    callbackUrl: "https://google.com",
  )
);

如果从其他来源(例如后端服务器)初始化支付后进行结账,可以调用checkOut()函数:

//仅结账
SquadPay.checkOut(
  context,
  '<-请输入您的结账URL这里->',
  '<-请输入您的回调URL这里->'
);

要验证交易是否成功,可以使用以下代码片段:

//验证交易
final transactionResponse = await SquadPay.verifyTransaction(
  Environment.test,
  "<-请输入您的SECRET KEY这里->",
  "yVJ2KXwvtc" // 交易参考
);

完整示例Demo

以下是完整的示例代码:

import 'package:flutter/material.dart';
import 'package:flutter_squad_sdk/flutter_squad_sdk.dart';
import 'package:dio/dio.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Squad SDK Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Squad SDK Demo'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String message = "";

  void initiatePaymentMethod() {
    SquadPay.initializeAndCheckout(
      context,
      Environment.test,
      "<-请输入您的SECRET KEY这里->",
      InitialPayload(
        amount: 55000,
        email: "nalz@gmail.com",
        currency: "NGN",
        initiateType: "inline",
        transactionRef: SquadPay.generateTransactionRef(16),
        callbackUrl: "https://google.com",
      )
    );
  }

  void checkOutMethod() async {
    String result = await SquadPay.checkOut(context,
        "https://checkout.paystack.com/25tw9jvmphdlbkt", "https://google.com");
    message = result;
  }

  void verifyPayment() async {
    try {
      final transactionResponse = await SquadPay.verifyTransaction(
        Environment.test,
        "<-请输入您的SECRET KEY这里->",
        "yVJ2KXwvtc" // 交易参考
      );
      setState(() {
        message = transactionResponse.data!.transactionStatus!;
      });
    } on DioException catch (e) {
      message = DioExceptions.fromDioError(e).toString();
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.spaceAround,
          children: [
            ElevatedButton(
              onPressed: initiatePaymentMethod,
              child: const Text("初始化支付")
            ),
            ElevatedButton(
              onPressed: checkOutMethod,
              child: const Text("结账")
            ),
            ElevatedButton(
              onPressed: verifyPayment,
              child: const Text("验证交易")
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter集成Squad SDK插件flutter_squad_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


要在Flutter应用中集成Squad SDK插件 flutter_squad_sdk,您需要按照以下步骤进行操作:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  flutter_squad_sdk: ^1.0.0  # 请确保使用最新版本

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

2. 初始化 SDK

在您的Flutter应用中,您需要在应用启动时初始化Squad SDK。通常,您可以在 main.dart 文件中进行初始化:

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

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

  // 初始化Squad SDK
  await SquadSDK.initialize(
    apiKey: 'YOUR_API_KEY',
    environment: SquadEnvironment.sandbox, // 或 SquadEnvironment.production
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Squad SDK Demo',
      home: HomeScreen(),
    );
  }
}

3. 使用 SDK 功能

在应用的其他部分,您可以使用Squad SDK提供的功能。例如,启动支付流程:

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

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Squad SDK Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () async {
            try {
              // 启动支付流程
              final result = await SquadSDK.startPayment(
                amount: 1000, // 金额(以最小单位,例如分)
                email: 'user@example.com',
                currency: 'NGN', // 货币代码
                reference: 'unique_reference', // 唯一参考号
              );

              if (result.status == SquadPaymentStatus.success) {
                // 支付成功处理
                print('Payment successful: ${result.message}');
              } else {
                // 支付失败处理
                print('Payment failed: ${result.message}');
              }
            } catch (e) {
              // 异常处理
              print('Error: $e');
            }
          },
          child: Text('Make Payment'),
        ),
      ),
    );
  }
}

4. 处理支付结果

startPayment 方法中,您可以根据返回的 SquadPaymentResult 对象来处理支付结果。SquadPaymentResult 包含支付状态和消息。

5. 配置环境

在初始化SDK时,您可以选择使用 SquadEnvironment.sandbox(用于测试)或 SquadEnvironment.production(用于生产环境)。确保在发布应用时使用生产环境。

6. 其他功能

flutter_squad_sdk 可能还提供了其他功能,例如查询交易状态、验证支付等。请参考官方文档以获取更多详细信息。

7. 调试与测试

在开发过程中,您可以使用Squad的沙盒环境进行测试。确保您使用的是测试API密钥和测试账户。

8. 发布应用

在发布应用之前,请确保您已经切换到生产环境,并且使用生产API密钥。

9. 处理错误和异常

在使用SDK时,务必处理可能出现的错误和异常,以确保应用在出现问题时能够优雅地处理。

10. 参考文档

请参考 flutter_squad_sdk 的官方文档以获取更多详细信息和高级用法。

Official Flutter Squad SDK Documentation

回到顶部