Flutter移动支付插件dart_mpesa的使用
Flutter移动支付插件dart_mpesa的使用
此库包含了一些方法,可以轻松地消费Mpesa API。它支持多平台,包括命令行界面(CLI)、服务器端、移动端、桌面端和浏览器。
可用的方法/API包括:
- ✅ LIPA NA MPESA
- ✅ STKPUSH QUERY
- ✅ C2BSIMULATE
- ✅ B2B
- ✅ B2C
- ✅ C2B
- ✅ TRANSACTION STATUS
- ✅ ACCOUNT BALANCE
- ✅ REVERSAL
使用方法
创建一个Mpesa实例,然后使用其方法来消费API。
import 'package:dart_mpesa/dart_mpesa.dart';
void main() {
var mpesa = Mpesa(
shortCode: "", // 短代码
consumerKey: "", // 消费者密钥
consumerSecret: "", // 消费者密钥
initiatorName: "", // 发起人名称
securityCredential: "", // 安全凭证
passKey: "", // 通行证
identifierType: IdentifierType.OrganizationShortCode, // 组织类型,选项有 OrganizationShortCode, TillNumber, OrganizationShortCode
applicationMode: ApplicationMode.test // 应用模式
);
}
LIPA NA MPESA ONLINE
LIPA NA M-PESA ONLINE API,也称为M-PESA Express(STK Push),是一种商家/企业发起的客户到业务(Customer to Business)支付方式。
MpesaResponse _res = await mpesa.lipanaMpesaOnline(
phoneNumber: "", // 电话号码
amount: 0, // 金额
accountReference: "", // 账户引用
transactionDesc: "", // 交易描述
callBackURL: "", // 回调URL
);
print(_res.statusCode);
print(_res.rawResponse);
print(_res.responseDescription);
B2B
Business to Business (B2B) API用于从一个企业向另一个企业转账。
_res = await mpesa.b2bTransaction(
shortCode: "", // 短代码
amount: 0, // 金额
remarks: "", // 备注
accountReference: "", // 可选账户引用
resultURL: "", // 结果URL
queueTimeOutURL: "", // 队列超时URL
identifierType: IdentifierType.OrganizationShortCode, // 选项,OrganizationShortCode, TillNumber, OrganizationShortCode
commandID: BbCommandId.BusinessToBusinessTransfer, // 选项,BusinessToBusinessTransfer, BusinessPayBill, BusinessBuyGoods, DisburseFundsToBusiness, MerchantToMerchantTransfer
);
B2B购买商品
将资金从一个组织的工作账户转移到另一个组织的商户账户。
_res = await mpesa.b2bBuyGoodsTransaction(
shortCode: "", // 短代码
amount: 0, // 金额
remarks: "", // 备注
resultURL: "", // 结果URL
queueTimeOutURL: "", // 队列超时URL
);
获取令牌
try{
_res = await mpesa.fetchToken;
print(_res['token']);
}catch(e){
print(e);
}
更多示例或文档请参阅官方仓库。
示例代码
以下是一个完整的示例代码,展示了如何使用dart_mpesa插件进行各种操作。
import 'package:dart_mpesa/dart_mpesa.dart';
void main() async {
var mpesa = Mpesa(
shortCode: '', // 短代码
consumerKey: '', // 消费者密钥
consumerSecret: '', // 消费者密钥
initiatorName: '', // 发起人名称
securityCredential: '', // 安全凭证
passKey: '', // 通行证
identifierType: IdentifierType
.OrganizationShortCode, // 组织类型,选项有 OrganizationShortCode, TillNumber, OrganizationShortCode
applicationMode: ApplicationMode.test // 应用模式
);
// LIPA NA MPESA ONLINE
var _res = await mpesa.lipanaMpesaOnline(
phoneNumber: '', // 电话号码
amount: 0, // 金额
accountReference: '', // 账户引用
transactionDesc: '', // 交易描述
callBackURL: '', // 回调URL
);
print(_res.statusCode);
print(_res.rawResponse);
// B2C
_res = await mpesa.b2cTransaction(
phoneNumber: '', // 电话号码
amount: 0, // 金额
remarks: '', // 备注
occassion: '', // 场景
resultURL: '', // 结果URL
queueTimeOutURL: '', // 队列超时URL
commandID: BcCommandId.BusinessPayment // 默认
);
print(_res.statusCode);
print(_res.rawResponse);
// B2B PAYBILL
_res = await mpesa.b2bPaybillTransaction(
shortCode: '', // 短代码
amount: 0, // 金额
remarks: '', // 备注
accountReference: '', // 账户引用
resultURL: '', // 结果URL
queueTimeOutURL: '', // 队列超时URL
);
print(_res.statusCode);
print(_res.rawResponse);
// B2B购买商品
_res = await mpesa.b2bBuyGoodsTransaction(
shortCode: '', // 短代码
amount: 0, // 金额
remarks: '', // 备注
resultURL: '', // 结果URL
queueTimeOutURL: '', // 队列超时URL
);
print(_res.statusCode);
print(_res.rawResponse);
// B2B
_res = await mpesa.b2bTransaction(
shortCode: '', // 短代码
amount: 0, // 金额
remarks: '', // 备注
accountReference: '', // 可选账户引用
resultURL: '', // 结果URL
queueTimeOutURL: '', // 队列超时URL
identifierType: IdentifierType
.OrganizationShortCode, // 选项,OrganizationShortCode, TillNumber, OrganizationShortCode
commandID: BbCommandId
.BusinessToBusinessTransfer, // 选项,BusinessToBusinessTransfer, BusinessPayBill, BusinessBuyGoods, DisburseFundsToBusiness, MerchantToMerchantTransfer
);
print(_res.statusCode);
print(_res.rawResponse);
// 账户余额
_res = await mpesa.accountBalance(
remarks: '', // 备注
resultURL: '', // 结果URL
queueTimeOutURL: '', // 队列超时URL
);
// 交易状态
_res = await mpesa.transactionStatus(
transactionID: '', // 交易ID
identifierType: IdentifierType.MSISDN, // 接收交易的组织类型
remarks: '', // 备注
occassion: '', // 场景
resultURL: '', // 结果URL
queueTimeOutURL: '', // 队列超时URL
);
print(_res.statusCode);
print(_res.rawResponse);
}
更多关于Flutter移动支付插件dart_mpesa的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter移动支付插件dart_mpesa的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,关于Flutter中的dart_mpesa
插件,这是一个用于集成M-Pesa移动支付功能的Flutter包。以下是一个简单的代码示例,展示了如何在Flutter应用中使用dart_mpesa
插件进行支付请求。
首先,确保你已经在pubspec.yaml
文件中添加了dart_mpesa
依赖:
dependencies:
flutter:
sdk: flutter
dart_mpesa: ^最新版本号 # 请替换为实际的最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,在你的Flutter应用中,你可以按照以下步骤使用dart_mpesa
插件:
- 导入插件:
import 'package:dart_mpesa/dart_mpesa.dart';
- 配置M-Pesa参数:
在实际使用中,你需要从M-Pesa获取相关的API凭证,包括ConsumerKey
、ConsumerSecret
、ShortCode
、PassKey
等。以下是一个配置示例:
var mpesaConfig = MpesaConfig(
consumerKey: '你的ConsumerKey',
consumerSecret: '你的ConsumerSecret',
baseUrl: 'https://sandbox.safaricom.co.ke', // 如果是沙箱环境
shortCode: '你的ShortCode',
passKey: '你的PassKey',
);
- 创建M-Pesa客户端:
var mpesaClient = MpesaClient(mpesaConfig);
- 发起支付请求:
void initiateMpesaPayment() async {
var request = LipaNaMpesaOnlineRequest(
businessShortCode: mpesaConfig.shortCode,
phoneNumber: '接收支付的手机号',
amount: '支付金额',
callBackUrl: '你的回调URL',
accountReference: '参考信息',
transactionDesc: '交易描述',
);
try {
var response = await mpesaClient.initiateLipaNaMpesaOnline(request);
print('支付请求响应: ${response.body}');
// 处理响应,比如显示支付确认界面给用户
} catch (e) {
print('支付请求失败: $e');
// 处理错误
}
}
在上面的代码中,LipaNaMpesaOnlineRequest
是用于发起Lipa Na M-Pesa Online支付的请求对象。你需要根据实际需求填写相关的字段,如phoneNumber
、amount
等。
- 调用支付函数:
你可以在一个按钮点击事件中调用initiateMpesaPayment
函数来发起支付请求:
ElevatedButton(
onPressed: () {
initiateMpesaPayment();
},
child: Text('发起支付'),
)
请注意,上述代码是一个简化的示例,用于展示如何使用dart_mpesa
插件发起支付请求。在实际应用中,你可能需要处理更多的细节,比如用户输入验证、错误处理、支付结果回调等。
此外,由于M-Pesa的API可能会更新,因此建议查阅dart_mpesa
插件的官方文档或GitHub仓库以获取最新的使用指南和API变更信息。