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
更多关于Flutter生成UUID与M-Pesa集成插件uuid_mpesa的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中生成UUID并与M-Pesa集成插件uuid_mpesa
一起使用,你可以按照以下步骤进行操作。
1. 安装依赖
首先,你需要在pubspec.yaml
文件中添加uuid
和uuid_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');
});
}
}