1、下载包文件
链接: https://pan.baidu.com/s/1ykSukp5tHitkUieC0-jWxQ?pwd=asd5 提取码: asd5
2、导入项目
(1)阿里云账号
(2)在阿里云上开通短信服务
(3)创建账户AccessKeyId和AccessKeySecret,赋予权限。
把解压后的alisms放于extend下,在extend中创建SmsCode类封装发送短信的方法。
<?php use Aliyun\Core\Config; use Aliyun\Core\Profile\DefaultProfile; use Aliyun\Core\DefaultAcsClient; use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest; class SmsCode { function send_sms($phone, $model, $code) { $aliyun = config('aliyun'); require_once '../extend/alisms/vendor/autoload.php'; Config::load(); //加载区域结点配置 $accessKeyId = $aliyun['access_key_id']; //自己的 $accessKeySecret = $aliyun['access_key_secret']; //自己的 $templateParam = $code; //验证码,注意传过来的需要是数组如 { ‘code’=> '123456' } //短信签名 $signName = $aliyun['sms_sign_name']; //自己的签名 //短信模板ID switch ($model) { case 1: $templateCode = $aliyun['sms_sign_code']; // 重置密码短信验证码模板 自己模板的code break; case 2: break; } //短信API产品名(短信产品名固定,无需修改) $product = "Dysmsapi"; //短信API产品域名(接口地址固定,无需修改) $domain = "dysmsapi.aliyuncs.com"; //暂时不支持多Region(目前仅支持cn-hangzhou请勿修改) $region = "cn-hangzhou"; // 初始化用户Profile实例 $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret); // 增加服务结点 DefaultProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", $product, $domain); // 初始化AcsClient用于发起请求 $acsClient = new DefaultAcsClient($profile); // 初始化SendSmsRequest实例用于设置发送短信的参数 $request = new SendSmsRequest(); // 必填,设置雉短信接收号码 $request->setPhoneNumbers($phone); // 必填,设置签名名称 $request->setSignName($signName); // 必填,设置模板CODE $request->setTemplateCode($templateCode); // 可选,设置模板参数 if ($templateParam) { //dump(json_encode($templateParam)); $request->setTemplateParam(json_encode($templateParam)); } //发起访问请求 $acsResponse = $acsClient->getAcsResponse($request); //返回请求结果 $result = json_decode(json_encode($acsResponse), true); return $result; } } ?>
3、在文件种使用
public function send_code($phone){ //一定得是数组形式,json编码时针对值;数组形式才能让其带有标识 $code =array('code'=>rand(1000, 9999)); $objSendObj = new \SmsCode(); $send = $objSendObj->send_sms($phone, 1, $code); if($send['Message'] != 'OK'){ echo '发送失败'; }else{ echo '发送成功'; } }
4、运行结果
注意:
1、
配置信息位置
2、在控制器中引用发送短信的class时,直接new()就可以了
$objSendObj = new \SmsCode();
“\”tp5的命名空间自动加载规则:自动加载的实现,通过think\Loader类库完成,自动加载。