thinkphp3.2集成阿里大于两种方式
来源:互联网 发布:知牛财经房间骗局 编辑:程序博客网 时间:2024/05/21 14:44
<?php/** * Created by PhpStorm. * User: saber_H * Date: 2017/3/18 0018 * Time: 下午 3:31 **/namespace Common\Controller;ini_set("display_errors", "on"); //设置开启报错模式,可取消vendor('api_sdk.vendor.autoload'); //引入自动引导文件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;use Think\Controller;// 加载区域结点配置Config::load();class SmsComController extends Controller{ static $acsClient = null; /** * 取得AcsClient * * @return DefaultAcsClient */ public static function getAcsClient() { //产品名称:云通信流量服务API产品,开发者无需替换 $product = "Dysmsapi"; //产品域名,开发者无需替换 $domain = "dysmsapi.aliyuncs.com"; // TODO 此处需要替换成开发者自己的AK (https://ak-console.aliyun.com/) $accessKeyId = "LTAIeQ**********"; // AccessKeyId $accessKeySecret = "rki5osIGvC********************"; // AccessKeySecret // 暂时不支持多Region $region = "cn-hangzhou"; // 服务结点 $endPointName = "cn-hangzhou"; if(static::$acsClient == null) { //初始化acsClient,暂不支持region化 $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret); // 增加服务结点 DefaultProfile::addEndpoint($endPointName, $region, $product, $domain); // 初始化AcsClient用于发起请求 static::$acsClient = new DefaultAcsClient($profile); } return static::$acsClient; } public function smssend(){ header('Content-Type: text/plain; charset=utf-8'); $response = self::sendSms( "例:企鹅科技", // 短信签名 "SMS_105457484", // 短信模板编号 "131858*****", // 短信接收者 Array( // 短信模板中字段的值 "code"=>1234, )// "123" // 流水号,选填 ); echo "发送短信(sendSms)接口返回的结果:\n"; } /** * 发送短信 * * @param string $signName <p> * 必填, 短信签名,应严格"签名名称"填写,参考:<a href="https://dysms.console.aliyun.com/dysms.htm#/sign">短信签名页</a> * </p> * @param string $templateCode <p> * 必填, 短信模板Code,应严格按"模板CODE"填写, 参考:<a href="https://dysms.console.aliyun.com/dysms.htm#/template">短信模板页</a> * (e.g. SMS_0001) * </p> * @param string $phoneNumbers 必填, 短信接收号码 (e.g. 12345678901) * @param array|null $templateParam <p> * 选填, 假如模板中存在变量需要替换则为必填项 (e.g. Array("code"=>"12345", "product"=>"阿里通信")) * </p> * @param string|null $outId [optional] 选填, 发送短信流水号 (e.g. 1234) * @return stdClass */ public static function sendSms($signName, $templateCode, $phoneNumbers, $templateParam = null, $outId = null) { // 初始化SendSmsRequest实例用于设置发送短信的参数 $request = new SendSmsRequest(); // 必填,设置雉短信接收号码 $request->setPhoneNumbers($phoneNumbers); // 必填,设置签名名称 $request->setSignName($signName); // 必填,设置模板CODE $request->setTemplateCode($templateCode); // 可选,设置模板参数 if($templateParam) { $request->setTemplateParam(json_encode($templateParam)); } // 可选,设置流水号 if($outId) { $request->setOutId($outId); } // 发起访问请求 $acsResponse = static::getAcsClient()->getAcsResponse($request);// 打印请求结果// var_dump($acsResponse); return $acsResponse; } /** * 短信发送记录查询 * * @param string $phoneNumbers 必填, 短信接收号码 (e.g. 12345678901) * @param string $sendDate 必填,短信发送日期,格式Ymd,支持近30天记录查询 (e.g. 20170710) * @param int $pageSize 必填,分页大小 * @param int $currentPage 必填,当前页码 * @param string $bizId 选填,短信发送流水号 (e.g. abc123) * @return stdClass */ public function queryDetails($phoneNumbers=17828893817, $sendDate=20170710, $pageSize = 10, $currentPage = 1, $bizId=null) { // 初始化QuerySendDetailsRequest实例用于设置短信查询的参数 $request = new QuerySendDetailsRequest(); // 必填,短信接收号码 $request->setPhoneNumber($phoneNumbers); // 选填,短信发送流水号 $request->setBizId($bizId); // 必填,短信发送日期,支持近30天记录查询,格式Ymd $request->setSendDate($sendDate); // 必填,分页大小 $request->setPageSize($pageSize); // 必填,当前页码 $request->setCurrentPage($currentPage); // 发起访问请求 $acsResponse = static::getAcsClient()->getAcsResponse($request); // 打印请求结果 // var_dump($acsResponse); return $acsResponse; }}##########################接口调用################################ public function sssss(){ $message = new \Common\Controller\SmsComController(); $message->smssend(); }#########################第二种方法############################//这种相对简单(部分摘自网上)<?php/** * Created by PhpStorm. * User: Administrator * Date: 2017/11/3 0003 * Time: 17:13 */namespace Common\Controller;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;use Think\Controller;class SmsController extends Controller{ public function sendMsg($mobile,$code){ if( empty($mobile) || empty($code) ) return array('Message'=>'缺少参数','Code'=>'Error'); require_once dirname(__DIR__) . '/dySms/api_sdk/vendor/autoload.php'; Config::load(); //加载区域结点配置 $accessKeyId = "LTAIeQ**********"; // AccessKeyId $accessKeySecret = "rki5osIGvC********************"; // AccessKeySecret $templateParam = array("code"=>$code); //模板变量替换 $signName = "例:企鹅科技"; $templateCode = "SMS_1077*****"; //短信模板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; }}########################接口调用######################## //验证手机号 function isPhoneNum($mobile){ if(!preg_match("/^1[34578]{1}\d{9}$/",$mobile)){ return false; } return true; //发送短信 public function sms(){ $mobile = I('post.phone'); $mobiles = $this->isPhoneNum($mobile); //isPhoneNum为自己封装的正则手机验证 if($mobiles == true){ $code = (string)rand(1000, 9999); $message = new \Common\Controller\SmsController(); $message->sendMsg($mobile,$code); F($mobile,$code); //self...为自己项目接口状态码 $this->setSbCode(self::SUCCESS_CODE)->getReturn("请求成功"); }else{ //self...为自己项目接口状态码 $this->setSbCode(self::LOGIC_ERROR_CODE)->getReturn("请正确填写电话号码"); } } /** * 校对验证码 * @param $phone 电话 * @param $phone_code验证码 */ public function proof_code($phone){ $phone_code_f = F($phone); if($phone_code_f != $this->phone_code){ $this->setSbCode(self::LOGIC_ERROR_CODE)->getReturn("验证码错误"); }else{ F($phone,NULL); } return true; }
阅读全文
1 0
- thinkphp3.2集成阿里大于两种方式
- 集成阿里大于
- thinkPHP3.2.3实现阿里大于短信验证(阿里云合并后的版本)
- kafka与streaming集成两种方式
- spring集成memcached两种方式
- ThinkPHP中集成阿里大于短信发送SDK
- ThinkPHP中集成阿里大于短信发送SDK
- 阿里云安装wdcp,支持两种安装方式
- thinkphp3.2集成微信JSAPI支付
- Struts和Spring集成的两种方式
- Jenkins、Sonar和Maven集成的两种方式
- CXF 和Spring 集成开发两种发布方式
- Android Studio集成Genymotion的两种方式
- Spring集成Hibernate框架的两种方式
- 安装svn插件集成myeclipse2014的两种方式
- Android集成第三方app的两种方式
- 安装svn插件集成myeclipse2014的两种方式
- spring集成定时任务框架 Quartz的两种方式
- 微信开放平台网站应用(Scope参数错误或没有Scope权限)
- java解析xml(sax方式)
- ::运算符
- Spring将配置文件里的常量值注入给静态变量
- 爬虫系列7深度遍历网页
- thinkphp3.2集成阿里大于两种方式
- ansible playbook
- 1043. Is It a Binary Search Tree (25)
- 【蓝桥杯】【猴子选大王】
- 爬虫系列8解析robots.txt
- 启动、关闭和设置ubuntu防火墙
- IT运维管理人力成本困境该如何破解?
- spring原理
- 关于最新版本的log4net使用中遇到的问题