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
相关产品推荐
相关产品推荐

