Flutter插件mpesadaraja的使用_Dart 包装器用于 M-Pesa Daraja API,由 Safaricom 提供。M-Pesa 是一种移动电话上的货币转账、融资和微型金融服务
Flutter插件mpesadaraja的使用_Dart 包装器用于 M-Pesa Daraja API,由 Safaricom 提供。M-Pesa 是一种移动电话上的货币转账、融资和微型金融服务
mpesa-daraja-plugin-flutter-dart
Dart 包装器用于 M-Pesa Daraja API,由 Safaricom 提供。M-Pesa 是一种移动电话上的货币转账、融资和微型金融服务,于 2007 年由 Vodafone 为 Safaricom 和 Vodacom 在肯尼亚和坦桑尼亚推出,它们分别是这两个国家最大的移动网络运营商。
功能
- [+] Lipa na M-Pesa(通过手机支付)
- [inprogress] C2B(客户到业务)
- [inprogress] B2B(业务到业务)
- [inprogress] C2B(客户到业务)
- [inprogress] B2C(业务到客户)
- [inprogress] TRANSACTION STATUS(交易状态)
- [inprogress] ACCOUNT BALANCE(账户余额)
- [inprogress] REVERSAL(撤销)
开始使用
在开始开发之前,你需要从 Safaricom 获取一些东西。
- Consumer Key
- Consumer Secret
- 测试凭证(仅限开发/沙箱环境)
- 如果你还没有,请登录或注册为 Safaricom 开发者 这里。
- 添加一个新的应用 这里。
- 你会被分配一个
Consumer Key
和Consumer Secret
。这些密钥将用于初始化 M-Pesa 实例。 - 获取测试凭证 这里。
- 获得的测试凭证仅在沙箱/开发环境中有效。请注意它们。
- 若要在生产环境中运行,则需要真实的凭证。
- 若要上线并获得真实凭证,请参考此指南。
在 pubspec.yaml
文件中添加依赖:
dependencies:
mpesadaraja: ^0.1.5
Lipa Na MPesa Online
Lipa Na M-Pesa Online 也称为 M-PESA express(STK 推送)是一种商户/企业发起的 C2B(客户到业务)支付。这个过程如以下详细序列图所示:
一旦你作为商户集成了该 API,你将能够向客户的手机发送付款提示(通常称为 STK 推送提示),请求他们在已注册的 M-PESA 手机号码上输入 M-PESA 密码以授权并完成支付。
创建 MpesaDaraja 对象
MpesaDaraja stkpush = MpesaDaraja(
consumerKey: '<your_consumer_key>',
consumerSecret: '<your_consumer_secret>',
passKey: '<your_pass_key>'
);
或者将其定义为 final
:
final stkpush = MpesaDaraja(
consumerKey: '<your_consumer_key>',
consumerSecret: '<your_consumer_secret>',
passKey: '<your_pass_key>'
);
参数说明
- consumerKey: 这是在 Daraja 2.0 网站上创建应用时生成的键。点击这里 创建你的密钥。
- consumerSecret: 这些密钥是机密的,所以在生产代码中请确保使用环境变量。
初始化过程
使用创建的对象调用 lipaNaMpesaStk()
函数来初始化该过程。如果函数在另一个函数内部,请确保使用 Future
和 await
调用该函数,并传递所需的参数:
await stk.lipaNaMpesaStk(
"<BusinessShortCode>",
1,
"254798071520",
"174379",
"254798071520",
"https://mydomain.com/path",
"accountReference",
"transactionDesc",
);
传递给 lipaNaMpesaStk()
函数的参数
- BusinessShortCode: 组织的短代码(Paybill 或 Buygoods - 一个 5 到 7 位数字的账户号),用于标识组织并接收交易。
- Amount: 交易金额(通常是数字值)。客户支付给短代码的钱。只支持整数。
- PartyA: 发送钱的手机号码。期望的参数是一个有效的 Safaricom 移动号码,格式为 2547XXXXXXXX。
- PartyB: 收款的组织。期望的参数是一个 5 到 7 位数字,如上面的短代码描述所示。这可以与 BusinessShortCode 的值相同。
- PhoneNumber: 接收 STK PIN 提示的移动号码。这个号码可以与 PartyA 的值相同。
- CallBackUrl: 回调 URL 是一个有效的安全 URL,用于接收来自 M-Pesa API 的通知。这是 M-Pesa A 发送结果的端点。
- AccountReference: 账户引用:这是一个由系统定义的字母数字参数,作为 CustomerPayBillOnline 交易类型的交易标识符。除了业务名称外,此值还会显示在 STK PIN 提示消息中。最大长度为 12 个字符。
- TransactionDescription: 这是从系统发送到请求的任何其他信息/注释。最大长度为 13 个字符。
注意事项
- 不要使用我的演示密钥,因为它们不会工作:
Future<void> main() async {
final stk = MpesaDaraja(
consumerKey: 'Dm4oJgziMyOT7WTmJzQfEZS6jjzg1Fkd',
consumerSecret: 'RGRvsUGkO4jc3NuW',
passKey: 'bfb279f9aa9bdbcf158e97dd71a467cd2e0c893059b10f78e6b72ada1ed2c919',
);
await stk.lipaNaMpesaStk(
"174379",
1,
"254798071520",
"174379",
"254798071520",
"https://mydomain.com/path",
"accountReference",
"transactionDesc",
);
}
贡献者
示例
import 'package:mpesadaraja/src/lipa_na_mpesa.dart';
Future<void> main() async {
final stk = MpesaDaraja(
consumerKey: 'Dm4oJgziMyOT7WTmJzQfEZS6jjzg1Frd',
consumerSecret: 'RGRvsUGkO4jc3NuW',
passKey: 'bfb279f9aa9bdbcf158e97dd71a467cd2e0c893059b10f78e6b72ada1ed2c919',
);
await stk.lipaNaMpesaStk(
"174379",
1,
"254798071520",
"174379",
"254798071520",
"https://mydomain.com/path",
"accountReference",
"transactionDesc",
);
}
更多关于Flutter插件mpesadaraja的使用_Dart 包装器用于 M-Pesa Daraja API,由 Safaricom 提供。M-Pesa 是一种移动电话上的货币转账、融资和微型金融服务的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter插件mpesadaraja的使用_Dart 包装器用于 M-Pesa Daraja API,由 Safaricom 提供。M-Pesa 是一种移动电话上的货币转账、融资和微型金融服务的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在探索和使用Flutter中的未知功能插件(如mpesadaraja
)时,通常我们需要参考该插件的官方文档或源代码来了解其提供的API和功能。由于mpesadaraja
并非一个广为人知的Flutter插件,我无法提供确切的官方文档链接或详细的使用说明,但我可以给你一个探索和使用Flutter插件的一般流程,并提供一个假设性的代码案例来展示如何集成和使用一个Flutter插件。
探索和使用Flutter插件的一般流程
-
查找插件:
- 在pub.dev上搜索插件名称(如
mpesadaraja
),查看是否存在该插件。 - 如果在pub.dev上找不到,可能是私有插件或尚未发布到公共仓库,此时需要联系插件的开发者或查看相关项目文档。
- 在pub.dev上搜索插件名称(如
-
添加依赖:
- 如果插件存在于pub.dev,可以在
pubspec.yaml
文件中添加依赖。
- 如果插件存在于pub.dev,可以在
-
导入插件:
- 在Dart文件中导入插件包。
-
查看插件文档:
- 阅读插件的README文件或官方文档,了解插件提供的功能和API。
-
编写代码使用插件:
- 根据插件文档提供的示例或API说明,编写代码调用插件功能。
假设性代码案例
以下是一个假设性的代码案例,展示如何集成和使用一个名为mpesadaraja
的Flutter插件(请注意,这里的代码是基于假设的,因为mpesadaraja
插件的实际API和功能未知)。
pubspec.yaml
dependencies:
flutter:
sdk: flutter
mpesadaraja: ^1.0.0 # 假设插件的版本是1.0.0
main.dart
import 'package:flutter/material.dart';
import 'package:mpesadaraja/mpesadaraja.dart'; // 假设插件的导入路径
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('MpesaDaraja Plugin Demo'),
),
body: Center(
child: MyPluginDemo(),
),
),
);
}
}
class MyPluginDemo extends StatefulWidget {
@override
_MyPluginDemoState createState() => _MyPluginDemoState();
}
class _MyPluginDemoState extends State<MyPluginDemo> {
String _result = 'Unknown';
void _invokePluginFunction() async {
// 假设插件有一个名为`someFunction`的方法
try {
final result = await MpesaDaraja.someFunction(parameters: {
'key1': 'value1',
'key2': 'value2',
});
setState(() {
_result = result.toString();
});
} catch (e) {
setState(() {
_result = 'Error: ${e.toString()}';
});
}
}
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Plugin Result: $_result'),
ElevatedButton(
onPressed: _invokePluginFunction,
child: Text('Invoke Plugin Function'),
),
],
);
}
}
注意事项
- 插件文档:务必阅读插件的官方文档,因为每个插件的API和功能都可能不同。
- 错误处理:在调用插件功能时,添加适当的错误处理逻辑,以处理可能出现的异常情况。
- 版本兼容性:确保插件版本与你的Flutter SDK版本兼容。
由于mpesadaraja
插件的具体信息未知,上述代码仅作为探索和使用Flutter插件的一般流程示例。在实际使用中,你需要根据插件的实际API和功能进行调整。