美文网首页PHP经验分享PHPer干货分享
thinkphp5配置阿里大鱼短信接口

thinkphp5配置阿里大鱼短信接口

作者: 480a895cc5bf | 来源:发表于2017-11-01 16:28 被阅读0次

    阿里大鱼短信配置非常简单,只需引入阿里大鱼完整SDK,然后在自己的项目里面引用SDK目录autoload.php文件,然后在接口调用demo接口就好了!

    一,先说具体实现方法,最后附加源码包!

    1.下载SDK,接口在阿里大鱼官网,本人使用版本为2017年10月下载,不保证后续官方SDK会相同,本人SDK版本地址百度云:http://pan.baidu.com/s/1eRPzmro    密码:oy7c;下载后放到TP5扩展目录extend下,如图:

    2,仿照SDK的demo,编写自己的短信发送接口,这里的前提是引入SDK目录autoload.php文件,APP_EXTEND宏定义目录+SDK路径;APP_EXTEND定义位置在入口文件index.php中,define('APP_EXTEND',__DIR__.'/extend/');    

    定义后,我们就可以引入SDK加载路径了,我们在home控制器新建sms控制器,然后引入SDK需要的命名空间如图

    到这一步,引入SDK就完成了,剩下的就是复制sdk的 demo函数,构建一个自己的startSendSms()发送函数就行了。

    下面是SMS接口代码,需要的网友可以直接下载http://pan.baidu.com/s/1skGVp2t  密码:5w1x

    namespaceapp\home\controller;

    usethink\Controller;

    usethink\Session;

    ini_set("display_errors","on");

    require_onceAPP_EXTEND.'Alidayu/api_sdk/vendor/autoload.php';

    useAliyun\Core\Config;

    useAliyun\Core\Profile\DefaultProfile;

    useAliyun\Core\DefaultAcsClient;

    useAliyun\Api\Sms\Request\V20170525\SendSmsRequest;

    useAliyun\Api\Sms\Request\V20170525\QuerySendDetailsRequest;

    //加载区域结点配置

    Config::load();

    /**

    * Class SmsDemo

    *

    *@property\Aliyun\Core\DefaultAcsClient acsClient

    */

    classSmsextendsController

    {

    /**

    *构造器

    *

    *@paramstring $accessKeyId必填,AccessKeyId

    *@paramstring $accessKeySecret必填,AccessKeySecret

    */

    public function__construct($accessKeyId='这里要写你自己的短信accessKeyId',$accessKeySecret='这里要写你自己的短信accessKeySecret')

    {

    //短信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=newDefaultAcsClient($profile);

    }

    /**

    *发送短信范例

    *

    *@paramstring $signName

    *必填,短信签名,应严格"签名名称"填写,参考:短信签名页

    *

    *@paramstring $templateCode

    *必填,短信模板Code,应严格按"模板CODE"填写,参考:短信模板页

    * (e.g. SMS_0001)

    *

    *@paramstring $phoneNumbers必填,短信接收号码(e.g. 12345678901)

    *@paramarray|null $templateParam

    *选填,假如模板中存在变量需要替换则为必填项(e.g. Array("code"=>"12345", "product"=>"阿里通信"))

    *

    *@paramstring|null $outId [optional]选填,发送短信流水号(e.g. 1234)

    *@returnstdClass

    */

    public functionsendSms($signName,$templateCode,$phoneNumbers,$templateParam,$outId=null){

    //初始化SendSmsRequest实例用于设置发送短信的参数

    $request=newSendSmsRequest();

    //必填,设置雉短信接收号码

    $request->setPhoneNumbers($phoneNumbers);

    //必填,设置签名名称

    $request->setSignName($signName);

    //必填,设置模板CODE

    $request->setTemplateCode($templateCode);

    //可选,设置模板参数

    if($templateParam){

    $request->setTemplateParam(json_encode($templateParam));

    }

    //可选,设置流水号

    if($outId){

    $request->setOutId($outId);

    }

    //发起访问请求

    $acsResponse=$this->acsClient->getAcsResponse($request);

    //打印请求结果

    // var_dump($acsResponse);

    return$acsResponse;

    }

    //调用发送短信接口

    public function startSendSms(){    //这里是自己写的发送函数,里面直接调用SDK的sendSms接口就行了

    $signName='这里写签名';//签名

    $templateCode='这里写短信模板';//短信模板  如:SMS_105200000

    $mobile=input('phone');//传递的号码

    if($mobile==""){

    returnApiError('手机号码不能为空');

    return;

    }

    if(checkMobile($mobile)){

    returnApiError('手机号码格式不正确');

    return;

    }

    $phoneNumbers=$mobile;

    $verifycode=strval(rand(1000,9999));//验证码数字4位   验证码按照自己需要编写

    $templateParam=array('code'=>$verifycode);

    $result=$this->sendSms($signName,$templateCode,$phoneNumbers,$templateParam,$outId=null);  //调用SDK接口

    $result=json_decode(json_encode($result),true);

    if($result['Message']!='OK'){

    returnApiError('验证码发送失败:'.$result['Message']);

    return;

    }

    session('home_reg.verifycode',$verifycode);

    session('home_reg.phone',$phoneNumbers);

    session('home_reg.time',time()+600);//10分钟

    returnApiSuccess('验证码发送成功,请注意查收');

    }

    }

    这样整个短信配置就完成了,前端只需要调用你的这个sms/startSendSms接口就可以发短信了!可能会遇到的问题SDK  autoload.PHP引入不正确。

    如有其他疑问可以在本文留言!

    相关文章

      网友评论

        本文标题:thinkphp5配置阿里大鱼短信接口

        本文链接:https://www.haomeiwen.com/subject/wqrgpxtx.html