Flutter生成UUID与M-Pesa集成插件uuid_mpesa的使用

Flutter生成UUID与M-Pesa集成插件uuid_mpesa的使用

简介

uuid_mpesa 是一个用于 Flutter 的 Dart 库,旨在帮助开发者轻松生成 UUID 并与 M-Pesa 集成。该库提供了便捷的方法来生成唯一的标识符,并支持与 M-Pesa API 的交互。

使用方法

安装

首先,在 pubspec.yaml 文件中添加以下依赖项:

dependencies:
  uui_mpesa: ^版本号

然后运行以下命令以安装依赖项:

flutter pub get

导入库

在您的 Dart 文件中导入 uuid_mpesa 库:

import 'package:uui_mpesa/uui_mpesa.dart';

生成UUID

使用 UUIDMpesa.referencia 方法生成指定长度的 UUID。例如,生成一个长度为 10 的 UUID:

void main() {
  // 生成长度为 10 的 UUID
  var a = UUIDMpesa.referencia(10);

  // 输出生成的 UUID
  print("生成的 UUID: $a");
}

代码解释

  • UUIDMpesa.referencia(length):此方法会根据指定的长度生成一个随机字符串作为 UUID。
  • print("生成的 UUID: $a"):打印生成的 UUID 值。

与M-Pesa集成

假设您已经配置好 M-Pesa API 的相关参数(如 Consumer Key、Consumer Secret 和沙箱 URL),可以使用 uuid_mpesa 插件进行支付请求。以下是一个完整的示例:

import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:uui_mpesa/uui_mpesa.dart';

void main() async {
  // 生成订单参考号
  String referencia = UUIDMpesa.referencia(10);

  // M-Pesa API 参数
  final String consumerKey = "您的Consumer Key";
  final String consumerSecret = "您的Consumer Secret";
  final String sandboxUrl = "https://sandbox.safaricom.co.ke";

  // 获取访问令牌
  String token = await getAccessToken(consumerKey, consumerSecret);

  // 发起支付请求
  Map<String, dynamic> response = await requestSTKPush(
    token,
    sandboxUrl,
    referencia,
    "2547XXXXXXXX",
    "1",
    "http://yourcallbackurl.com"
  );

  // 打印支付请求结果
  print("支付请求结果: ${response.toString()}");
}

// 获取访问令牌
Future<String> getAccessToken(String consumerKey, String consumerSecret) async {
  final String auth = base64Encode(utf8.encode('$consumerKey:$consumerSecret'));
  final response = await http.post(
    Uri.parse("$sandboxUrl/oauth/v1/generate?grant_type=client_credentials"),
    headers: {
      "Authorization": "Basic $auth",
    },
  );
  if (response.statusCode == 200) {
    return jsonDecode(response.body)['access_token'];
  } else {
    throw Exception("Failed to get access token");
  }
}

// 请求STK Push
Future<Map<String, dynamic>> requestSTKPush(
  String token,
  String sandboxUrl,
  String referencia,
  String phoneNumber,
  String amount,
  String callbackURL,
) async {
  final response = await http.post(
    Uri.parse("$sandboxUrl/mpesa/stkpush/v1/processrequest"),
    headers: {
      "Authorization": "Bearer $token",
      "Content-Type": "application/json",
    },
    body: jsonEncode({
      "BusinessShortCode": "174379", // 替换为您的业务短码
      "Password": "MTIzNDU2Nzg5MQ==", // 替换为您的密码
      "Timestamp": "20230801", // 替换为当前日期
      "TransactionType": "CustomerPayBillOnline",
      "Amount": amount,
      "PartyA": phoneNumber,
      "PartyB": "174379", // 替换为您的业务短码
      "PhoneNumber": phoneNumber,
      "CallBackURL": callbackURL,
      "AccountReference": referencia,
      "TransactionDesc": "测试支付",
    }),
  );

  if (response.statusCode == 200) {
    return jsonDecode(response.body);
  } else {
    throw Exception("Failed to request STK Push");
  }
}

更多关于Flutter生成UUID与M-Pesa集成插件uuid_mpesa的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter生成UUID与M-Pesa集成插件uuid_mpesa的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中生成UUID并与M-Pesa集成插件uuid_mpesa一起使用,你可以按照以下步骤进行操作。

1. 安装依赖

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

dependencies:
  flutter:
    sdk: flutter
  uuid: ^3.0.6  # 用于生成UUID
  uuid_mpesa: ^1.0.0  # 假设这是M-Pesa集成插件的名称

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

2. 生成UUID

使用uuid包生成UUID。你可以在需要的地方生成UUID,例如在发起M-Pesa支付请求时。

import 'package:uuid/uuid.dart';

void generateUUID() {
  var uuid = Uuid();
  String transactionId = uuid.v4();  // 生成一个随机的UUID
  print('Generated UUID: $transactionId');
}

3. 使用uuid_mpesa插件

假设uuid_mpesa插件提供了一个方法来发起M-Pesa支付请求,并且需要传递一个UUID作为交易ID。

import 'package:uuid_mpesa/uuid_mpesa.dart';
import 'package:uuid/uuid.dart';

void initiateMpesaPayment() {
  var uuid = Uuid();
  String transactionId = uuid.v4();  // 生成一个随机的UUID

  // 使用uuid_mpesa插件发起支付请求
  UuidMpesa.initiatePayment(
    transactionId: transactionId,
    amount: '100',  // 支付金额
    phoneNumber: '254712345678',  // 用户手机号
    callbackUrl: 'https://your-callback-url.com',  // 回调URL
  ).then((response) {
    print('M-Pesa Payment Response: $response');
  }).catchError((error) {
    print('Error initiating M-Pesa payment: $error');
  });
}

4. 处理回调

M-Pesa支付完成后,通常会回调你提供的callbackUrl。你需要在服务器端处理这个回调,并根据返回的交易状态更新你的应用状态。

5. 完整示例

以下是一个完整的示例,展示了如何生成UUID并调用uuid_mpesa插件发起M-Pesa支付。

import 'package:flutter/material.dart';
import 'package:uuid/uuid.dart';
import 'package:uuid_mpesa/uuid_mpesa.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('M-Pesa Payment Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: initiateMpesaPayment,
            child: Text('Initiate M-Pesa Payment'),
          ),
        ),
      ),
    );
  }

  void initiateMpesaPayment() {
    var uuid = Uuid();
    String transactionId = uuid.v4();  // 生成一个随机的UUID

    // 使用uuid_mpesa插件发起支付请求
    UuidMpesa.initiatePayment(
      transactionId: transactionId,
      amount: '100',  // 支付金额
      phoneNumber: '254712345678',  // 用户手机号
      callbackUrl: 'https://your-callback-url.com',  // 回调URL
    ).then((response) {
      print('M-Pesa Payment Response: $response');
    }).catchError((error) {
      print('Error initiating M-Pesa payment: $error');
    });
  }
}
回到顶部