Flutter移动支付插件dart_mpesa的使用

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

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

1 回复

更多关于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插件:

  1. 导入插件
import 'package:dart_mpesa/dart_mpesa.dart';
  1. 配置M-Pesa参数

在实际使用中,你需要从M-Pesa获取相关的API凭证,包括ConsumerKeyConsumerSecretShortCodePassKey等。以下是一个配置示例:

var mpesaConfig = MpesaConfig(
  consumerKey: '你的ConsumerKey',
  consumerSecret: '你的ConsumerSecret',
  baseUrl: 'https://sandbox.safaricom.co.ke', // 如果是沙箱环境
  shortCode: '你的ShortCode',
  passKey: '你的PassKey',
);
  1. 创建M-Pesa客户端
var mpesaClient = MpesaClient(mpesaConfig);
  1. 发起支付请求
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支付的请求对象。你需要根据实际需求填写相关的字段,如phoneNumberamount等。

  1. 调用支付函数

你可以在一个按钮点击事件中调用initiateMpesaPayment函数来发起支付请求:

ElevatedButton(
  onPressed: () {
    initiateMpesaPayment();
  },
  child: Text('发起支付'),
)

请注意,上述代码是一个简化的示例,用于展示如何使用dart_mpesa插件发起支付请求。在实际应用中,你可能需要处理更多的细节,比如用户输入验证、错误处理、支付结果回调等。

此外,由于M-Pesa的API可能会更新,因此建议查阅dart_mpesa插件的官方文档或GitHub仓库以获取最新的使用指南和API变更信息。

回到顶部