阿里大鱼之TP3框架集成阿里云通信短信服务

短信服务(Short Message Service)是指通过调用短信发送API,将指定短信内容发送给指定手机用户。用户收到的短信来自106开头的号码,短信的内容多用于企业向用户传递验证码、系统通知、会员服务等信息。至于阿里大鱼为什么改名阿里大于以及到现在的阿里云通信中的短信服务就不比比了。

关于怎么创建阿里云短信应用这里就省略了,我只负责开发,下面的相关文档可以自己看一下。在做集成之前需要如下几个参数

accessKeyId   //阿里云生成的 accessKeyId

accessKeySecret  // 阿里云生成的 accessKeySecret

模版CODE //短信模板ID 例如SMS_12382XXXX

sign //审核通过的签名


1. 下载官方SDK

文档地址:短信发送API(SendSms)—PHP_PHP_API文档_开发指南_短信服务-阿里云

下载地址:SDK及DEMO下载_SDK及DEMO下载_开发指南_短信服务-阿里云

2.整合ThinkPHP框架

把下载好的SDK文件中的 api_sdk 文件,改名 aliyunsms (名字任意,无所谓),然后放入 ThinkPHP 框架的扩展目录下 ThinkPHP/Library/Vendor 即可

3.功能实现

这也是最主要的代码部分了,直接贴代码,说也没什么好说的,直接写入控制器里就可以,注意一下SDK文件的路径

/**
 * 发送短信接口
 * 文档地址 https://help.aliyun.com/document_detail/55491.html?spm=5176.doc55491.6.560.0KUKny
 * @param $mobile 手机号
 * @param $smscode 短信模板ID
 * @param $params 模板替换参数
 * @return mixed code = OK 表示完成
 */
public function sendSms($mobile,$smscode,$params)
{
    require_once VENDOR_PATH .'/aliyunsms/vendor/autoload.php';
    Config::load();
    $sms_config = C("SMS_CONFIG");
    $templateParam = $params;
    $signName = $sms_config['sign'];
    $templateCode = $smscode;
    $product = "Dysmsapi";
    $domain = "dysmsapi.aliyuncs.com";
    $region = "cn-hangzhou";

    $profile = DefaultProfile::getProfile($region, $sms_config['key'], $sms_config['secret']);
    DefaultProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", $product, $domain);
    $acsClient= new DefaultAcsClient($profile);
    $request = new SendSmsRequest();
    $request->setPhoneNumbers($mobile);
    $request->setSignName($signName);
    $request->setTemplateCode($templateCode);
    if($templateParam) {
        $request->setTemplateParam(json_encode($templateParam));
    }
    $acsResponse = $acsClient->getAcsResponse($request);
    $result = json_decode(json_encode($acsResponse),true);
    return $result;
}

里面的参数不用做任何修改 接着给下看 在头部 use 类库

	use Aliyun\Core\Config;
	use Aliyun\Core\Profile\DefaultProfile;
	use Aliyun\Core\DefaultAcsClient;
	use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;
	use Think\Controller; //如果你是继承公共控制器的话 就不用写这个去使用TP的类库

更改config.php文件

    //短信配置
    'SMS_CONFIG'    =>  array(
        "sign"              =>      'XX', //审核通过的签名
        "key"               =>      '', //阿里云生成的 accessKeyId
        "secret"            =>      '', // 阿里云生成的 accessKeySecret
    ),

在需要调用的时候直接使用 $this调用

$this->sendSms("手机号","短信模板ID","替换参数");

我写的调用方法如下:

	public function test(){
		$code = rand(1000,9999); //随机4位数的验证码
		$param = array('code'=>$code);
		$mobile = 15688888888; //手机号
		$smscode = 'SMS_1238XXXX'; //短信模板ID
		$res = $this->sendSms($mobile,$smscode,$param);
		dump($res); //打印出发送状态
	}

相关文档:

4 条评论

发表评论

*