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;    }
原创粉丝点击