tumainimosha/laravel-mpesa-push

Laravel 包用于TZ Mpesa USSD Push集成

0.3.1 2023-09-24 18:14 UTC

This package is auto-updated.

Last update: 2024-09-09 08:37:57 UTC


README

Software License Travis Total Downloads

安装

通过composer安装

composer require tumainimosha/laravel-mpesa-push

发布配置文件

发布配置文件以自定义默认包配置。

php artisan vendor:publish --provider="Tumainimosha\MpesaPush\MpesaPushServiceProvider" --tag="config"

发布迁移

php artisan vendor:publish --provider="Tumainimosha\MpesaPush\MpesaPushServiceProvider" --tag="migrations"
php artisan migrate

配置

身份验证

.env文件中配置您的API用户名和密码,如下所示

TZ_MPESA_PUSH_SSL_CERT_PASSWORD=secret
TZ_MPESA_PUSH_USERNAME=123123
TZ_MPESA_PUSH_PASSWORD=VeryStrongPasswd
TZ_MPESA_PUSH_BUSINESS_NAME=FooCompany
TZ_MPESA_PUSH_BUSINESS_NUMBER=123123

其他配置可以在该包发布的配置文件中找到。选项都有详细的注释 😊

使用方法

use Tumainimosha\MpesaPush\MpesaPush;

...

public function testPush() {

    // Resolve service object
    $push = MpesaPush::instance();
    
    $customerMsisdn = '<substitute valid mpesa-tz number>';
    $amount = 250;
    $txnId = str_random('20');
    
    $responseCode = $push->postRequest($customerMsisdn, $amount, $txnId);
    
    // Check for response code
    // Valid response codes
    //  '0' - Success (note: response code is string '0' not numeric 0)
    //  'Duplicate' - Duplicate transaction ID
    //   Others - fail
    
}
    

处理回调

默认情况下,此包将交易存储在mpesa_push_transactions表中,并在收到回调时更新其状态。

但是,您可能在收到回调后需要在自己的应用程序中执行进一步的操作,通过监听在回调时触发的MpesaCallbackReceived::class事件。

您需要实现自己的事件监听器来监听此事件,并在收到回调后执行任何额外的步骤。

该事件有一个公开属性$transaction,其中包含包括状态在内的交易参数

// EventServiceProvider.php

protected $listen = [
    ...
    \Tumainimosha\MpesaPush\Events\MpesaCallbackReceived::class => [
        \App\Listeners\MpesaCallbackReceivedHandler::class,
    ],
];

// MpesaCallbackReceivedHandler.php

public function handle(MpesaCallbackReceived $event)
{
    $transaction = $event->transaction;
    
    // do your custom logic here
}

在运行时自定义配置值

此服务提供流畅的设置器,以便在您的用例需要时在运行时更改配置值。

此类用例可能是当您在同一项目中拥有多个账户,并从数据库中获取您的配置值时。

// $account here could be a Model fetched from db with account attributes
$pushService = MpesaPush::instance();

$pushService->setUsername($account->username)
    ->setPassword($account->password)
    ->setBusinessName($account->business_name)
    ->setBusinessNumber($account->business_number)
    ->setCommand($account->command);
    
$pushService->postRequest($customerMsisdn, $amount, $txnId);

测试

使用以下命令运行测试

vendor/bin/phpunit

贡献

有关详细信息,请参阅CONTRIBUTING

待办事项

  • 登录
  • 推送交易请求
  • 回调处理
  • 更多文档和示例
  • 单元测试

** 需要帮助改进文档和单元测试。欢迎提交Pull Requests。

安全

如果您发现任何与安全相关的问题,请通过电子邮件princeton.mosha@gmail.com联系,而不是使用问题跟踪器。

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件