tp5.1中使用阿里大于短信
阿里云PHP SDK地址
https://help.aliyun.com/document_detail/112186.html?spm=a2c4g.11174283.6.635.37eb2c42jFVxfS
项目根目录先安装 sdk
命令:composer require alibabacloud/client
安装完成后vendor目录下即会有 alibabacloud文件目录
使用OpenAPI Explorer来生成相关API的Demo
OpenAPI Explorer地址:
https://api.aliyun.com/?spm=a2c4g.11186623.2.13.6a294e6afatgeU#/?product=Dysmsapi&lang=PHP
一、config目录下建立api.php文件
返回一个数组如下:
return [
// token失效时间,0代表永不失效
'token_expire'=>0,
// 阿里大于
'aliSMS'=>[
'isopen'=> false,//开启阿里大于
'accessKeyId'=>'<accessKeyId>',
'accessSecret'=>'<accessSecret>',
'regionId'=>'cn-hangzhou',
'product'=>'Dysmsapi',
'version'=>'2017-05-25',
'SignName'=>'<YourSignName>',
'TemplateCode'=>'<YourTemplateCode>',
// 验证码发送时间间隔(60秒)
'expire'=>60
]
];
二、新建一个类
<?php
namespace '';//命名空间
// 引入阿里sdk
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
// 引入异常类
use app\lib\exception\BaseException;
class AlismsController
{
static public function SendSMS($phone,$code){
AlibabaCloud::accessKeyClient(config('api.aliSMS.accessKeyId'),config('api.aliSMS.accessSecret'))->regionId(config('api.aliSMS.regionId'))->asGlobalClient();
try {
$option=[
'query' => [
'RegionId' => config('api.aliSMS.regionId'),
'PhoneNumbers' => $phone,
'SignName' =>config('api.aliSMS.SignName'),
'TemplateCode' =>config('api.aliSMS.TemplateCode'),
'TemplateParam' =>'{"code":"'.$code.'"}',
],
];
$result = AlibabaCloud::rpcRequest()
->product(config('api.aliSMS.product'))
// ->scheme('https') // https | http
->version(config('api.aliSMS.version'))
->action('SendSms')
->method('GET')
->options($option)->request();
return $result->toArray();
} catch (ClientException $e) {
// 逻辑处理
} catch (ServerException $e) {
// 逻辑处理
}
}
}
三、使用该方法
use app\common\controller\AliSMSController;
...
// 获取用户提交手机号码
// 生成验证码
$code = random_int(1000,9999);
// 发送短信
AliSMSController::SendSMS($phone,$code);