PHP经验分享PHPer干货分享

thinkphp5配置阿里大鱼短信接口

2017-11-01  本文已影响0人  480a895cc5bf

阿里大鱼短信配置非常简单,只需引入阿里大鱼完整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引入不正确。

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

上一篇下一篇

猜你喜欢

热点阅读