You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 11集成Mpesa的正确配置方法(替代低版本方案)

Laravel 11 中正确集成 Mpesa 的配置方法

在 Laravel 10 及更早版本中,集成 Mpesa 需要在 config/app.php 的 providers 数组中添加 \\Safaricom\\Mpesa\\MpesaServiceProvider::class,同时在 aliases 数组中设置 'Mpesa' => \\Safaricom\\Mpesa\\MpesaServiceProvider::class。但这套配置逻辑在 Laravel 11 中不再适用,你尝试使用 withConfig() 方法配置别名时触发报错,核心原因是 Laravel 11 的 ApplicationBuilder 类不存在 withConfig() 方法。

正确配置步骤

1. 注册 Mpesa 服务提供者

在 bootstrap/app.php 中,直接通过 withServiceProviders() 方法注册服务提供者即可,这部分你之前的写法是正确的:

use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;

return Application::configure(basePath: dirname(__DIR__))
    ->withServiceProviders([
        \Safaricom\Mpesa\MpesaServiceProvider::class,
        // 其他服务提供者可继续放在此处
    ])
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        api: __DIR__.'/../routes/api.php',
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )
    ->withMiddleware(function (Middleware $middleware) {
        // 中间件配置
    })
    ->withExceptions(function (Exceptions $exceptions) {
        // 异常处理配置
    })->create();

2. 设置 Mpesa 别名(可选)

如果需要继续使用 Mpesa 快捷别名,Laravel 11 提供两种可行方式:

  • 方式一:直接在启动文件中注册
    在 create() 方法前,通过 afterCreating() 钩子添加别名:
return Application::configure(basePath: dirname(__DIR__))
    ->withServiceProviders([
        \Safaricom\Mpesa\MpesaServiceProvider::class,
    ])
    // 保留其他原有配置
    ->afterCreating(function (Application $app) {
        $app->alias('Mpesa', \Safaricom\Mpesa\MpesaServiceProvider::class);
    })
    ->create();
  • 方式二:使用独立别名配置文件
  1. 在项目 config 目录下创建 aliases.php 文件,写入别名映射:
return [
    'Mpesa' => \Safaricom\Mpesa\MpesaServiceProvider::class,
    // 可添加其他需要的别名
];
  1. 在 bootstrap/app.php 的 afterCreating() 钩子中批量加载别名:
return Application::configure(basePath: dirname(__DIR__))
    ->withServiceProviders([
        \Safaricom\Mpesa\MpesaServiceProvider::class,
    ])
    // 保留其他原有配置
    ->afterCreating(function (Application $app) {
        foreach (require __DIR__.'/../config/aliases.php' as $alias => $class) {
            $app->alias($alias, $class);
        }
    })
    ->create();

验证配置

完成上述修改后,运行 php artisan serve 即可正常启动服务,之后就能在项目中正常调用 Mpesa 相关功能了。

内容的提问来源于stack exchange,提问作者Joy Awino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 21:36:13