作为一个拥有爱好记笔记这样的好(ji)习(xing)惯(cha)的人来说,把做过的东西整理一下,下次用的时候,会省很多时间。
前期准备,步骤如下:
步骤 1 创建阿里云账号
步骤 2 获取阿里云访问**
阿里云访问秘钥是阿里云为用户使用 API(非控制台)来访问其云资源设计的“安全口令”。该访问秘钥成对(AccessKeyId 与 AccessKeySecret)生成和使用。每个阿里云用户可以创建多对访问秘钥,且可随时启用(Active)、禁用(Inactive)或者删除已经生成的访问秘钥对。
通过阿里云控制台的 秘钥管理页面 创建、管理所有的访问秘钥对。
步骤 3 在控制台完成模板与签名的申请,获得调用接口必备的参数
(1)在“短信签名”页面完成签名的申请,获得短信签名的字符串 签名申请手册;
(2)在“短信模板”页面完成模板的申请,获得模板ID。模板申请手册。
SDK集成,步骤如下:
1.下载SDK工具包
SDK&DEMO[下载地址]
2.将压缩包解压,拷贝出文件夹“api_sdk”,并将文件夹重命名为“dysms”,放入自己的工程项目
3.在用到此服务的控制器文件头部,引入相应的模块
- use Aliyun\Core\Config;
- use Aliyun\Core\Profile\DefaultProfile;
- use Aliyun\Core\DefaultAcsClient;
- use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;
4.代码实现短信发送
- /**
- * 判断输入的字符串是否是手机号
- * @return [bool] true || false
- */
- function isPhoneNum($mobile){
- if(!preg_match("/^1[34578]{1}\d{9}$/",$mobile)){
- return false;
- }
- return true;
- }
- /**
- * 发送验证码
- * @param string $mobile 接收手机号
- * @param string $code 验证码
- * @return array
- */
- public function sendMsg($mobile,$code){
- if( empty($mobile) || empty($code) ) return array('Message'=>'缺少参数','Code'=>'Error');
- if(!isPhoneNum($mobile)) return array('Message'=>'无效的手机号','Code'=>'Error');
- require_once APP_ROOT.'/Api/dysms/vendor/autoload.php';
- Config::load(); //加载区域结点配置
- $config = C('dysms'); //取出参数配置
- $accessKeyId = $config['alims_appkey'];
- $accessKeySecret = $config['alims_appsecret'];
- $templateParam = array("code"=>$code); //模板变量替换
- $signName = (empty($config['signname'])?'阿里大于测试专用':$config['signname']);
- $templateCode = $config['notice_templateid']; //短信模板ID
- //短信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($mobile);
- // 必填,设置签名名称
- $request->setSignName($signName);
- // 必填,设置模板CODE
- $request->setTemplateCode($templateCode);
- // 可选,设置模板参数
- if($templateParam) {
- $request->setTemplateParam(json_encode($templateParam));
- }
- //发起访问请求
- $acsResponse = $acsClient->getAcsResponse($request);
- //返回请求结果
- $result = json_decode(json_encode($acsResponse),true);
- return $result;
- }