secretId, $this->secretKey); // 初始化HTTP Profile $httpProfile = new HttpProfile(); $httpProfile->setReqMethod("POST"); // 使用POST请求方式 // 初始化SMS客户端并关联HTTP Profile $clientProfile = new ClientProfile(); $clientProfile->setHttpProfile($httpProfile); $client = new SmsClient($cred, "", $clientProfile); // 准备发送短信的参数 $params = [ 'PhoneNumberSet' => [$phoneNumberSet], 'TemplateID' => $templateID, 'Sign' => $this->sign, 'TemplateParamSet' => $templateParamSet, 'SmsSdkAppid' => $this->SmsSdkAppid, ]; // 创建发送短信请求 $req = new SendSmsRequest(); $req->fromJsonString(json_encode($params)); // 发送短信 $resp = $client->SendSms($req); Log::info("短信接口返回:".json_encode($resp)); $result = json_decode(json_encode($resp), true); $SendStatusSet = $result['SendStatusSet']; $list = []; foreach ($SendStatusSet as $key => $value) { if ($value['Code'] == "Ok") { $status = true; } else { $status = false; } $list[] = ['phone' => $value['PhoneNumber'], 'status' => $status, 'msg' => $value['Message']]; } return ['code' => 1, 'msg' => "发送成功", 'data' => $list]; } catch (TencentCloudSDKException $e) { Log::info("短信发送失败:".$e->getMessage()); return ['code' => 0, 'msg' => $e->getMessage()]; } } /** * 发送验证码 * * @param [type] $phone * @return array */ public static function getSmsCode($request) { $request->validate([ 'phone' => 'required|integer', ]); UtilsHelper::printRequestInfo($request,'发送验证码'); $phone = $request->input('phone'); if (Redis::exists('CODE_' . $phone)) return error("该手机号已发送短信,请稍后再试"); $tencentMessage = new TencentSmsHelper(); $code = (string)rand(1111, 9999); $res = $tencentMessage->send('86' . $phone, '1734411', [$code, '5']); if (!empty($res['code']) and $res['code'] == 1) { Redis::setex('CODE_' . $phone, 60 * 5, $code); return success([], "发送成功,验证码5分钟内有效"); } else { return error($res['msg']); } } /** * 验证验证码 * * @param [type] $phone * @return bool */ public static function validSmsCode($request) { $phone = $request->input('mobile'); $code = $request->input('sms_code'); if ($code == Redis::get('CODE_' . $phone)){ Redis::del('CODE_' . $phone); return ['code'=>1,'msg'=>'验证成功','data'=>[]]; }else{ return ['code'=>0,'msg'=>'验证码错误','data'=>[]]; } } }