• php 阿里云短信服务及阿里大鱼实现短信验证码的发送


    一:使用阿里云的短信服务

    ① 申请短信签名
    ②申请短信模板
    ③创建Access Key,获取AccessKeyId 与 AccessKeySecret。(为了安全起见,这里建议使用子用户的Access Key)

    然后,下载阿里云短信服务的SDK包,https://help.aliyun.com/document_detail
    这里写图片描述

    这里写图片描述

    在项目的app目录下新建Libs文件夹,将上图的两个SDK包放入Libs下。
    这里写图片描述

    项目根目录找到composer.json文件,打开,修改配置如下
    这里写图片描述
    紧接着在项目根目录执行:composer dumpautoload
    引入这两个SDK包。

    最后,

    <?php
        namespace AppHttpControllers;
    
        use AliyunCoreConfig;
        use AliyunCoreProfileDefaultProfile;
        use AliyunCoreDefaultAcsClient;
        use AliyunApiSmsRequestV20170525SendSmsRequest;
        use AliyunApiSmsRequestV20170525QuerySendDetailsRequest;
        // 加载区域结点配置
        Config::load();
        ...
    
         public function __construct($accessKeyId="6456457897447",$accessKeySecret="66666664444444")
            {
            //    $this->sms=$sms;
    
                 // 短信API产品名
                 $product = "Dysmsapi";
                // 短信API产品域名
                $domain = "dysmsapi.aliyuncs.com";
                // 暂时不支持多Region
                $region = "cn-hangzhou";
                // 服务结点
                $endPointName = "cn-hangzhou";
                // 初始化用户Profile实例
                $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
                // 增加服务结点
                DefaultProfile::addEndpoint($endPointName, $region, $product, $domain);
                // 初始化AcsClient用于发起请求
                $this->acsClient = new DefaultAcsClient($profile);
            }
    
            ...
    
            //具体实现方法
            function getCode($phoneNumbers="1********7",$signName="****",$templateCode="SMS_55555555",$outId=null){
               // 初始化SendSmsRequest实例用于设置发送短信的参数
               $request = new SendSmsRequest;
               // 必填,设置雉短信接收号码
               $request->setPhoneNumbers($phoneNumbers);
               // 必填,设置签名名称
               $request->setSignName($signName);
               // 必填,设置模板CODE
               $request->setTemplateCode($templateCode);
               $num = rand(100000,999999);
               // 可选,设置模板参数
               $request->setTemplateParam(json_encode(
                   Array(
                       "code" => "$num"
                   )
               ));
               // 可选,设置流水号
               if($outId) {
                   $request->setOutId($outId);
               }
               // 发起访问请求
               $acsResponse = $this->acsClient->getAcsResponse($request);        
            }

    调用以上getCode方法,即可发送短信验证码。

    二:使用阿里大于发送短信验证码
    还是必不可少的三点,
    ① 申请短信签名
    ②申请短信模板
    ③获取App Key与 App Secret

    把下载好的sdk包放入Libs文件夹下,
    这里写图片描述

    这里写图片描述

    执行composer dumpautoload;

    实现短信验证码的发送:
    这里写图片描述

    
            public function getCode($phoneNumbers="1*********7",$signName="****",$templateCode="SMS_666666666"){
                include app_path()."Libssdk_phpTopSdk.php";
                date_default_timezone_set('Asia/Shanghai'); 
                $c = new TopClient;
                $c->appkey = '8888888888';
                $c->secretKey = '555555555555555555555';
                $req = new AlibabaAliqinFcSmsNumSendRequest;
                $req->setExtend("123456");
                $req->setSmsType("normal");
                $req->setSmsFreeSignName($signName);
                // $num = rand(100000,999999);
                $req->setSmsParam("{"code":"12334","product":"alidayu"}");
                $req->setRecNum($phoneNumbers);
                $req->setSmsTemplateCode($templateCode);
                $resp = $c->execute($req);
                // var_dump($c->execute($req));
            }

    阿里大于短信使用api :https://api.alidayu.com/docs/api.htm?spm=a3142.7395905.4.6.5MNlbE&apiId=25450

    相关博客:http://blog.csdn.net/qq_38125058/article/details/79156289

  • 相关阅读:
    显示多行字符串
    dowhile
    获取系统的相关文件夹
    DLL 实际应用版本
    ShellExecute
    LoadLibrary
    MFC DLL的创建
    在DLL中存放资源
    替换字符串
    RemoveDirectoryB
  • 原文地址:https://www.cnblogs.com/zbokett/p/8370532.html
Copyright © 2020-2023  润新知