在ThinkPHP6.0中对接阿里云发送短信验证码,你可以按照以下步骤进行配置和操作
1、首先,确保你已经在阿里云上注册并开通了短信服务,获取到AccessKeyId和AccessKeySecret。
2、在ThinkPHP6.0项目中使用Composer安装阿里云SDK,可以执行以下命令:
composer require alibabacloud/sdk
3、在config目录下创建一个新的文件,命名为aliyun.php,用于存放阿里云的配置信息。在该文件中添加以下内容:(这一步你也可以直接跳过 我直接放在env里面了 需要用引用就好)
<?php
// config/aliyun.php
return [
// 阿里云短信API配置信息
'access_key_id' => 'your_access_key_id',
'access_key_secret' => 'your_access_key_secret',
'sign_name' => 'your_sign_name',
'template_code' => 'your_template_code',
];
将’your_access_key_id’和’your_access_key_secret’替换为你在阿里云上获取到的AccessKeyId和AccessKeySecret。将’your_sign_name’替换为你在阿里云短信服务上申请的签名名称。将’your_template_code’替换为你在阿里云短信服务上创建的短信模板的Code。
4、创建一个新的控制器用于发送短信验证码,在该控制器中添加发送短信验证码的方法。示例如下:
<?php
namespace app\controller;
use think\facade\Config;
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
class SmsController
{
// 发送短信验证码
public function sendVerifyCode($phone)
{
// 生成随机验证码
$code = mt_rand(100000, 999999);
// 发送短信
try {
AlibabaCloud::accessKeyClient(Config::get('aliyun.access_key_id'), Config::get('aliyun.access_key_secret'))
->regionId('cn-hangzhou')
->asDefaultClient();
AlibabaCloud::rpc()
->product('Dysmsapi')
->scheme('https')
->version('2017-05-25')
->action('SendSms')
->method('POST')
->options([
'query' => [
'PhoneNumbers' => $phone,
'SignName' => Config::get('aliyun.sign_name'),
'TemplateCode' => Config::get('aliyun.template_code'),
'TemplateParam' => json_encode(['code' => $code]),
],
])
->request();
// 短信发送成功,将验证码保存到数据库等操作
// ...
return '短信验证码发送成功';
} catch (ClientException $e) {
return '短信验证码发送失败:' . $e->getErrorMessage();
} catch (ServerException $e) {
return '短信验证码发送失败:' . $e->getErrorMessage();
}
}
}
在该示例中,sendVerifyCode方法接受一个手机号作为参数。首先,生成一个随机的验证码。然后,使用阿里云SDK发送短信,调用了阿里云短信API的SendSms接口进行短信的发送。将短信模板中的参数code替换为随机生成的验证码。最后,根据发送结果进行处理,例如将验证码保存到数据库等操作。
5、在路由中注册该控制器的路由。在routes目录下的route.php文件中添加以下内容:
Route::post('send-verify-code', 'SmsController/sendVerifyCode');