阿里大鱼之后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 条评论

发表评论

*