Flutter支付集成插件thawani_payment的使用

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

Flutter支付集成插件thawani_payment的使用

1. 插件简介

thawani_payment 是一个帮助你在Flutter应用中集成Thawani支付网关的插件。通过这个插件,你可以轻松地使用Thawani的Checkout API来实现支付功能。

Thawani Flutter

2. 开发者信息

该插件由Nasr Al-Rahbi开发。

3. 环境要求

  • Android: SDK 19+ 或 20+
  • iOS: iOS 9+

4. 设置步骤

4.1. 添加依赖

pubspec.yaml 文件中添加 thawani_payment 依赖:

dependencies:
  thawani_payment: <最新版本>
4.2. Android配置

确保在 android/app/build.gradle 文件中设置 minSdkVersion 为19或更高:

android {
    defaultConfig {
        minSdkVersion 19
    }
}

5. 使用示例

5.1. 完整示例代码

以下是一个完整的示例代码,展示了如何在Flutter应用中使用 thawani_payment 插件进行支付。

import 'package:flutter/material.dart';
import 'package:thawani_payment/models/products.dart';
import 'package:thawani_payment/pay.dart';
import 'package:thawani_payment/viewmodel/thawani_customerdelete.dart';

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.green,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

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

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Thawani Payment Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            SizedBox(
              width: 200,
              height: 50,
              child: ElevatedButton(
                onPressed: () {
                  Thawani.pay(
                    context,
                    // 是否允许保存支付卡
                    saveCard: true,
                    // 是否启用测试模式
                    testMode: true,
                    // Thawani API密钥
                    api: 'rRQ26GcsZzoEhbrP2HZvLYDbn9C9et',
                    // Thawani Publishable Key
                    pKey: 'HGvTMLDssJghr9tlN9gr4DVYt0qyBy',
                    // 商户ID
                    clintID: '123456',
                    // 错误处理回调
                    onError: (e) {
                      print(e);
                    },
                    // 商品列表
                    products: [
                      Product(name: "商品名称", quantity: 2, unitAmount: 1234)
                    ],
                    // 创建会话成功回调
                    onCreate: (v) {
                      print(v.data);
                    },
                    // 用户取消支付回调
                    onCancelled: (v) {
                      print(v);
                      Navigator.push(context,
                          MaterialPageRoute(builder: (builder) => const C()));
                    },
                    // 支付成功回调
                    onPaid: (v) {
                      print(v);
                      Navigator.push(context,
                          MaterialPageRoute(builder: (builder) => const V()));
                    },
                    // 获取已保存客户ID回调
                    getSavedCustomer: (id) {
                      print(id);
                    },
                    // 创建新客户回调
                    onCreateCustomer: (data) {},
                    // 其他元数据
                    metadata: {
                      "order_id": "123",
                      "customer_id": "123",
                      "customer_name": "John Doe",
                      "customer_email": "s"
                    },
                  );
                },
                child: const Text("使用Thawani支付"),
              ),
            ),
            const SizedBox(height: 50),
            ElevatedButton(
              onPressed: () async {
                // 获取已保存的客户ID
                print(await ThawaniCustomer.get());
              },
              child: const Text("获取已保存客户ID"),
            ),
            const SizedBox(height: 50),
            ElevatedButton(
              onPressed: () {
                // 删除已保存的客户ID
                print(ThawaniCustomer.delete());
              },
              child: const Text("删除已保存客户ID"),
            )
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是一个关于如何在Flutter项目中集成并使用thawani_payment插件进行支付的代码示例。这个示例将展示如何设置插件、初始化支付会话以及处理支付结果。

1. 添加依赖

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

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

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

2. 配置Android和iOS

确保你已经在Android和iOS项目中配置了必要的支付权限和设置。这通常包括在AndroidManifest.xml中添加权限声明,以及在iOS的Info.plist中添加相关配置。

3. 初始化支付会话

在你的Flutter应用中,你需要初始化一个支付会话。以下是一个简单的示例,展示如何创建和启动支付会话:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Thawani Payment Integration'),
        ),
        body: PaymentScreen(),
      ),
    );
  }
}

class PaymentScreen extends StatefulWidget {
  @override
  _PaymentScreenState createState() => _PaymentScreenState();
}

class _PaymentScreenState extends State<PaymentScreen> {
  final ThawaniPayment _thawaniPayment = ThawaniPayment();

  @override
  Widget build(BuildContext context) {
    return Center(
      child: ElevatedButton(
        onPressed: () async {
          // 替换为实际的支付参数
          final Map<String, dynamic> paymentParams = {
            'merchantId': '你的商户ID',
            'transactionId': '你的交易ID',
            'amount': 100.0, // 交易金额,单位为最小货币单位(例如,对于阿联酋迪拉姆,1迪拉姆 = 100单位)
            'currency': 'AED', // 交易货币
            'description': '商品描述',
            // 其他必要的支付参数
          };

          try {
            final bool result = await _thawaniPayment.startPayment(paymentParams);
            if (result) {
              // 支付成功
              ScaffoldMessenger.of(context).showSnackBar(
                SnackBar(content: Text('支付成功')),
              );
            } else {
              // 支付失败或取消
              ScaffoldMessenger.of(context).showSnackBar(
                SnackBar(content: Text('支付失败或取消')),
              );
            }
          } catch (e) {
            // 处理异常
            ScaffoldMessenger.of(context).showSnackBar(
              SnackBar(content: Text('支付过程中发生错误: $e')),
            );
          }
        },
        child: Text('发起支付'),
      ),
    );
  }
}

4. 处理支付回调(可选)

在某些情况下,你可能需要处理支付完成后的回调,例如更新UI或处理支付结果。thawani_payment插件可能提供了回调接口,但具体实现取决于插件的版本和API设计。你可以查阅插件的官方文档或源代码以获取更多信息。

注意事项

  • 确保你已经正确配置了Thawani支付的商户信息和密钥。
  • 在生产环境中,不要硬编码敏感信息,如商户ID和密钥,应该使用安全的方式来存储和访问这些信息。
  • 测试支付时,请使用测试环境以避免产生真实的交易费用。

希望这个示例能帮助你在Flutter项目中集成thawani_payment插件。如果你遇到任何问题,建议查阅插件的官方文档或联系插件的维护者以获取帮助。

回到顶部