ThinkPHP5 集成阿里云SMS短信服务--验证码发送
2017-10-07 17:18
621 查看
目录
开通阿里云短信服务创建签名以及模板
创建签名
记住签名名称
创建模板
记住模板Code
创建并记住Access Key Id 以及 Access Key Secret
下载并集成PHP-SDK
实战
一、开通阿里云短信服务
首先去阿里云官网,申请账号,并开通短信服务功能。二、创建签名以及模板
1、创建签名
![](http://oxg2u3fwj.bkt.clouddn.com/aliyun/sms/sign.pngsign.png)
2、记住签名名称
![](http://oxg2u3fwj.bkt.clouddn.com/aliyun/sms/remeber_sign.pngremeber_sign.png)
3、创建模板
![](http://oxg2u3fwj.bkt.clouddn.com/aliyun/sms/template.pngtemplate.png)
4、记住模板Code
![](http://oxg2u3fwj.bkt.clouddn.com/aliyun/sms/remeber_template.pngremeber_template.png)
三、创建并记住Access Key Id 以及 Access Key Secret
![](http://oxg2u3fwj.bkt.clouddn.com/aliyun/sms/keyid.pngkeyid.png)
四、下载并集成PHP-SDK
1、自行下载(忽略)
2、ThinkPHP5 集成
a. sdk目录中包含:api_demo、api_sdk、msg_demo、msg_sdk 四个目录。b. 将包含 sdk 下所有目录的文件夹(如ali),放入 thinkphp5 可扩展第三方 extend 目录下。集成sdk ok。
五、实战
1、创建短信服务所需的配置参数文件 ali.php
<?php /** * ali.php * 阿里短信验证参数 * Created by * User: * Date: * Time: */ return [ 'product' => 'Dysmsapi', // 短信API产品名,唯一 'domain' => 'dysmsapi.aliyuncs.com', // 短信API产品域名,唯一 'region' => 'cn-hangzhou', // 暂时不支持多Region,唯一 'endPointName' => 'cn-hangzhou', // 服务结点,唯一 'accessKeyId' => '', // AccessKeyId 'accessKeySecret' => '', // AccessKeySecret 'signName' => '', // 签名名称 'templateCode' => '', // 短信模板Code 'valid_time' => '300', // 验证码有效时间,单位为秒 ];
2、封装发送短信的单例类
<?php /** * 短信验证码单例 * Created by * User: * Date: * Time: */ namespace app\common\lib; use Aliyun\Core\Config; use Aliyun\Core\Profile\DefaultProfile; use Aliyun\Core\DefaultAcsClient; use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest; use think\Cache; require_once EXTEND_PATH.'ali/api_sdk/vendor/autoload.php'; // 加载区域结点配置 Config::load(); class Ali { public $acsClient = ''; /** * 静态变量保存全局实例 */ private static $_instance = null; /** * 私有构造方法 */ private function __construct(){} /** * 获取单例实例 */ public static function getInstance(){ if(empty(self::$_instance)){ self::$_instance = new self(); } return self::$_instance; } /** * 发送短信验证码 * $phone :手机号码 */ public function sendSMS($phone) { // 短信API产品名 $product = config('ali.product'); // 短信API产品域名 $domain = config('ali.domain'); // 暂时不支持多Region $region = config('ali.region'); // 服务结点 $endPointName = config('ali.endPointName'); // 初始化用户Profile实例 $profile = DefaultProfile::getProfile($region, config('ali.accessKeyId'), config('ali.accessKeySecret')); // 增加服务结点 DefaultProfile::addEndpoint($endPointName, $region, $product, $domain); // 初始化AcsClient用于发起请求 $this->acsClient = new DefaultAcsClient($profile); // 初始化SendSmsRequest实例用于设置发送短信的参数 $request = new SendSmsRequest(); // 必填,设置雉短信接收号码 $request->setPhoneNumbers($phone); // 必填,设置签名名称 $request->setSignName(config('ali.signName')); // 必填,设置模板CODE $request->setTemplateCode(config('ali.templateCode')); //随机数 $random = rand(0,999999); //模板参数数组 $send_info = [ 'code' => $random, 'product' => '产品', ]; // 可选,设置模板参数 $request->setTemplateParam(json_encode($send_info)); // 发起访问请求 $acsResponse = $this->acsClient->getAcsResponse($request); // 打印请求结果 // var_dump($acsResponse); if(!$acsResponse->Code == "OK"){ return false; } //设置手机号码有效期为 5 分钟 Cache::set($phone,$random,config('ali.valid_time')); return true; } /** * 检查短信验证码是否失效 * @param $phone * @return 返回验证码 */ public static function checkValidPhone($phone) { if(!$phone){ return false; } return Cache::get($phone); } }
相关文章推荐
- Thinkphp5+阿里云SMS短信服务发送验证码
- 阿里云PHP SMS短信服务验证码发送方法
- 阿里云PHP-SMS短信服务——验证码发送教程
- 阿里云PHP-SMS短信服务——验证码发送教程
- 阿里云短信服务(发送短信验证码)
- 阿里云的云通信短信服务--发送验证码到手机
- 阿里云-----云通信短信服务---发送验证码到手机
- Springboot实现阿里云通信短信服务有关短信验证码的发送
- 调用阿里云短信服务平台API实现ERP系统短信发送功能
- java实现SMS短信平台发送验证码功能
- Springboot实现阿里云通信短信服务有关短信验证码的发送
- Android监听SMS发送状态并获取短信服务中心号码
- Android监听SMS发送状态并获取短信服务中心号码
- Springboot实现阿里云通信短信服务有关短信验证码的发送
- php 阿里云短信服务及阿里大鱼实现短信验证码的发送
- Java 阿里云短信服务的集成
- ThinkPHP中集成阿里大于短信发送SDK
- Java阿里云通信短信服务发送短信调用
- Springboot实现阿里云通信短信服务有关短信验证码的发送
- Springboot实现阿里云通信短信服务有关短信验证码的发送功能