Flutter支付处理插件paydunya的使用

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

Flutter支付处理插件paydunya的使用

简介

Paydunya 是一个实现了 Paydunya API 支付方法的包。此包简化了 Paydunya 支付 API 的集成,提供了大部分可用的支付方式。

Pub GitHub License GitHub stars

文档

有关以下主题的详细信息,请参阅API文档:

您可以点击 这里 查看使用该包的示例。

作者

许可证

BSD-3-Clause

示例代码

下面是一个完整的示例demo,展示了如何使用 paydunya 包进行支付处理。

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

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Example Paydunya',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Example Paydunya'),
    );
  }
}

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

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

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text(widget.title)),
      body: Center(
        child: ElevatedButton(
          onPressed: _toggle,
          child: const Text("Execute"),
        ),
      ),
    );
  }

  void _toggle() async {
    try {
      // API 和环境访问密钥
      final keysApi = KeysApi(
        mode: Environment.test,
        masterKey: 'wQzk9ZwR-Qq9m-0hD0-zpud-je5coGC3FHKW',
        privateKey: 'test_private_rMIdJM3PLLhLjyArx9tF3VURAF5',
        token: 'IivOiOxGJuWhc5znlIiK',
      );

      final paydunya = Paydunya(keysApi: keysApi);

      // 创建商店和发票信息
      const store = Store(name: 'Royal Event');
      const invoice = Invoice(totalAmount: 2000);

      const billing = Billing(
        store: store,
        invoice: invoice,
      );

      // 创建CheckoutInvoice
      final checkoutInvoice =
          await paydunya.createChekoutInvoice(billing: billing);

      debugPrint("Token: ${checkoutInvoice.token}");

      // 填写付款人信息
      final payerInfo = PayerInfo(
        fullName: 'Magatte Diallo',
        phone: '771776787',
        otp: 808656,
        paymentToken: checkoutInvoice.token,
      );

      // 使用指定的支付方式进行支付
      final response = await paydunya.pay(
        paymentMethod: PaymentMethod.orangeMoneySenegal,
        payerInfo: payerInfo,
      );

      // 显示Wave支付链接
      debugPrint("Wave URL: ${response.url}");

      // 验证支付状态
      final statusPaiement = await paydunya.verifyStatePayment(
        invoiceToken: checkoutInvoice.token,
      );

      // 显示支付状态
      debugPrint("Status: ${statusPaiement.status}");
    } catch (e) {
      debugPrint(e.toString());
    }
  }
}

说明

  1. 初始化: 在 _toggle 方法中,我们首先创建了一个 KeysApi 对象来设置 API 和环境访问密钥。
  2. 创建发票: 接着创建了一个 StoreInvoice 对象,并用它们构建了一个 Billing 对象。
  3. 发起支付请求: 使用 createChekoutInvoice 方法创建了一个 CheckoutInvoice 并获取了支付令牌。
  4. 填写付款人信息: 构建 PayerInfo 对象以包含付款人的详细信息。
  5. 执行支付: 使用 pay 方法执行支付操作,并指定了支付方式为 Orange Money Senegal。
  6. 验证支付状态: 最后通过 verifyStatePayment 方法验证支付状态并打印结果。

这个示例展示了从初始化到完成支付的整个流程。根据实际需求,您可能需要调整 API 密钥、商店名称、发票金额等参数。希望这能帮助您更好地理解和使用 Paydunya 插件!


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

1 回复

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


当然,下面是一个关于如何在Flutter项目中使用paydunya插件进行支付处理的示例代码。这个示例假设你已经设置好了Flutter开发环境,并且已经添加了paydunya依赖到你的pubspec.yaml文件中。

首先,确保你的pubspec.yaml文件中包含以下依赖:

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

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

接下来,我们将展示如何在Flutter应用中使用paydunya插件进行支付处理。以下是一个简化的示例:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter PayDunya Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: PayDunyaDemoScreen(),
    );
  }
}

class PayDunyaDemoScreen extends StatefulWidget {
  @override
  _PayDunyaDemoScreenState createState() => _PayDunyaDemoScreenState();
}

class _PayDunyaDemoScreenState extends State<PayDunyaDemoScreen> {
  final PayDunya _payDunya = PayDunya();

  Future<void> _initiatePayment() async {
    try {
      // 替换为实际的支付参数
      final Map<String, dynamic> paymentDetails = {
        'amount': 100.0, // 支付金额
        'currency': 'USD', // 货币类型
        'description': 'Test Payment', // 支付描述
        // 其他必要的支付参数,根据PayDunya的API文档进行填充
      };

      // 发起支付请求
      final PayDunyaResponse response = await _payDunya.initiatePayment(
        paymentDetails: paymentDetails,
        successCallback: (result) {
          // 支付成功后的回调处理
          print('Payment successful: $result');
          // 可以在这里处理支付成功后的逻辑,比如更新UI或发送通知
        },
        cancelCallback: () {
          // 用户取消支付后的回调处理
          print('Payment cancelled');
          // 可以在这里处理支付取消后的逻辑
        },
        failureCallback: (error) {
          // 支付失败后的回调处理
          print('Payment failed: $error');
          // 可以在这里处理支付失败后的逻辑
        },
      );

      // 根据响应结果做进一步处理
      if (response.status == 'success') {
        // 支付请求成功发送
      } else {
        // 支付请求发送失败
      }
    } catch (e) {
      // 处理异常
      print('Error initiating payment: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('PayDunya Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _initiatePayment,
          child: Text('Initiate Payment'),
        ),
      ),
    );
  }
}

注意

  1. API密钥和配置:在实际使用中,你需要在PayDunya后台获取你的API密钥,并根据PayDunya的文档配置你的支付参数。
  2. 安全性:不要在客户端代码中硬编码敏感信息,如API密钥。考虑使用环境变量或安全的存储机制。
  3. 支付回调:在实际应用中,支付成功、失败和取消的回调处理通常涉及更新用户界面、发送通知或执行其他业务逻辑。
  4. 错误处理:示例代码中的错误处理相对简单,实际应用中应包含更详细的错误处理和用户反馈机制。

这个示例提供了一个基本的框架,展示了如何在Flutter应用中使用paydunya插件进行支付处理。根据具体需求,你可能需要调整和扩展这个示例。

回到顶部