一、开发环境准备
在开始集成前,需要确保已完成以下准备工作:
- 注册阿里云账号并开通短信服务(SMS)
- 创建短信签名和模板并通过审核
- 获取有效的AccessKey ID和AccessKey Secret
- 安装Composer包管理工具并初始化ThinkPHP6项目
二、安装阿里云SDK
在项目根目录执行以下命令安装官方SDK:
composer require alibabacloud/dysmsapi-20170525
建议安装2.0.24及以上版本以保证兼容性
三、配置短信参数
推荐在.env文件中配置敏感信息:
[ALIYUN_SMS]
ACCESS_KEY_ID = "your_access_key
ACCESS_KEY_SECRET = "your_secret
SIGN_NAME = "签名名称
TEMPLATE_CODE = "SMS_123456"
通过config/aliyun.php
文件进行参数映射
四、封装短信服务类
在app/service
目录创建SmsService类:
env('ALIYUN_SMS.ACCESS_KEY_ID'),
'accessKeySecret' => env('ALIYUN_SMS.ACCESS_KEY_SECRET')
]);
return new Dysmsapi($config);
}
该实现参考新版SDK的初始化方式
五、发送短信验证码
在控制器中调用短信服务:
public function sendSms {
$client = SmsService::createClient;
$request = new SendSmsRequest([
'phoneNumbers' => '13800138000',
'signName' => env('ALIYUN_SMS.SIGN_NAME'),
'templateCode' => env('ALIYUN_SMS.TEMPLATE_CODE')
]);
try {
$response = $client->sendSms($request);
return json($response->body->toMap);
} catch (TeaError $e) {
Log::error($e->getMessage);
}
建议添加异常捕获和日志记录机制
通过以上步骤可实现标准化的短信发送功能。对于需要快速集成的场景,可考虑使用death_satan/thinkphp-sms
等第三方扩展包,但需注意版本兼容性。建议生产环境添加短信频率限制和验证码校验机制。