ThinkPHP中集成阿里大于短信发送SDK

来源:互联网 发布:宁国市房地产数据 编辑:程序博客网 时间:2024/06/05 11:13
阿里大于短信发送控制台已经被整合到阿里云控制台了,之前注册的阿里大于账户使用过阿里大于服务的,现在还可以进入阿里大于控制台,新注册用户的话,都会直接跳转到阿里云控制台,使用短信服务的话,SDK也不同了,使用的秘钥也不一样。不过好在,阿里出的文档真的是相当详尽,就连小白集成也毫无压力。

作为一个拥有爱好记笔记这样的好(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;}
返回值如下: