💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## 知识点 1、配置文件 2、下载SDK工具包 3、修改common.php 4、修改user.php [TOC] 升级原来的阿里大于短信服务,只需改动三个方面即可,分别是配置文件、common.php、user.php ## 一、配置文件 位置:\application\index\config.php 代码: ~~~ return [ 'paginate' => [ 'type' => 'layui', 'var_page' => 'page', 'list_rows' => '5', 'newstyle' => true, ], 'alidayu' => [ 'appkey' => 'LTAIOAveuelesist', 'secretKey' => '', // 请替换成自己申请的Access Key Secret 'signature' => '您的签名',// 注意是您申请时的签名名称 'templatecode' => 'SMS_117522100' ], ]; ~~~ ## 二、下载SDK工具包 地址:https://help.aliyun.com/document_detail/55359.html?spm=a2c4g.11186623.2.8.42ed3a76upbzP1 文档:https://help.aliyun.com/document_detail/55451.html?spm=5176.10629532.106.2.579a1cbeQVa4oh 位置:\extend\Alidayu\ 参照:\aliyun-dysms-php-sdk\api_demo\SmsDemo.php ## 三、修改common.php 参照修改:\aliyun-dysms-php-sdk\api_demo\SmsDemo.php ~~~ <?php use Aliyun\Core\Config; use Aliyun\Core\Profile\DefaultProfile; use Aliyun\Core\DefaultAcsClient; use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest; use Aliyun\Api\Sms\Request\V20170525\QuerySendDetailsRequest; /** * 取得AcsClient * * @return DefaultAcsClient */ function getAcsClient() { $acsClient = null; //产品名称:云通信流量服务API产品,开发者无需替换 $product = "Dysmsapi"; //产品域名,开发者无需替换 $domain = "dysmsapi.aliyuncs.com"; // TODO 此处需要替换成开发者自己的AK (https://ak-console.aliyun.com/) $accessKeyId = config('alidayu.appkey'); // AccessKeyId $accessKeySecret = config('alidayu.secretKey'); // AccessKeySecret // 暂时不支持多Region $region = "cn-hangzhou"; // 服务结点 $endPointName = "cn-hangzhou"; if($acsClient == null) { //初始化acsClient,暂不支持region化 $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret); // 增加服务结点 DefaultProfile::addEndpoint($endPointName, $region, $product, $domain); // 初始化AcsClient用于发起请求 $acsClient = new DefaultAcsClient($profile); } return $acsClient; } //阿里大于短信发送 function sendAlidayu($mobile, $code) { //载入阿里大于 include EXTEND_PATH . 'Alidayu/vendor/autoload.php'; // 加载区域结点配置 Config::load(); // 初始化SendSmsRequest实例用于设置发送短信的参数 $request = new SendSmsRequest(); // 必填,设置短信接收号码 $request->setPhoneNumbers($mobile); // 必填,设置签名名称,应严格按"签名名称"填写,请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/sign $request->setSignName(config('alidayu.signature')); // 必填,设置模板CODE,应严格按"模板CODE"填写, 请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/template $request->setTemplateCode(config('alidayu.templatecode')); // 可选,设置模板参数, 假如模板中存在变量需要替换则为必填项 $request->setTemplateParam(json_encode(array( // 短信模板中字段的值 "code"=>$code, // "product"=>"dsd" ), JSON_UNESCAPED_UNICODE)); // 可选,设置流水号 $request->setOutId("yourOutId"); // 选填,上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段) $request->setSmsUpExtendCode("1234567"); // 发起访问请求 $acsResponse = getAcsClient()->getAcsResponse($request); return $acsResponse; } ~~~ ## 四、修改user.php ~~~ //发送验证码 public function sendsms(){ //手机号 $mobile = input('mobile',0); //正则简单判断 if(preg_match("/^1\d{10}$/", $mobile)){ //判断手机号是否存在 $count = Db::name('user')->where('mobile',$mobile)->count(); if($count){ //返回错误提示 $data['status'] = 202; $data['msg'] = '手机号已被注册!'; return json($data); }else{ // 生成验证码,随机4位 $smscode = mt_rand(1111,9999); set_time_limit(0); header('Content-Type: text/plain; charset=utf-8'); $resp = sendAlidayu($mobile, $smscode); // 判断发送是否成功 if($resp->Code == 'OK'){ //发送成功 session('mobile', $mobile); //用于注册时判断 session('smscode', $smscode); //用于注册时判断 $data['status'] = 200; $data['msg'] = '发送成功!'.$smscode;//便于调试对比,实际使用时去掉后面验证码 return json($data); }else{ //返回错误提示 $data['status'] = 202; $data['msg'] = '发送失败!'.$resp->Message; return json($data); } } }else{ //返回错误提示 $data['status'] = 202; $data['msg'] = '请输入正确的手机号!'; return json($data); } } ~~~