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

Laravel集成msg91-laravel包时如何将msg91服务端响应返回至视图

解决方案

Msg91::otp()链式调用后的send()方法会直接返回msg91服务端的响应数据,你只需接收该返回值,再按你的项目交互模式返回给前端即可。

修正后的控制器代码

public function loginWithMobile(LoginRequest $request)
{
    $countryCode =  $request->input('countryCode');
    $mobileNumber =  $request->input('mobileNumber');
    $fullmobileNumber = $countryCode.$mobileNumber;
    $msg91Response = null;

    try {
        // Checking User
        if (User::where('mobileNumber', $fullmobileNumber)->exists()) {
            $msg91Response = Msg91::otp()
                ->to($fullmobileNumber)
                ->template('61432d6c30afb372115d3062')
                ->send();
        } else {
            $userId = \Ramsey\Uuid\Uuid::uuid4()->toString();
            User::Create([
                'userId'    => $userId,
                'mobileNumber'    => $fullmobileNumber
            ]);
            $msg91Response = Msg91::otp()
                ->to($fullmobileNumber)
                ->template('61432d6c30afb372115d3062')
                ->send();
        }
    } catch (\Exception $e) {
        $msg91Response = [
            'type' => 'error',
            'message' => 'OTP发送失败,请稍后重试'
        ];
    }

    // 按项目类型选择返回方式
    // 场景1:前后端分离API项目,返回JSON
    return response()->json([
        'success' => $msg91Response['type'] === 'success',
        'message' => $msg91Response['message'],
        'mobile' => $fullmobileNumber,
        'request_id' => $msg91Response['request_id'] ?? ''
    ]);

    // 场景2:后端渲染Blade视图,传参到视图
    // return view('otp.verify', [
    //     'mobile' => $fullmobileNumber,
    //     'msg91_res' => $msg91Response
    // ]);
}

补充说明

  • msg91成功响应默认包含type、message、request_id三个核心字段,你可以根据type字段判断发送状态,给前端展示对应的操作提示
  • 前端拿到响应后可直接根据返回的success字段判断是否跳转到OTP验证页,或者展示发送失败的报错信息

内容的提问来源于stack exchange,提问作者Himanshu Jain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:27:01