Flutter移动支付插件uganda_mobile_money的使用

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

Flutter移动支付插件uganda_mobile_money的使用

特性

  • ✅ 接收乌干达的移动货币支付
  • ✅ 支持MTN Momo交易
  • ✅ 支持Airtel Money交易
  • ✅ 在添加价值前验证费用

开始使用

首先,获取您的API密钥,前往 FlutterWave仪表板

您还可以阅读FlutterWave的文档。访问 FlutterWave文档 获取更多信息。

使用方法

创建一个UgandaMobileMoney类的实例:

const secretKey = "FLWSECK-XXXXX-X"; // FlutterWave 秘钥
UgandaMobileMoney _mobileMoney = UgandaMobileMoney(secretKey); 

发起支付:

void chargeClient() async {
    MomoPayResponse response = await _mobileMoney.chargeClient(
        MomoPayRequest(
            txRef: "MC-01928403", // 每笔交易应具有唯一性
            amount: "1500", // 收取金额(单位:乌干达先令)
            email: "tst@gmail.com", // 被收费者的邮箱
            phoneNumber: "256123456723", // 客户电话号码
            fullname: "Ojangole Joran", // 客户全名
            redirectUrl: "https://yoursite.com", // 支付后重定向URL
            voucher: "128373", // 适用于Vodafone,可以忽略
            network: UgandaNetwork.mtn // 网络类型,可以是mtn或airtel
            ),
        );

    print(response.message);
}

验证交易:

void verifyTransaction(String taxRef) {
    _mobileMoney.verifyTransaction(taxRef).then((value) {
      if (value == TransactionStatus.failed) {
        ScaffoldMessenger.of(context)
            .showSnackBar(SnackBar(content: Text("Failed")));
      } else if (value == TransactionStatus.pending) {
        ScaffoldMessenger.of(context)
            .showSnackBar(SnackBar(content: Text("Pending")));
      } else if (value == TransactionStatus.success) {
        ScaffoldMessenger.of(context)
            .showSnackBar(SnackBar(content: Text("Success")));
      } else if (value == TransactionStatus.unknown) {
        ScaffoldMessenger.of(context)
            .showSnackBar(SnackBar(content: Text("Unknown")));
      } else {
        ScaffoldMessenger.of(context)
            .showSnackBar(SnackBar(content: Text("Unknown")));
      }
    });
}

额外信息

如果您有任何功能请求或遇到问题,请通过仓库联系我。


完整示例代码

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

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

// 创建一个简单的页面来测试支付和验证
class PaymentPage extends StatefulWidget {
  [@override](/user/override)
  _PaymentPageState createState() => _PaymentPageState();
}

class _PaymentPageState extends State<PaymentPage> {
  final String secretKey = "FLWSECK-XXXXX-X"; // 替换为实际的密钥
  final UgandaMobileMoney _mobileMoney = UgandaMobileMoney(secretKey);

  void initState() {
    super.initState();
    chargeClient();
  }

  void chargeClient() async {
    MomoPayResponse response = await _mobileMoney.chargeClient(
        MomoPayRequest(
            txRef: "MC-01928403", // 唯一的交易标识符
            amount: "1500", // 收取金额(单位:乌干达先令)
            email: "tst@gmail.com", // 被收费者的邮箱
            phoneNumber: "256123456723", // 客户电话号码
            fullname: "Ojangole Joran", // 客户全名
            redirectUrl: "https://yoursite.com", // 支付后重定向URL
            voucher: "128373", // 适用于Vodafone,可以忽略
            network: UgandaNetwork.mtn // 网络类型,可以是mtn或airtel
            ),
        );

    print(response.message);
  }

  void verifyTransaction(String taxRef) {
    _mobileMoney.verifyTransaction(taxRef).then((value) {
      if (value == TransactionStatus.failed) {
        ScaffoldMessenger.of(context)
            .showSnackBar(SnackBar(content: Text("Failed")));
      } else if (value == TransactionStatus.pending) {
        ScaffoldMessenger.of(context)
            .showSnackBar(SnackBar(content: Text("Pending")));
      } else if (value == TransactionStatus.success) {
        ScaffoldMessenger.of(context)
            .showSnackBar(SnackBar(content: Text("Success")));
      } else if (value == TransactionStatus.unknown) {
        ScaffoldMessenger.of(context)
            .showSnackBar(SnackBar(content: Text("Unknown")));
      } else {
        ScaffoldMessenger.of(context)
            .showSnackBar(SnackBar(content: Text("Unknown")));
      }
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Uganda Mobile Money'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            verifyTransaction("MC-01928403");
          },
          child: Text('Verify Transaction'),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中集成和使用 uganda_mobile_money 插件的一个基本示例。这个插件假设是用于乌干达的移动支付,但请注意,由于实际插件的API和功能可能随版本变化,并且由于我无法访问实时插件代码或文档(这些通常从插件的官方仓库或pub.dev页面获得),下面的示例将基于一般的Flutter插件集成步骤和假设的API调用。

首先,确保你已经在 pubspec.yaml 文件中添加了 uganda_mobile_money 插件的依赖。如果这个插件在pub.dev上存在,你可以这样添加:

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

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

接下来,在你的Flutter项目中,你需要导入这个插件并在需要的地方使用它。以下是一个基本的代码示例,展示如何初始化插件并进行支付操作(假设插件提供了这些功能):

import 'package:flutter/material.dart';
import 'package:uganda_mobile_money/uganda_mobile_money.dart'; // 假设这是插件的导入路径

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Uganda Mobile Money Example'),
        ),
        body: Center(
          child: MobileMoneyPaymentButton(),
        ),
      ),
    );
  }
}

class MobileMoneyPaymentButton extends StatefulWidget {
  @override
  _MobileMoneyPaymentButtonState createState() => _MobileMoneyPaymentButtonState();
}

class _MobileMoneyPaymentButtonState extends State<MobileMoneyPaymentButton> {
  void initiatePayment() async {
    try {
      // 假设插件提供了initPayment方法,需要传递一些参数如金额、手机号等
      String result = await UgandaMobileMoney.initPayment(
        amount: 1000, // 金额,单位假设为乌干达先令
        phoneNumber: '256771234567', // 用户手机号
        // 可能还有其他参数,如支付类型、描述等
      );

      // 处理支付结果
      print('Payment result: $result');
      // 根据结果更新UI,例如显示支付成功或失败的消息
    } catch (e) {
      // 处理错误
      print('Payment error: $e');
      // 显示错误信息给用户
    }
  }

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: initiatePayment,
      child: Text('Initiate Payment'),
    );
  }
}

注意

  1. 上述代码是一个假设性的示例,实际插件的API调用和参数可能不同。
  2. UgandaMobileMoney.initPayment 方法及其参数是假设的,你需要参考插件的实际文档来确定正确的方法名和参数。
  3. 错误处理和UI更新也是基于假设的,你需要根据实际需求进行调整。

为了获得准确的插件使用方法和API文档,你应该直接访问插件的pub.dev页面或GitHub仓库,查看其README文件和示例代码。

回到顶部